Merge remote-tracking branch 'origin/simulations-lifecycle' into compose-development

This commit is contained in:
Manuel Bustillo 2024-11-03 13:50:19 +01:00
commit 95651ee942
4 changed files with 19 additions and 3 deletions

View File

@ -26,7 +26,7 @@ class GuestsController < ApplicationController
end
def bulk_update
Guest.where(id: params[:guest_ids]).update!(params.require(:properties).permit(:status))
Guests::UpdateUseCase.new(guest_ids: params[:guest_ids], params: params.require(:properties).permit(:status)).call
render json: {}, status: :ok
end
end

View File

@ -9,7 +9,7 @@ class TableSimulatorJob < ApplicationJob
engine.add_perturbation(Tables::Swap)
initial_solution = Tables::Distribution.new(min_per_table: 8, max_per_table: 10)
initial_solution.random_distribution(Guest.all.shuffle)
initial_solution.random_distribution(Guest.potential.shuffle)
engine.initial_solution = initial_solution

View File

@ -8,9 +8,11 @@ class Guest < ApplicationRecord
invited: 10,
confirmed: 20,
declined: 30,
tentative: 40,
tentative: 40
}
scope :potential, -> { where.not(status: %i[declined considered]) }
def full_name
"#{first_name} #{last_name}"
end

View File

@ -0,0 +1,14 @@
# Copyright (C) 2024 Manuel Bustillo
module Guests
class UpdateUseCase
def initialize(guest_ids:, params:)
Guest.where(id: guest_ids).update!(params)
# TODO: Not all status transitions may require a table re-arrangement
TablesArrangement.delete_all
ActiveJob.perform_all_later(50.times.map { TableSimulatorJob.new })
end
end
end