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



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

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



59
60
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
# File 'app/controllers/manage/questionnaires_controller.rb', line 59

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



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

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
# 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)
  @questionnaire = ::Questionnaire.new(create_params)
  if @questionnaire.valid?
    users = User.where(email: email)
    user = users.count == 1 ? users.first : User.new(email: email, password: Devise.friendly_token.first(10))
    if user.save
      @questionnaire.user = user
      @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



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

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



141
142
143
# File 'app/controllers/manage/questionnaires_controller.rb', line 141

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



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

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)
  @questionnaire.update_attributes(update_params)
  respond_with(:manage, @questionnaire)
end

#update_acc_statusObject



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

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