Guest User

Untitled

a guest
Apr 8th, 2018
436
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.71 KB | None | 0 0
  1. # TODO scope to company
  2. def remove_duplicate_outcomes(outcome_name)
  3. outcomes = Outcome.where(name: outcome_name)
  4. if outcomes.length > 1
  5. puts outcome_name
  6.  
  7. true_t = outcomes[0]
  8. false_ts = outcomes[1..outcomes.length]
  9.  
  10. false_ts.each do |false_t|
  11. qry = "outcome_ids @> ARRAY[#{false_t.id}]"
  12. calls = Call.where(qry)
  13. calls.each do |call|
  14. o_ids = call.outcome_ids.map { |x| x == false_t.id ? true_t.id : x }
  15. call.outcome_ids = o_ids
  16. call.save
  17. end
  18. puts Call.where(qry).count
  19. false_t.delete
  20. end
  21. end
  22. end
  23.  
  24. def remove_duplicate_tags(tag_name)
  25. tags = Tag.where(name: tag_name)
  26. if tags.length > 1
  27. puts tag_name
  28.  
  29. true_t = tags[0]
  30. false_ts = tags[1..tags.length]
  31.  
  32. false_ts.each do |false_t|
  33. Call.where(tag_id: false_t.id).update_all(tag_id: true_t.id)
  34. puts Call.where(tag_id: false_t.id).count
  35. false_t.delete
  36. end
  37. end
  38. end
  39.  
  40. def migrate_ct(ct, new_ct)
  41. puts "#{ct.name} --> #{new_ct.name}"
  42. # calls
  43. calls = Call.where(call_type_id: ct.id)
  44. calls.update_all(call_type_id: new_ct.id)
  45.  
  46. # outcomes
  47. outcomes = Outcome.where(call_type_id: ct.id)
  48. outcomes.update_all(call_type_id: new_ct.id)
  49.  
  50. # tags
  51. tags = Tag.where(call_type_id: ct.id)
  52. tags.update_all(call_type_id: new_ct.id)
  53.  
  54. # qar
  55. qars = QaRecord.where(call_type_id: ct.id)
  56. qars.update_all(call_type_id: new_ct.id)
  57.  
  58. # ct skills
  59. ct_skills = PermittedCallTypeSkill.where(call_type_id: ct.id)
  60. ct_skills.each do |ct_skill|
  61. begin
  62. PermittedCallTypeSkill.create(call_type_id: new_ct.id,
  63. skill_id: ct_skill.skill_id)
  64. rescue
  65. end
  66. end
  67. # ct_skills.destroy_all
  68.  
  69. # ct user
  70. ct_users = CallTypeUserMembership.where(call_type_id: ct.id)
  71. ct_users.each do |ct_user|
  72. CallTypeUserMembership.create(call_type_id: new_ct.id,
  73. user_id: ct_user.user_id)
  74. end
  75. # ct_users.destroy_all
  76.  
  77. # ct.delete
  78. end
  79.  
  80. # WEEBLY ================================================
  81. weebly = Company.find_by(name: "weebly")
  82. puts weebly.name
  83.  
  84. # inbound ==========================================
  85. dark_side = Team.find_by(name: "Dark Side") || Team.create(name: "Dark Side",
  86. company_id: weebly.id)
  87. jedi_knights = Team.find_by(name: "Jedi Knights") || Team.create(name: "Jedi Knights",
  88. company_id: weebly.id)
  89. rogue = Team.find_by(name: "Rogue") || Team.create(name: "Rogue",
  90. company_id: weebly.id)
  91.  
  92. inbound_reps = [
  93. ["Alex", "Neuendorf", jedi_knights.id],
  94. ["Ari", "Lamos", dark_side.id],
  95. ["Bri", "Hendrickson", dark_side.id],
  96. ["Charles", "Robinson", jedi_knights.id],
  97. ["Chris", "Cottle", dark_side.id],
  98. ["Christopher", "Warmuth", dark_side.id],
  99. ["Colin", "Jacobs", dark_side.id],
  100. ["Dory", "Edwards", dark_side.id],
  101. ["Emmanuel", "Tunrarebi", dark_side.id],
  102. ["Erika", "Keller", jedi_knights.id],
  103. ["Gen", "Burgos", jedi_knights.id],
  104. ["Herlinda", "Ayala", jedi_knights.id],
  105. ["Jacob", "Cory", jedi_knights.id],
  106. ["Janelle", "Jackson", jedi_knights.id],
  107. ["Jasen", "Tittes", dark_side.id],
  108. ["Jason", "Pyle", dark_side.id],
  109. ["Jenn", "Simmons", jedi_knights.id],
  110. ["Jessie", "Marquez", jedi_knights.id],
  111. ["Jessie", "Zuppello", jedi_knights.id],
  112. ["Josh", "Finger", jedi_knights.id],
  113. ["Mary", "Harrison", dark_side.id],
  114. ["Michael", "Corrigan", dark_side.id],
  115. ["Nathan", "Milas", dark_side.id],
  116. ["Nicole", "Johnson", jedi_knights.id],
  117. ["Nina", "Sadek", jedi_knights.id],
  118. ["Paul", "Fairbrother", dark_side.id],
  119. ["Rachel", "Green", dark_side.id],
  120. ["Reed", "Daniel", jedi_knights.id],
  121. ["Ryan", "Avery", dark_side.id],
  122. ["Samuel", "Spencer", jedi_knights.id],
  123. ["Selma", "Nguyen", jedi_knights.id],
  124. ["Spencer", "Morrell", jedi_knights.id],
  125. ["Steve", "Sparks", dark_side.id],
  126. ["Taylor", "Smetska", dark_side.id],
  127. ["Tiffany", "Smith", dark_side.id],
  128. ["Vas", "Annos", dark_side.id],
  129. ["Waylon", "Wood", jedi_knights.id],
  130. ["William", "Sams III", dark_side.id],
  131. ["Zachary", "Gemmill", jedi_knights.id]
  132. ]
  133.  
  134. inbound_reps.each do |first, last, team_id|
  135. u = User.find_by(first_name: first, last_name: last)
  136. u.team_id = team_id
  137. u.save
  138. end
  139.  
  140. derek = User.find_by(first_name: "Derek", last_name: "Mulch")
  141. derek.team_id = rogue.id
  142. derek.save
  143. chris = User.find_by(first_name: "Christopher", last_name: "Krivosik")
  144. chris.team_id = rogue.id
  145. chris.save
  146. martin = User.find_by(first_name: "Martin", last_name: "Guerrero")
  147. martin.team_id = rogue.id
  148. martin.save
  149. bernie = User.find_by(first_name: "Bernadette", last_name: "Zavala")
  150. bernie.team_id = rogue.id
  151. bernie.save
  152. # inbound ==========================================
  153.  
  154. # outbound ==========================================
  155. boba_fett = Team.find_by(name: "Boba Fett") || Team.create(name: "Boba Fett",
  156. company_id: weebly.id)
  157.  
  158. outbound_reps = [
  159. ["Nicholas", "Perry"],
  160. ["Ashley", "Klein"],
  161. ["Brodie", "Hubbard"],
  162. ["Nicholas", "Perry"],
  163. ["Andrew", "Daniele"],
  164. ["Adam", "Nieland"],
  165. ["Corey", "Noll"],
  166. ["Rick", "Morse"],
  167. ["Matt", "Macaluso"],
  168. ["Kameron", "Toll"],
  169. ["Dan", "Rivkin"],
  170. ["Tim", "Thompson"]
  171. ]
  172.  
  173. outbound_reps.each do |first, last|
  174. u = User.find_by(first_name: first, last_name: last)
  175. u.team_id = boba_fett.id
  176. u.save
  177. end
  178.  
  179. nick_p = User.find_by(email: "nick.p@weebly.com")
  180. nick_p.team_id = boba_fett.id
  181. nick_p.save
  182.  
  183. # outbound ==========================================
  184.  
  185. # chat ==========================================
  186. # chat ==========================================
  187.  
  188. # team-ct ==========================================
  189. teams = [rogue, dark_side, jedi_knights, boba_fett]
  190. teams.each do |team|
  191. user_ids = User.where(team_id: team.id).pluck(:id)
  192. ctids = Call.where(user_id: user_ids).pluck(:call_type_id).uniq
  193.  
  194. ctids.each do |ctid|
  195. TeamCallType.create(call_type_id: ctid, team_id: team.id)
  196. end
  197. end
  198. # team-ct ==========================================
  199.  
  200. weebly.call_types.reverse.each do |ct|
  201. team = Team.find_by(name: ct.name, company_id: ct.company_id)
  202. next if !team
  203. ct_users = User.where(team_id: team.id).pluck(:first_name, :last_name, :email, :id)
  204. next if ct_users.count == 0
  205. puts "#{ct.id} #{ct.name} -- #{ct_users.count}"
  206. # ct_users.each do |f, l, e, id|
  207. # puts "#{f} #{l}: #{e}"
  208. # end
  209. end
  210.  
  211. # managers ==========================================
  212. # JEDI
  213. keri = User.find_by(first_name: "Keri", last_name: "Young-Koppendrayer")
  214. keri.team_id = jedi_knights.id
  215. keri.save
  216.  
  217. # BOBA FETT
  218. julian = User.find_by(email: "julian.a@weebly.com")
  219. julian.team_id = boba_fett.id
  220. julian.save
  221.  
  222. # CHAT TODO
  223. chat = Team.find_by(name: "chat")
  224.  
  225. william = User.find_by(email: "william.b@weebly.com")
  226. william.team_id = chat.id
  227. william.save
  228.  
  229. david = User.find_by(first_name: "David", last_name: "Medansky")
  230. david.team_id = rogue.id
  231. david.save
  232.  
  233.  
  234. # Inbound/Outbound Manager Matthew Jenks matthew.j@weebly.com
  235. # TODO
  236. # Director Aaron McElroy aaronm@weebly.com
  237. # Director Adam Lovill adam.l@weebly.com
  238. # Director Alan Chambless alan@weebly.com
  239. # managers ==========================================
  240. # WEEBLY ================================================
  241.  
  242. # ICE ================================================
  243. ice = Company.find_by(id: 49)
  244. puts ice.name
  245. subscription = CallType.find_by(name: "subscription", company_id: ice.id) ||
  246. CallType.create(name: "subscription", company_id: ice.id, daily_alert_threshold: 12)
  247.  
  248. heavy_hitters = Team.find_by(name: "The Heavy Hitters", company_id: ice.id)
  249. money_makers = Team.find_by(name: "Mad Money Makers", company_id: ice.id)
  250.  
  251. cts = CallType.where(company_id: ice.id).where.not(id: subscription.id)
  252. cts.each do |ct|
  253. migrate_ct(ct, subscription)
  254. end
  255.  
  256. # team ct
  257. teams = [heavy_hitters, money_makers]
  258. teams.each do |team|
  259. users = User.where(team_id: team.id).pluck(:id)
  260. ctids = Call.where(user_id: users).pluck(:call_type_id).uniq
  261.  
  262. ctids.each do |ctid|
  263. TeamCallType.create(call_type_id: ctid, team_id: team.id)
  264. end
  265. end
  266.  
  267. # remove duplicate outcomes and tags
  268. tag_names = Tag.where(call_type_id: subscription).pluck(:name).uniq
  269. outcome_names = Outcome.where(call_type_id: subscription).pluck(:name).uniq
  270.  
  271. tag_names.each do |tag_name|
  272. remove_duplicate_tags(tag_name)
  273. end
  274.  
  275. outcome_names.each do |outcome_name|
  276. remove_duplicate_outcomes(outcome_name)
  277. end
  278. # ICE ================================================
  279.  
  280. # SITELOCK ================================================
  281. sitelock = Company.find(47)
  282. puts sitelock.name
  283.  
  284. cts = CallType.where(company_id: sitelock.id)
  285.  
  286. inbound = CallType.find_by(company_id: sitelock.id, name: "Inbound")
  287. outbound = CallType.find_by(company_id: sitelock.id, name: "Outbound")
  288. retention = CallType.find_by(company_id: sitelock.id, name: "Retention")
  289. begin
  290. PermittedCallTypeSkill.create(call_type_id: outbound.id, skill_id: 45)
  291. PermittedCallTypeSkill.create(call_type_id: outbound.id, skill_id: 53)
  292. PermittedCallTypeSkill.create(call_type_id: inbound.id, skill_id: 45)
  293. rescue
  294. end
  295.  
  296. cts = [
  297. ["LXG", outbound.id],
  298. ["CAPTCHA Amerika", outbound.id],
  299. ["Commission Possible", outbound.id],
  300. ["Big Bots", outbound.id],
  301. ["Retention", retention.id],
  302. ["Brute Force", inbound.id],
  303. ["High Rollers", inbound.id],
  304. ["Nights", inbound.id]
  305. ]
  306.  
  307. cts.each do |ct_name, new_ct_id|
  308. ct = CallType.find_by(name: ct_name, company_id: sitelock.id)
  309. new_ct = CallType.find(new_ct_id)
  310. migrate_ct(ct, new_ct)
  311. end
  312.  
  313. # managers
  314. man_emails = [
  315. ["einfante@sitelock.com", "LXG"],
  316. ["isaac.doss@sitelock.com", "LXG"],
  317. ["erichardson@sitelock.com", "Brute Force"],
  318. ["tracee.patterson@sitelock.com", "Brute Force"],
  319. ["daniel.jones@sitelock.com", "High Rollers"],
  320. ["jeremy.hibler@sitelock.com", "Nights"],
  321. ["nfraccola@sitelock.com", "Big Bots"],
  322. ["jzuppello@sitelock.com", "Big Bots"],
  323. ["erik.reed@sitelock.com", "CAPTCHA Amerika"],
  324. ["rstone@sitelock.com", "CAPTCHA Amerika"],
  325. ["duncan.macdonald@sitelock.com", "Commission Possible"],
  326. ["colleen.wagner@sitelock.com", "Commission Possible"],
  327. ["bmartin@sitelock.com", "Retention"]
  328. ]
  329.  
  330. dir_emails = [
  331. ["ahale@sitelock.com", ["Big Bots",
  332. "CAPTCHA Amerika",
  333. "LXG",
  334. "Commission Possible",
  335. "Retention"]],
  336. ["dcoons@sitelock.com", ["Brute Force",
  337. "High Rollers",
  338. "Nights"]]
  339. ]
  340.  
  341. man_emails.each do |email, team_name|
  342. u = User.find_by(email: email)
  343. team = Team.find_by(name: team_name, company_id: sitelock.id)
  344. u.team_id = team.id
  345. u.save
  346. end
  347.  
  348. dir_emails.each do |email, t_names|
  349. puts email
  350. u = User.find_by(email: email)
  351. teams = Team.where(name: t_names, company_id: sitelock.id).pluck(:id)
  352. u.directed_team_ids = teams
  353. u.save
  354. end
  355.  
  356.  
  357. # SITELOCK ================================================
Add Comment
Please, Sign In to add comment