Skip to content

Commit

Permalink
Be able to create survey requests
Browse files Browse the repository at this point in the history
  • Loading branch information
smellsblue committed Aug 31, 2023
1 parent 909c543 commit 8220603
Show file tree
Hide file tree
Showing 7 changed files with 43 additions and 2 deletions.
23 changes: 22 additions & 1 deletion app/controllers/survey_requests_controller.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
class SurveyRequestsController < ApplicationController
before_action :authenticate_user!
require_permission :can_view_and_edit_surveys?
require_permission :can_create_surveys?, only: %i[new create]

def index
@survey_requests = SurveyRequest.order(created_at: :desc).all.to_a
end
Expand All @@ -9,6 +13,23 @@ def new
end

def create
raise params.inspect
SurveyRequest.transaction do
survey = Survey.find(params[:survey_id])

request = SurveyRequest.create! do |r|
r.title = params[:survey_request_title]
r.survey = survey
r.survey_revision = survey.active_revision
end

params[:organization_ids].each do |org_id|
org = Organization.find(org_id)
request.survey_organization_requests.create! organization: org
end

request.update_organization_counts
end

redirect_to survey_requests_path, flash: { success: "Survey request created!" }
end
end
2 changes: 1 addition & 1 deletion app/controllers/surveys_controller.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
class SurveysController < ApplicationController
before_action :authenticate_user!
require_permission :can_view_and_edit_surveys?
require_permission :can_create_surveys?, only: %i[create update]
require_permission :can_create_surveys?, only: %i[new create update]
require_permission :can_delete_surveys?, only: %i[destroy]
active_tab "surveys"

Expand Down
4 changes: 4 additions & 0 deletions app/models/survey_organization_request.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
class SurveyOrganizationRequest < ApplicationRecord
belongs_to :survey_request
belongs_to :organization
end
10 changes: 10 additions & 0 deletions app/models/survey_request.rb
Original file line number Diff line number Diff line change
@@ -1,2 +1,12 @@
class SurveyRequest < ApplicationRecord
belongs_to :survey
belongs_to :survey_revision
has_many :survey_organization_requests

def update_organization_counts
self.organizations_requested = survey_organization_requests.count
self.organizations_responded = survey_organization_requests.where(answered: true).count
self.organizations_skipped = survey_organization_requests.where(skipped: true).count
save!
end
end
2 changes: 2 additions & 0 deletions app/models/survey_revision.rb
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
class SurveyRevision < ApplicationRecord
belongs_to :survey
has_many :survey_answers
has_many :survey_requests

def deletable?
return false if survey_answers.count > 0
return false if survey_requests.count > 0
return true unless active?

survey.deletable?
Expand Down
1 change: 1 addition & 0 deletions db/migrate/20230829052420_update_survey_requests.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ class UpdateSurveyRequests < ActiveRecord::Migration[5.2]
def change
change_table :survey_requests do |t|
t.string :title, null: false, default: "Untitled Survey Request"
t.references :survey_revision, null: false, foreign_key: true, index: true
t.integer :organizations_requested, default: -1, null: false
t.integer :organizations_responded, default: -1, null: false
t.integer :organizations_skipped, default: -1, null: false
Expand Down
3 changes: 3 additions & 0 deletions db/schema.rb
Original file line number Diff line number Diff line change
Expand Up @@ -426,11 +426,13 @@
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "title", default: "Untitled Survey Request", null: false
t.bigint "survey_revision_id", null: false
t.integer "organizations_requested", default: -1, null: false
t.integer "organizations_responded", default: -1, null: false
t.integer "organizations_skipped", default: -1, null: false
t.index ["created_at"], name: "index_survey_requests_on_created_at"
t.index ["survey_id"], name: "index_survey_requests_on_survey_id"
t.index ["survey_revision_id"], name: "index_survey_requests_on_survey_revision_id"
end

create_table "survey_revisions", force: :cascade do |t|
Expand Down Expand Up @@ -584,6 +586,7 @@
add_foreign_key "survey_answers", "users", column: "last_updated_by_id"
add_foreign_key "survey_organization_requests", "organizations"
add_foreign_key "survey_organization_requests", "survey_requests"
add_foreign_key "survey_requests", "survey_revisions"
add_foreign_key "survey_requests", "surveys"
add_foreign_key "survey_revisions", "surveys"
add_foreign_key "user_invitations", "organizations"
Expand Down

0 comments on commit 8220603

Please sign in to comment.