Last active
December 25, 2020 22:14
-
-
Save pecha7x/a8a0a09e983ffc1c8a1a9ea3cecbf664 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@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