Class: Dashboard::V2::VoucherMarketplacesController

Inherits:
MainController show all
Defined in:
app/controllers/dashboard/v2/voucher_marketplaces_controller.rb

Direct Known Subclasses

Group::VoucherMarketplacesController

Instance Method Summary collapse

Methods inherited from MainController

#default_fallback_location, #default_url_options, #kiosque_callback

Methods included from LogrageCustomLogger

#append_info_to_payload

Methods included from Stimulus::TagController

#stimulus

Methods included from OwnerLoginMode

#current_owner, #group_owner_type?, #request_path_contain_group?, #single_owner_type?

Methods included from OwnerDashboardsHelper

#events_ajax_previous_link, #show_source

Methods inherited from ApplicationController

#after_sign_in_path_for, #after_sign_out_path_for, #default_url_options, #identity_cache_memoization, #render_not_found, #routing_error, search_params_key=

Methods included from ControllerHelpers

#check_boolean_param, #get_banners, #inventory_params, #reservation_params

Instance Method Details

#check_owner_ticket(ticket, current_owner) ⇒ Object



141
142
143
144
145
146
147
148
149
150
# File 'app/controllers/dashboard/v2/voucher_marketplaces_controller.rb', line 141

def check_owner_ticket(ticket, current_owner)
  return false if ticket.blank?
  return false unless ticket.ticket_transaction

  if current_owner.is_a?(Owner)
    ticket.present? && ticket.ticket_transaction.restaurant_id == current_owner.restaurant.id
  else
    (current_owner.restaurant_ids.include? ticket.ticket_transaction.restaurant_id) && ticket.present?
  end
end

#check_voucherObject



67
68
69
70
71
72
73
74
75
76
# File 'app/controllers/dashboard/v2/voucher_marketplaces_controller.rb', line 67

def check_voucher
  current_owner
  voucher = Ticket.find_by(ticket_code: params.require(:voucher_marketplace_id))
  valid = voucher.present?
  if valid
    render json: { success: true, data: Dashboard::V2::VoucherSelfCheckinSerializer.new(voucher) }
  else
    render json: { success: false, message: 'voucher not found' }
  end
end

#edit_historyObject



124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# File 'app/controllers/dashboard/v2/voucher_marketplaces_controller.rb', line 124

def edit_history
  ActiveRecord::Base.transaction do
    ticket = Ticket.find_by(ticket_code: params[:code])
    if ticket.present?
      ticket.name = params[:name]
      ticket.phone = params[:phone]
      if ticket.save!
        redirect_to :history_dashboard_v2_voucher_marketplaces, notice: 'Data Updated'
      else
        redirect_to :history_dashboard_v2_voucher_marketplaces, notice: 'Failed to Update'
      end
    else
      redirect_to :history_dashboard_v2_voucher_marketplaces, notice: 'Failed to Update'
    end
  end
end

#get_redeem_historyObject



106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# File 'app/controllers/dashboard/v2/voucher_marketplaces_controller.rb', line 106

def get_redeem_history
  vcode = "VC-#{params[:id]}"
  ticket = Ticket.find_by(ticket_code: vcode)
  if ticket.present?
    user_name = ticket.name
    user_phone = ticket.phone
    code = ticket.ticket_code
    data = {
      voucher_name: user_name,
      voucher_phone: user_phone,
      voucher_code: code,
    }
    render json: { success: true, data: data }
  else
    render json: { success: false, message: 'Voucher code not found' }
  end
end

#get_redeem_listObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'app/controllers/dashboard/v2/voucher_marketplaces_controller.rb', line 14

def get_redeem_list
  vcode = "VC-#{params[:id]}"
  ticket = Ticket.find_by(ticket_code: vcode)

  if check_owner_ticket(ticket, current_owner)
    code = ticket.ticket_code
    title = ticket.ticket_name
    price = ticket.amount.to_i
    voucher_id = ticket.ticket_group_id
    user_name = ticket.name
    user_phone = ticket.phone
    start_date = ticket.valid_start_date
    end_date = ticket.valid_end_date
    status_redeem = ticket.redeemed_at.present?
    date_redeem = ticket.redeemed_at
    today = Date.today
    valid_date = today >= ticket.valid_start_date && today <= ticket.valid_end_date
    active = ticket.active
    data = {
      voucher_code: code,
      voucher_title: title,
      voucher_price: price,
      voucher_id: voucher_id,
      voucher_name: user_name,
      voucher_phone: user_phone,
      voucher_valid_start_date: start_date,
      voucher_valid_end_date: end_date,
      voucher_valid_date: valid_date,
      voucher_status_redeem: status_redeem,
      voucher_date_redeem: date_redeem,
      voucher_status_active: active,
    }
    render json: { success: true, data: data }
  else
    render json: { success: false, message: 'Voucher code not found' }
  end
end

#historyObject



94
95
96
# File 'app/controllers/dashboard/v2/voucher_marketplaces_controller.rb', line 94

def history
  @history = Ticket.joins(:ticket_transaction).where(ticket_transactions: { restaurant_id: current_owner.restaurant.id }).where.not(redeemed_at: nil)
end

#listObject



2
3
4
# File 'app/controllers/dashboard/v2/voucher_marketplaces_controller.rb', line 2

def list
  @data = TicketGroup.joins(:restaurants).where(ticket_group_restaurants: { restaurant_id: current_owner.restaurant.id })
end

#redeemObject



52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'app/controllers/dashboard/v2/voucher_marketplaces_controller.rb', line 52

def redeem
  service = TicketService::Redeem.new(
    code: params[:code],
    name: params[:name],
    phone: params[:phone],
    guest_detail: params[:guest_detail],
  )

  if service.execute
    redirect_to :list_dashboard_v2_voucher_marketplaces, notice: 'Voucher has been redeemed successfully'
  else
    redirect_to :list_dashboard_v2_voucher_marketplaces, alert: service.errors.full_messages.to_sentence
  end
end

#redeem_historyObject



98
99
100
101
102
103
104
# File 'app/controllers/dashboard/v2/voucher_marketplaces_controller.rb', line 98

def redeem_history
  if params[:partner_app_embed]
    render layout: 'partner_app'
  else
    render layout: 'dashboard_v2_pop_up'
  end
end

#redeem_listObject



6
7
8
9
10
11
12
# File 'app/controllers/dashboard/v2/voucher_marketplaces_controller.rb', line 6

def redeem_list
  if params[:partner_app_embed]
    render layout: 'partner_app'
  else
    render layout: 'dashboard_v2_pop_up'
  end
end

#self_redeemObject



78
79
80
81
82
83
84
85
86
87
88
# File 'app/controllers/dashboard/v2/voucher_marketplaces_controller.rb', line 78

def self_redeem
  current_owner # to define owner group
  ticket_code = params.require(:voucher_marketplace_id)
  service = TicketService::Redeem.new(code: ticket_code)

  if service.execute
    render json: { success: true, message: 'Voucher has been redeemed successfully' }
  else
    render json: { success: false, message: service.errors.full_messages.to_sentence }
  end
end

#self_redeem_formObject



90
91
92
# File 'app/controllers/dashboard/v2/voucher_marketplaces_controller.rb', line 90

def self_redeem_form
  current_owner # to define owner group
end