Skip to content

Instantly share code, notes, and snippets.

@pecha7x
Last active December 25, 2020 22:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pecha7x/a8a0a09e983ffc1c8a1a9ea3cecbf664 to your computer and use it in GitHub Desktop.
Save pecha7x/a8a0a09e983ffc1c8a1a9ea3cecbf664 to your computer and use it in GitHub Desktop.
@affected_companies_ids = [4123,288,4120,4082,238,4129,4109,4084,4094,4110,281,4124,230,4111,4081,2460,2485,277,191,229,4115,300,293,2406,4092,4102,4107,4136,284,4106,4132,276,4079,242,4086,273,279,2474,4118,221,455,316,4105,2439,2455,269,2464,2475,2394,2495,4127,3562,2451,306,2461,2501,2466,2452,4121,4078,227,2481,3329,3621,233,2496,2493,2457,2473,2443,2488,4087,2492,234,298,4083,2467,2328,2441,2445,2400,2477,2491,283,4080,4130,2498,4113,4098,307,4096,2482,2801,4103,4099,2456,2472,308,4085,2463,4097,2440,292,237,4088,282,145,2998,4090,4122,2459,4091,4108,4116,2147,4100,4104,2480,2453,3330,286,2483,4119,4089,4117,4077,280,4128,271,4093,274,232,4131,228,2444,4101,2484,272,4114,296,287,2490,4063,235,224,3686,2476,4095,2442,2465,4126,297,226,275,299,2487,2486,289,278,295,2470,239,2479,291,2494,236,2500,222,223,268,4505,305,2489,270,2839,196,231,4248,2471,290,294,379,285,301,318,2497]
overloaded_numbers = [
'+61488844544',
'+61480027122',
'+61480027088',
'+61480027022',
'+61488852555',
'+61480027033',
'+61488857488',
'+61488855456',
'+61480026988',
'+61488857422',
'+61488854111',
'+61488851999',
'+61480027233',
'+61488844111',
'+61488857622',
]
new_free_numbers = [
{ number: '+61439466365', full: false, remain: 0 },
{ number: '+61447510653', full: false, remain: 0 },
{ number: '+61439831286', full: false, remain: 0 },
{ number: '+61447490205', full: false, remain: 0 },
{ number: '+61438107249', full: false, remain: 0 },
{ number: '+61439455412', full: false, remain: 0 },
{ number: '+61427801604', full: false, remain: 0 },
{ number: '+61439631042', full: false, remain: 0 },
{ number: '+61476856399', full: false, remain: 0 },
{ number: '+61436411427', full: false, remain: 0 },
{ number: '+61436413520', full: false, remain: 0 },
{ number: '+61488846082', full: false, remain: 0 },
{ number: '+61451562421', full: false, remain: 0 },
{ number: '+61448025693', full: false, remain: 0 },
{ number: '+61428435492', full: false, remain: 0 },
{ number: '+61436413231', full: false, remain: 0 },
{ number: '+61448024178', full: false, remain: 0 },
{ number: '+61447041068', full: false, remain: 0 },
{ number: '+61429918275', full: false, remain: 0 },
{ number: '+61448022527', full: false, remain: 0 },
{ number: '+61437540794', full: false, remain: 0 },
{ number: '+61476856786', full: false, remain: 0 },
{ number: '+61447177649', full: false, remain: 0 },
{ number: '+61451266510', full: false, remain: 0 },
{ number: '+61447989724', full: false, remain: 0 },
{ number: '+61439698419', full: false, remain: 0 },
{ number: '+61428767383', full: false, remain: 0 },
{ number: '+61408964362', full: false, remain: 0 },
{ number: '+61438993728', full: false, remain: 0 },
{ number: '+61428991936', full: false, remain: 0 },
{ number: '+61451562423', full: false, remain: 0 },
{ number: '+61428099138', full: false, remain: 0 },
{ number: '+61429319406', full: false, remain: 0 },
{ number: '+61409655994', full: false, remain: 0 },
{ number: '+61447138528', full: false, remain: 0 },
{ number: '+61451266307', full: false, remain: 0 },
{ number: '+61437056959', full: false, remain: 0 },
{ number: '+61447523398', full: false, remain: 0 },
{ number: '+61439650367', full: false, remain: 0 },
{ number: '+61427804076', full: false, remain: 0 },
{ number: '+61447986474', full: false, remain: 0 },
{ number: '+61437648473', full: false, remain: 0 }
]
def sms_by_number(number)
Sms.where("scheduled_at >= '2020-12-25 19:18:02' and scheduled_at < '2020-12-26 03:59:59'")
.outbound
.where(status: nil, company_id: @affected_companies_ids, from: number)
end
@remainder = 0
overloaded_numbers.each do |overloaded_number|
p overloaded_number
unless @remainder.zero?
free_number_by_remainder = new_free_numbers.find { |h| h[:remain] == @remainder }
sms_by_number(overloaded_number).limit(@remainder).update_all(from: free_number_by_remainder[:number])
@remainder = 0
free_number_by_remainder[:remain] = 0
free_number_by_remainder[:full] = true
end
sms_count_by_number = sms_by_number(overloaded_number).size
count_of_iterations = sms_count_by_number / 7200
count_of_iterations.times do |i|
free_number = new_free_numbers.find { |h| !h[:full] }
sms_by_number(overloaded_number).limit(7200).update_all(from: free_number[:number])
free_number[:full] = true
end
@remainder = 7200 - (sms_count_by_number % 7200)
free_number = new_free_numbers.find { |h| !h[:full] }
sms_by_number(overloaded_number).limit((sms_count_by_number % 7200)).update_all(from: free_number[:number])
free_number[:remain] = @remainder
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment