@@ -97,15 +97,10 @@ class MissionsController < ApplicationController |
||
97 | 97 |
def step_submission |
98 | 98 |
mission = Mission.friendly.find(params[:id]) |
99 | 99 |
agent = mission.mission_agents.friendly.find(params[:agent]) |
100 |
- submission = StepSubmission.new |
|
101 |
- agent.agent_steps.first.step_validations.each do |validation| |
|
102 |
- if validation.validation_type == 'ValidationText' |
|
103 |
- submission.submission_contents << SubmissionContent.new |
|
104 |
- submission.submission_contents.last.build_submission('SubmissionText') |
|
105 |
- end |
|
106 |
- end |
|
100 |
+ step = agent.agent_steps.find_by_step(params[:step]) |
|
101 |
+ submission = step.create_submission(step_submission_params, params[:step_submission][:submission_contents_attributes].values) |
|
107 | 102 |
respond_to do |format| |
108 |
- if submission.update(step_submission_params) |
|
103 |
+ if submission.save |
|
109 | 104 |
format.html { redirect_to mission_agent_details_path(mission, agent), notice: (t 'mission.step_submission_confirmation') } |
110 | 105 |
format.json { head :no_content } |
111 | 106 |
else |
@@ -127,7 +122,7 @@ class MissionsController < ApplicationController |
||
127 | 122 |
end |
128 | 123 |
|
129 | 124 |
def step_submission_params |
130 |
- params.require(:step_submission).permit(:agent_step_id, :validated, :validated_by_id, :date_validated, :created_at, :updated_at, :language, :cover_img, :slug, :end_date, :submission_contents_attributes => [:submission_content_id, :submission_type, :created_at, :updated_at]) |
|
125 |
+ params.require(:step_submission).permit(:agent_step_id, :validated, :validated_by_id, :date_validated, :created_at, :updated_at, :language, :cover_img, :slug, :end_date, :submission_contents_attributes => [:submission_content_id, :submission_type, :created_at, :updated_at, :submission_attributes => [:content, :submission_content_id]]) |
|
131 | 126 |
end |
132 | 127 |
|
133 | 128 |
end |
@@ -2,4 +2,20 @@ class AgentStep < ActiveRecord::Base |
||
2 | 2 |
belongs_to :mission_agent |
3 | 3 |
has_many :step_validations |
4 | 4 |
has_many :step_submissions |
5 |
+ |
|
6 |
+ def create_submission(step_submission, contents) |
|
7 |
+ submission = StepSubmission.new(step_submission) |
|
8 |
+ submission.agent_step = self |
|
9 |
+ validation_number = 0 |
|
10 |
+ self.step_validations.each do |validation| |
|
11 |
+ if validation.validation_type == 'ValidationText' |
|
12 |
+ submission.submission_contents << SubmissionContent.new |
|
13 |
+ submission_text = contents[validation_number][:submission_text] |
|
14 |
+ submission.submission_contents.last.build_submission('SubmissionText', submission_text) |
|
15 |
+ end |
|
16 |
+ end |
|
17 |
+ validation_number = validation_number + 1 |
|
18 |
+ return submission |
|
19 |
+ end |
|
20 |
+ |
|
5 | 21 |
end |
@@ -3,9 +3,9 @@ class SubmissionContent < ActiveRecord::Base |
||
3 | 3 |
belongs_to :submission, polymorphic: true |
4 | 4 |
accepts_nested_attributes_for :submission, allow_destroy:true |
5 | 5 |
|
6 |
- def build_submission(klass) |
|
6 |
+ def build_submission(klass, object) |
|
7 | 7 |
if klass = 'SubmissionText' |
8 |
- submission = SubmissionText.new |
|
8 |
+ submission = SubmissionText.new(object) |
|
9 | 9 |
self.submission_type = klass |
10 | 10 |
end |
11 | 11 |
self.submission = submission |
@@ -20,7 +20,7 @@ |
||
20 | 20 |
|
21 | 21 |
<%= f.fields_for :submission_contents, SubmissionContent.new, show_empty: true do |f| %> |
22 | 22 |
<%= f.alert_message "Please fix the errors below." %> |
23 |
- <%= f.fields_for :submission, SubmissionText.new, show_empty: true do |f| %> |
|
23 |
+ <%= f.fields_for SubmissionText.new, as: :submission, show_empty: true do |f| %> |
|
24 | 24 |
<%= f.text_field :content %> |
25 | 25 |
<% end %> |
26 | 26 |
<% end %> |
@@ -76,7 +76,7 @@ |
||
76 | 76 |
<% # Steps %> |
77 | 77 |
<% @agent.agent_steps.order('step ASC').each do |step| %> |
78 | 78 |
<% step_submission = StepSubmission.new %> |
79 |
- <%= bootstrap_nested_form_for(step_submission) do |f| %> |
|
79 |
+ <%= bootstrap_nested_form_for(StepSubmission.new, url: step_submission_path(step: step.step, mission: @mission.slug, agent: @agent.slug)) do |f| %> |
|
80 | 80 |
<%= content_tag(:div, class: 'panel panel-default') do %> |
81 | 81 |
<%= content_tag(:div, class: 'panel-heading') do %> |
82 | 82 |
<%= content_tag(:h3, class: 'panel-title') do %> |
@@ -35,7 +35,7 @@ Avalanche2::Application.routes.draw do |
||
35 | 35 |
get 'agent/:id' => 'agents#show', as: :show_agent |
36 | 36 |
|
37 | 37 |
# Steps |
38 |
- post 'missions/:id/agents/:agent/step_submission' => 'missions#step_submission', as: :step_submissions |
|
38 |
+ post 'missions/:id/agents/:agent/steps/:step/step_submission' => 'missions#step_submission', as: :step_submission |
|
39 | 39 |
|
40 | 40 |
# Admin Panel |
41 | 41 |
get "admin/dashboard" => "admin_panel#dashboard", :as => :admin_dashboard |