dawarich/app/services/visits/bulk_update_service.rb
2025-03-05 20:04:26 +01:00

47 lines
872 B
Ruby

# frozen_string_literal: true
module Visits
class BulkUpdateService
attr_reader :user, :visit_ids, :status, :errors
def initialize(user, visit_ids, status)
@user = user
@visit_ids = visit_ids
@status = status
@errors = []
end
def call
validate
return false if errors.any?
update_visits
end
private
def validate
if visit_ids.blank?
errors << 'No visits selected'
return
end
return if %w[confirmed declined].include?(status)
errors << 'Invalid status'
end
def update_visits
visits = user.visits.where(id: visit_ids)
if visits.empty?
errors << 'No matching visits found'
return false
end
updated_count = visits.update_all(status: status)
{ count: updated_count, visits: visits }
end
end
end