Class: Spree::Api::Chatrace::GuestsController

Inherits:
BaseController
  • Object
show all
Defined in:
app/controllers/spree/api/chatrace/guests_controller.rb

Instance Method Summary collapse

Methods inherited from BaseController

#validate_token_client

Instance Method Details

#scopeObject



5
6
7
# File 'app/controllers/spree/api/chatrace/guests_controller.rb', line 5

def scope
  SpreeCmCommissioner::Guest.complete
end

#serialize_resource(guest) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'app/controllers/spree/api/chatrace/guests_controller.rb', line 28

def serialize_resource(guest)
  order = guest.line_item.order

  {
    token: guest.token,
    first_name: guest.first_name,
    last_name: guest.last_name,
    dob: guest.dob,
    gender: guest.gender,
    age: guest.age,
    occupation: guest.occupation&.name || guest.other_occupation,
    entry_type: guest.entry_type,
    organization: guest.other_organization,
    expectation: guest.expectation,
    telegram_user_id: guest.preferred_telegram_user_id,
    telegram_user_verified_at: guest.preferred_telegram_user_verified_at,
    order_number: order.number,
    order_email: order.email,
    order_first_name: order.customer_address&.firstname,
    order_last_name: order.customer_address&.lastname,
    order_phone_number: order.intel_phone_number || order.customer_address&.phone,
    checked_in_at: guest.check_in&.confirmed_at,
    qr_data: guest.qr_data,
    order_qr_data: order.qr_data
  }
end

#showObject



9
10
11
12
13
# File 'app/controllers/spree/api/chatrace/guests_controller.rb', line 9

def show
  guest = scope.find_by!(token: params[:id])

  render_serialized_payload { serialize_resource(guest) }
end

#updateObject



15
16
17
18
19
20
21
22
23
24
25
26
# File 'app/controllers/spree/api/chatrace/guests_controller.rb', line 15

def update
  guest = scope.find_by!(token: params[:id])

  guest.preferred_telegram_user_id = params[:telegram_user_id]
  guest.preferred_telegram_user_verified_at = DateTime.current

  if guest.save
    render_serialized_payload { serialize_resource(guest) }
  else
    render_error_payload(guest.errors)
  end
end