4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# File 'app/services/ecom/core/site_crew_service.rb', line 4
def update(params)
id = params[:site_id]
crew = params[:crew]
new_crew = crew.select { |c| c[:status] == 'checked' }
removed = crew.select { |c| c[:status] == 'unchecked' }
crew_ids = new_crew.map { |c| c[:crew_id] }
site_crew = Ecom::Core::Crew.where(id: crew_ids)
new_entries = []
new_crew.each do |nc|
new_entries << Ecom::Core::SiteCrew.new(
site_id: id, crew_id: nc[:crew_id], start_date: Date.today,
site_crew_type: 'Temporary site crew',
status: 'Active'
)
end
Ecom::Core::SiteCrew.transaction do
new_entries.each(&:save)
end
removed_ids = removed.map { |r| r[:crew_id] }
if removed_ids.count.positive?
removed_crews = Ecom::Core::SiteCrew.where(site_id: id, crew_id: removed_ids, status: 'Active')
Ecom::Core::SiteCrew.transaction do
removed_crews.each do |removed_crew|
removed_crew.update(status: 'Inactive')
end
end
end
{ success: true, data: site_crew }
end
|