Completed
Push — ubiquitous-session-favoriting ( 2a7f66 )
by
unknown
02:15
created

AttendancesController.index()   A

Complexity

Conditions 2

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
dl 0
loc 9
rs 9.6666
c 0
b 0
f 0
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
      render :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
        format.html do
21
          flash[:notice] = "Thanks for your interest in this session."
22
          redirect_to @session
23
        end
24
25
        format.json do
26
          render :partial => 'sessions/participant', :formats => ['html'], :locals => { :participant => current_participant }
27
        end
28
      end
29
    else
30
      respond_to do |format|
31
        format.json do
32
          render :partial => 'sessions/new_participant', :formats => ['html'], :status => :unprocessable_entity
33
        end
34
      end
35
    end
36
  end
37
38
  def destroy
39
    return render :unauthorized unless current_participant
40
    @session.attendances.where(participant: current_participant).destroy_all
41
  end
42
43
  private
44
45
  def create_participant
46
    return if logged_in?
47
    return if params[:attendance].nil?
48
49
    name, email, password = params[:attendance][:name], params[:attendance][:email], params[:attendance][:password]
50
51
    participant_session = ParticipantSession.new(:email => email, :password => password)
52
    if participant_session.save
53
      @current_participant_session = participant_session
54
    else
55
      participant = Participant.new(:name => name, :email => email, :password => password)
56
      if participant.save
57
        @current_participant_session = ParticipantSession.create(participant, true)
58
      else
59
        flash[:error] = "There was a problem creating an account for you. Please try again."
60
        redirect_to new_participant_path
61
      end
62
    end
63
  end
64
end
65