Skip to content

Instantly share code, notes, and snippets.

@devifr
Last active November 14, 2019 10:03
Show Gist options
  • Save devifr/44001f905247c8d73956db185fc887a1 to your computer and use it in GitHub Desktop.
Save devifr/44001f905247c8d73956db185fc887a1 to your computer and use it in GitHub Desktop.
ticket_numbers = []
sas = Schedule.where("DATE(work_date) >= DATE(?)", '2019-04-01').pluck(:id)
sas.each do |id|
sa_op = ScheduleOperator.where(schedule_id: id, status: 'Created').pluck(:operator_id)
duplicate = sa_op.select{ |e| sa_op.count(e) > 1 }.uniq
duplicate.each do |op_id|
so = ScheduleOperator.where(schedule_id: id, operator_id: op_id).first
ticket_numbers << so.ticket_number
so.delete
end
end
========================================================Remove Tenant Double By Site Id =============================
site_ids = ['KITR0002','ACLW0009','MAAB0004','MAAB0005','MAAB0009','MAAB0010','PAJY0005','PATM0001','PATM0005','PBSR0008','PBSR0009','PBSR0010','PBSR0012','PBSR0017','PBSR0020','PBSR0022','SAKO0001','SAMH0002','SAMH0003','SAMH0004','SAMN0003']
site_ids.each do |id|
site = Site.where(site_id_customer: id).first
sc = Schedule.where(site_id: site.id).where("DATE(work_date) >= DATE(?)", '2019-11-01').first
sa_op = ScheduleOperator.where(schedule_id: sc.id, status: 'Created').pluck(:operator_id)
duplicate = sa_op.select{ |e| sa_op.count(e) > 1 }.uniq
duplicate.each do |op_id|
so = ScheduleOperator.where(schedule_id: sc.id, operator_id: op_id).first
so.delete
end
end
======================================== Remove Schedule Double different tenant ===============
schedules = Schedule.where("DATE(work_date) >= DATE(?)", '2019-11-01')
site_ids = schedules.pluck(:site_id)
site_ids.each do |site_id|
schedules_site = schedules.where(site_id: site_id)
if schedules_site.count > 1
first_schedule_id = schedules_site.last.id
schedule_ids = schedules_site.pluck(:id)
ScheduleOperator.where(schedule_id: schedule_ids).update_all(schedule_id: first_schedule_id)
schedules_site.where("id != ?",first_schedule_id).delete_all!
end
end
============================================= ADD Schedule Or missing Tenant on Schedule By Site Id =================
## SMART XL dan Isat
site_ids = [{site_id: 'BBBA0004',work_date: '2019-11-23',username: 'STP_HUP_SUMSEL01'}]
gagal = []
present = []
site_blank = []
tenant = Operator.where(code: 'CSMA003').first
tenant2 = Operator.where(code: 'CXLA001').first
tenant3 = Operator.where(code: 'CIND002').first
site_ids.each do |data|
site = Site.where("code = ? OR site_id_customer = ? OR site_id_sap = ?",data[:site_id],data[:site_id],data[:site_id]).first
if site.blank?
site_blank << data[:site_id]
next
end
user = User.where(username: data[:username].downcase).first
check = Schedule.where(form_id: 1, work_type_id: 1,site_id: site.id).where("DATE(work_date) >= DATE(?)",'2019-11-01')
if check.blank?
sch = Schedule.new(work_date: data[:work_date],user_id: user.id,form_id: 1, work_type_id: 1,site_id: site.id, status: 'New',periode: 'Nov-2019')
sch.client_id = 1
if sch.save
sch.schedule_operators.create(operator_id: tenant.id, status: 'Created')
else
gagal << [data[:site_id],sch.errors.full_messages]
end
else
sch = check.first
check_op = sch.schedule_operators.where(operator_id: tenant.id)
if check_op.blank?
sch.schedule_operators.create(operator_id: tenant.id, status: 'Created')
end
check_op2 = sch.schedule_operators.where(operator_id: tenant2.id)
if check_op2.blank?
sch.schedule_operators.create(operator_id: tenant2.id, status: 'Created')
end
check_op3 = sch.schedule_operators.where(operator_id: tenant3.id)
if check_op3.blank?
sch.schedule_operators.create(operator_id: tenant3.id, status: 'Created')
end
present << [data[:site_id], check.first.id]
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment