Class: Manage::QuestionnairesController

Inherits:
ApplicationController show all
Includes:
QuestionnairesControllable
Defined in:
app/controllers/manage/questionnaires_controller.rb

Instance Method Summary collapse

Methods inherited from ApplicationController

#json_request?, #limit_write_access_to_admins, #logged_in, #require_admin_or_limited_admin, #require_admin_or_limited_admin_or_event_tracking, #response_view_or_errors

Instance Method Details

#bulk_applyObject



127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# File 'app/controllers/manage/questionnaires_controller.rb', line 127

def bulk_apply
  action = params[:bulk_action]
  ids = params[:bulk_ids]
  if action.blank? || ids.blank?
    head :bad_request
    return
  end
  Questionnaire.find(ids).each do |q|
    q.acc_status = action
    q.acc_status_author_id = current_user.id
    q.acc_status_date = Time.now
    q.save(validate: false)
  end
  head :ok
end

#check_inObject



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'app/controllers/manage/questionnaires_controller.rb', line 61

def check_in
  redirect_to_checkins = params[:redirect_to_checkins] || false
  show_redirect_path = redirect_to_checkins ? manage_checkin_path(@questionnaire) : manage_questionnaire_path(@questionnaire)
  index_redirect_path = redirect_to_checkins ? manage_checkins_path : manage_questionnaires_path
  if params[:check_in] == "true"
    if params[:questionnaire]
      q_params = params.require(:questionnaire).permit(:agreement_accepted, :phone, :can_share_info, :email)
      email = q_params.delete(:email)
      @questionnaire.update_attributes(q_params)
      @questionnaire.user.update_attributes(email: email)
    end
    unless @questionnaire.valid?
      flash[:notice] = @questionnaire.errors.full_messages.join(", ")
      redirect_to show_redirect_path
      return
    end
    @questionnaire.update_attribute(:checked_in_at, Time.now)
    @questionnaire.update_attribute(:checked_in_by_id, current_user.id)
    flash[:notice] = "Checked in #{@questionnaire.full_name}."
  elsif params[:check_in] == "false"
    @questionnaire.update_attribute(:checked_in_at, nil)
    @questionnaire.update_attribute(:checked_in_by_id, current_user.id)
    flash[:notice] = "#{@questionnaire.full_name} no longer checked in."
  else
    flash[:notice] = "No check-in action provided!"
    redirect_to show_redirect_path
    return
  end
  redirect_to index_redirect_path
end

#convert_to_adminObject



92
93
94
95
96
97
# File 'app/controllers/manage/questionnaires_controller.rb', line 92

def convert_to_admin
  user = @questionnaire.user
  @questionnaire.destroy
  user.update_attributes(role: :admin)
  redirect_to edit_manage_admin_path(user)
end

#createObject



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'app/controllers/manage/questionnaires_controller.rb', line 28

def create
  create_params = questionnaire_params
  email = create_params.delete(:email)
  create_params = convert_school_name_to_id(create_params)
  create_params = convert_boarded_bus_param(create_params)
  @questionnaire = ::Questionnaire.new(create_params)
  users = User.where(email: email)
  user = users.count == 1 ? users.first : User.new(email: email, password: Devise.friendly_token.first(10))
  @questionnaire.user = user
  if @questionnaire.valid?
    if user.save
      @questionnaire.save
    else
      flash[:notice] = user.errors.full_messages.join(", ")
      if user.errors.include?(:email)
        @questionnaire.errors.add(:email, user.errors[:email].join(", "))
      end
      return render 'new'
    end
  end
  respond_with(:manage, @questionnaire)
end

#datatableObject



12
13
14
# File 'app/controllers/manage/questionnaires_controller.rb', line 12

def datatable
  render json: QuestionnaireDatatable.new(view_context)
end

#destroyObject



99
100
101
102
103
104
# File 'app/controllers/manage/questionnaires_controller.rb', line 99

def destroy
  user = @questionnaire.user
  @questionnaire.destroy
  user.destroy if user.present?
  respond_with(:manage, @questionnaire)
end

#editObject



25
26
# File 'app/controllers/manage/questionnaires_controller.rb', line 25

def edit
end

#indexObject



8
9
10
# File 'app/controllers/manage/questionnaires_controller.rb', line 8

def index
  respond_with(:manage, Questionnaire.all)
end

#message_eventsObject



143
144
145
# File 'app/controllers/manage/questionnaires_controller.rb', line 143

def message_events
  render json: @questionnaire.message_events
end

#newObject



20
21
22
23
# File 'app/controllers/manage/questionnaires_controller.rb', line 20

def new
  @questionnaire = ::Questionnaire.new
  respond_with(:manage, @questionnaire)
end

#showObject



16
17
18
# File 'app/controllers/manage/questionnaires_controller.rb', line 16

def show
  respond_with(:manage, @questionnaire)
end

#updateObject



51
52
53
54
55
56
57
58
59
# File 'app/controllers/manage/questionnaires_controller.rb', line 51

def update
  update_params = questionnaire_params
  email = update_params.delete(:email)
  @questionnaire.user.update_attributes(email: email) if email.present?
  update_params = convert_school_name_to_id(update_params)
  update_params = convert_boarded_bus_param(update_params, @questionnaire)
  @questionnaire.update_attributes(update_params)
  respond_with(:manage, @questionnaire)
end

#update_acc_statusObject



106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'app/controllers/manage/questionnaires_controller.rb', line 106

def update_acc_status
  new_status = params[:questionnaire][:acc_status]
  if new_status.blank?
    flash[:notice] = "No status provided"
    redirect_to(manage_questionnaire_path(@questionnaire))
    return
  end

  @questionnaire.acc_status = new_status
  @questionnaire.acc_status_author_id = current_user.id
  @questionnaire.acc_status_date = Time.now

  if @questionnaire.save(validate: false)
    flash[:notice] = "Updated acceptance status to \"#{Questionnaire::POSSIBLE_ACC_STATUS[new_status]}\""
  else
    flash[:notice] = "Failed to update acceptance status"
  end

  redirect_to manage_questionnaire_path(@questionnaire)
end