Class: Api::Kiosque::V1::ReservationsController

Inherits:
BaseController
  • Object
show all
Defined in:
app/controllers/api/kiosque/v1/reservations_controller.rb

Instance Method Summary collapse

Methods inherited from BaseController

#current_user, #identity_cache_memoization, #set_app_language

Methods included from LogrageCustomLogger

#append_info_to_payload

Instance Method Details

#showObject

Raises:

  • (ActiveRecord::RecordNotFound)


7
8
9
10
11
# File 'app/controllers/api/kiosque/v1/reservations_controller.rb', line 7

def show
  raise ActiveRecord::RecordNotFound unless authorized?(current_user, @reservation)

  render json: Api::Kiosque::V1::ReservationSerializer.new(@reservation).as_json
end

#update_statusObject

we allow 'arrived' status only for now

Raises:

  • (ActiveRecord::RecordNotFound)


14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'app/controllers/api/kiosque/v1/reservations_controller.rb', line 14

def update_status
  raise ActiveRecord::RecordNotFound unless authorized?(current_user, @reservation)

  reservation_status = params.require(:status)

  # if %w[pending arrived canceled no_show].include?(reservation_status)
  if %w[arrived].include?(reservation_status)
    @reservation.send("mark_as_#{reservation_status}!".to_sym)
    if @reservation.save
      # Use priority sync for kiosk operations - fast but non-blocking
      @reservation.trigger_priority_sync

      render json: { success: true, message: 'Reservation status updated successfully' }
    else
      render json: { success: false,
                     message: reservation.errors.full_messages.to_sentence },
             status: :unprocessable_entity
    end
  else
    render json: { success: false, message: 'Invalid reservation status' }, status: :unprocessable_entity
  end
end