dawarich/app/services/visits/bulk_update.rb

50 lines
965 B
Ruby
Raw Permalink Normal View History

2025-03-05 14:04:26 -05:00
# frozen_string_literal: true
module Visits
class BulkUpdate
2025-03-05 14:04:26 -05:00
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 Visit.statuses.keys.include?(status)
2025-03-05 14:04:26 -05:00
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
# rubocop:disable Rails/SkipsModelValidations
2025-03-05 14:04:26 -05:00
updated_count = visits.update_all(status: status)
# rubocop:enable Rails/SkipsModelValidations
2025-03-05 14:04:26 -05:00
{ count: updated_count, visits: visits }
end
end
end