def call(vaccination_record_id:, **)
MavisCLI.load_rails
unless Flipper.enabled?(:imms_api_integration)
puts "Cannot sync vaccination record: the `imms_api_integration` feature flag is disabled"
return
end
vaccination_record =
::VaccinationRecord.find_by(id: vaccination_record_id)
if vaccination_record.nil?
puts "Vaccination record with ID #{vaccination_record_id} not found"
return
end
if vaccination_record.nhs_immunisations_api_synced_at.present?
puts "Vaccination record #{vaccination_record_id} has already been" \
" synced at #{vaccination_record.nhs_immunisations_api_synced_at}"
return
end
vaccination_record.update_columns(
nhs_immunisations_api_sync_pending_at: Time.current,
touch: true
)
NHS::ImmunisationsAPI.sync_immunisation(vaccination_record)
puts "Successfully synced vaccination record #{vaccination_record_id}"
end