1
|
|
|
class AttendancesController < ApplicationController |
2
|
|
|
before_action :create_participant, only: :create |
3
|
|
|
|
4
|
|
|
load_resource :session |
5
|
|
|
|
6
|
|
|
def index |
7
|
|
|
if current_participant |
8
|
|
|
render json: current_participant.sessions_attending |
9
|
|
|
.where(event: Event.current_event) |
10
|
|
|
.pluck(:id) |
11
|
|
|
else |
12
|
|
|
head :unauthorized |
13
|
|
|
end |
14
|
|
|
end |
15
|
|
|
|
16
|
|
|
def create |
17
|
|
|
@attendance = @session.attendances.find_or_initialize_by(participant: current_participant) |
18
|
|
|
if @attendance.save |
19
|
|
|
respond_to do |format| |
20
|
|
|
# Appears after the user logs in by clicking on “Yes! I might attend” while logged out |
21
|
|
|
format.html do |
22
|
|
|
flash[:notice] = "Thanks for your interest in this session." |
23
|
|
|
redirect_to @session |
24
|
|
|
end |
25
|
|
|
|
26
|
|
|
# Appears when user already logged in |
27
|
|
|
format.json do |
28
|
|
|
render :partial => 'sessions/participant', :formats => ['html'], :locals => { :participant => current_participant } |
29
|
|
|
end |
30
|
|
|
end |
31
|
|
|
else |
32
|
|
|
respond_to do |format| |
33
|
|
|
format.json do |
34
|
|
|
render :partial => 'sessions/new_participant', :formats => ['html'], :status => :unprocessable_entity |
35
|
|
|
end |
36
|
|
|
end |
37
|
|
|
end |
38
|
|
|
end |
39
|
|
|
|
40
|
|
|
def destroy |
41
|
|
|
return head :unauthorized unless current_participant |
42
|
|
|
@session.attendances.where(participant: current_participant).destroy_all |
43
|
|
|
end |
44
|
|
|
|
45
|
|
|
private |
46
|
|
|
|
47
|
|
|
def create_participant |
48
|
|
|
return if logged_in? |
49
|
|
|
return if params[:attendance].nil? |
50
|
|
|
|
51
|
|
|
name, email, password = params[:attendance][:name], params[:attendance][:email], params[:attendance][:password] |
52
|
|
|
|
53
|
|
|
participant_session = ParticipantSession.new(:email => email, :password => password) |
54
|
|
|
if participant_session.save |
55
|
|
|
@current_participant_session = participant_session |
56
|
|
|
else |
57
|
|
|
participant = Participant.new(:name => name, :email => email, :password => password) |
58
|
|
|
if participant.save |
59
|
|
|
@current_participant_session = ParticipantSession.create(participant, true) |
60
|
|
|
else |
61
|
|
|
flash[:error] = "There was a problem creating an account for you. Please try again." |
62
|
|
|
redirect_to new_participant_path |
63
|
|
|
end |
64
|
|
|
end |
65
|
|
|
end |
66
|
|
|
end |
67
|
|
|
|