@@ -1,15 +1,6 @@ |
||
| 1 | 1 |
class AgentController < ApplicationController |
| 2 | 2 |
|
| 3 | 3 |
layout 'front_end' |
| 4 |
- |
|
| 5 |
- def current_missions |
|
| 6 |
- |
|
| 7 |
- end |
|
| 8 |
- |
|
| 9 |
- def choose_mission |
|
| 10 |
- @user = User.find(current_user.id) |
|
| 11 |
- @mission_invites = @user.mission_agent_invites.where(:status => 'invited') |
|
| 12 |
- end |
|
| 13 | 4 |
|
| 14 | 5 |
def agent_profile |
| 15 | 6 |
@user = User.find(params[:id]) |
@@ -10,7 +10,9 @@ class MissionsController < ApplicationController |
||
| 10 | 10 |
def index |
| 11 | 11 |
@user = User.find(current_user.id) |
| 12 | 12 |
@missions = @user.mission_agent_invites.where(:status => 'accepted') |
| 13 |
+ @missions += @user.mission_agent_invites.where(:status => 'Completed') |
|
| 13 | 14 |
@mission_control = Mission.where(:owner => @user) |
| 15 |
+ @mission_invites = @user.mission_agent_invites.where(:status => 'invited') |
|
| 14 | 16 |
end |
| 15 | 17 |
|
| 16 | 18 |
def list |
@@ -72,8 +74,18 @@ class MissionsController < ApplicationController |
||
| 72 | 74 |
@step.description = s[:description] |
| 73 | 75 |
@step.save |
| 74 | 76 |
end |
| 77 |
+ # Update Step Order |
|
| 78 |
+ @steps = MissionAgentStep.order(:step => :asc).find_all_by_mission_agent_id(@step.mission_agent) |
|
| 79 |
+ @step_number = 1 |
|
| 80 |
+ @steps.each do |step| |
|
| 81 |
+ step.step = @step_number |
|
| 82 |
+ step.save |
|
| 83 |
+ @step_number = @step_number + 1 |
|
| 84 |
+ end |
|
| 75 | 85 |
end |
| 76 | 86 |
end |
| 87 |
+ |
|
| 88 |
+ |
|
| 77 | 89 |
|
| 78 | 90 |
format.html { redirect_to mission_control_path(@mission), notice: 'Mission was successfully updated.' }
|
| 79 | 91 |
format.json { head :no_content }
|
@@ -136,12 +148,44 @@ class MissionsController < ApplicationController |
||
| 136 | 148 |
def validate_agent_step |
| 137 | 149 |
@step = MissionAgentStep.find(params[:mission_agent_step][:id]) |
| 138 | 150 |
@step.proof = params[:mission_agent_step][:proof] |
| 139 |
- @step.completed = true |
|
| 151 |
+ @step.status = 'Waiting Validation' |
|
| 140 | 152 |
@mission = @step.mission_agent.mission |
| 141 | 153 |
if @step.save |
| 142 | 154 |
redirect_to mission_path(@mission), notice: 'Step completed!' |
| 143 | 155 |
end |
| 144 | 156 |
end |
| 157 |
+ |
|
| 158 |
+ def mission_agent_step_validate_check |
|
| 159 |
+ @step = MissionAgentStep.find(params[:id]) |
|
| 160 |
+ @step.validated = true |
|
| 161 |
+ @step.validated_by = current_user |
|
| 162 |
+ @step.completed = true |
|
| 163 |
+ @step.status = 'Completed' |
|
| 164 |
+ @step.save |
|
| 165 |
+ @mission_completed = true |
|
| 166 |
+ @step.mission_agent.mission_agent_steps.each do |s| |
|
| 167 |
+ if s.completed == false |
|
| 168 |
+ @mission_completed = false |
|
| 169 |
+ end |
|
| 170 |
+ end |
|
| 171 |
+ if @mission_completed == true |
|
| 172 |
+ @step.mission_agent.mission_agent_invites.where(:user => @step.mission_agent.user).last.update(:status => "Completed") |
|
| 173 |
+ end |
|
| 174 |
+ @mission = @step.mission_agent.mission |
|
| 175 |
+ redirect_to mission_control_path(@mission), notice: 'Step Validated!' |
|
| 176 |
+ end |
|
| 177 |
+ |
|
| 178 |
+ def mission_agent_step_invalidate_check |
|
| 179 |
+ @step = MissionAgentStep.find(params[:id]) |
|
| 180 |
+ @step.validated = false |
|
| 181 |
+ @step.validated_by = current_user |
|
| 182 |
+ @step.completed = false |
|
| 183 |
+ @step.status = 'Incomplete' |
|
| 184 |
+ @mission = @step.mission_agent.mission |
|
| 185 |
+ if @step.save |
|
| 186 |
+ redirect_to mission_control_path(@mission), notice: 'Step Invalidated!' |
|
| 187 |
+ end |
|
| 188 |
+ end |
|
| 145 | 189 |
|
| 146 | 190 |
private |
| 147 | 191 |
# Use callbacks to share common setup or constraints between actions. |
@@ -1,3 +1,4 @@ |
||
| 1 | 1 |
class MissionAgentStep < ActiveRecord::Base |
| 2 | 2 |
belongs_to :mission_agent |
| 3 |
+ belongs_to :validated_by, :class_name => "User" |
|
| 3 | 4 |
end |
@@ -6,4 +6,5 @@ class User < ActiveRecord::Base |
||
| 6 | 6 |
|
| 7 | 7 |
has_many :mission_agent_invites |
| 8 | 8 |
has_many :missions |
| 9 |
+ has_many :validated_bys |
|
| 9 | 10 |
end |
@@ -1,22 +0,0 @@ |
||
| 1 |
-<div class="page-header"> |
|
| 2 |
- <h1>Choose your Missions </h1> |
|
| 3 |
-</div> |
|
| 4 |
-<ul class="thumbnails"> |
|
| 5 |
-<% @mission_invites.each do |invite| %> |
|
| 6 |
- <li class="span4"> |
|
| 7 |
- <div class="thumbnail" style= "padding: 5px;"> |
|
| 8 |
- <h3 style= "padding: 5px;"><%= invite.mission_agent.mission.title %></h3> |
|
| 9 |
- <p style= "padding: 5px; height: 50px;"><%= invite.mission_agent.mission.description %></p> |
|
| 10 |
- <div style="width: 48%; float: left;"> |
|
| 11 |
- <%= link_to 'accept', mission_agent_accept_path(invite.id), :class => "btn btn-large btn-block btn-success" %> |
|
| 12 |
- </div> |
|
| 13 |
- <div style="width: 48%; float: right;"> |
|
| 14 |
- <%= link_to 'Denie', mission_agent_denie_path(invite.id), :class => "btn btn-large btn-block btn-danger" %> |
|
| 15 |
- </div> |
|
| 16 |
- <div class="clearfix"></div> |
|
| 17 |
- </div> |
|
| 18 |
- |
|
| 19 |
- |
|
| 20 |
- </li> |
|
| 21 |
-<% end %> |
|
| 22 |
-</ul> |
@@ -1,7 +1,6 @@ |
||
| 1 | 1 |
<ul class="nav"> |
| 2 | 2 |
<% if user_signed_in? %> |
| 3 | 3 |
<li><%= link_to "Missions", missions_path %></li> |
| 4 |
- <li><%= link_to "Choose Missions", mission_choose_path %></li> |
|
| 5 | 4 |
<% else %> |
| 6 | 5 |
<li><%= link_to "About", start_about_path %></li> |
| 7 | 6 |
|
@@ -19,7 +18,8 @@ |
||
| 19 | 18 |
<% end %> |
| 20 | 19 |
</a> |
| 21 | 20 |
<ul class="dropdown-menu"> |
| 22 |
- <li><%= link_to 'Edit profile', edit_user_registration_path %></li> |
|
| 21 |
+ <li><%= link_to 'Agent Profile', agent_profile_path(current_user) %></li> |
|
| 22 |
+ <li><%= link_to 'Edit Account', edit_user_registration_path %></li> |
|
| 23 | 23 |
<li><%= link_to "Logout", destroy_user_session_path, method: :delete %></li> |
| 24 | 24 |
</ul> |
| 25 | 25 |
</li> |
@@ -5,7 +5,7 @@ |
||
| 5 | 5 |
<%= f.text_area :description%><br/> |
| 6 | 6 |
<%= f.hidden_field :_destroy%> |
| 7 | 7 |
<%= link_to "remove", '#', class: "remove_fields"%> |
| 8 |
- <%= f.fields_for :mission_agent_steps do |step_builder| %> |
|
| 8 |
+ <%= f.fields_for :mission_agent_steps, MissionAgentStep.where(:mission_agent_id => f.object.id).order(:step => :asc) do |step_builder| %> |
|
| 9 | 9 |
<%= render 'mission_agent_step_form', f: step_builder %> |
| 10 | 10 |
<%end%> |
| 11 | 11 |
<% @agent = @agent + 1 %> |
@@ -0,0 +1,15 @@ |
||
| 1 |
+<% case step.status %> |
|
| 2 |
+<% when 'Completed' %> |
|
| 3 |
+ <% @step_text = 'Completed' %> |
|
| 4 |
+ <% @step_label = 'label-success' %> |
|
| 5 |
+<% when 'Waiting Validation' %> |
|
| 6 |
+ <% @step_text = 'Waiting Validation' %> |
|
| 7 |
+ <% @step_label = 'label-warning' %> |
|
| 8 |
+<% else %> |
|
| 9 |
+ <% @step_text = 'Incomplete' %> |
|
| 10 |
+ <% @step_label = 'label-default' %> |
|
| 11 |
+<% end %> |
|
| 12 |
+ |
|
| 13 |
+<span class="label <%= @step_label %> pull-right" style="margin-top: 10px; margin-right: 5px;"> |
|
| 14 |
+ <%= @step_text %> |
|
| 15 |
+</span> |
@@ -1,26 +1,54 @@ |
||
| 1 |
-<div class="page-header"> |
|
| 2 |
- <h1>Assigned Missions</h1> |
|
| 3 |
-</div> |
|
| 4 |
-<ul class="thumbnails"> |
|
| 5 |
-<% @missions.each do |invite| %> |
|
| 6 |
- <li class="span4"> |
|
| 7 |
- <div class="thumbnail" style= "padding: 5px;"> |
|
| 8 |
- <h3 style= "padding: 5px;"><%= link_to invite.mission_agent.mission.title, mission_path(invite.mission_agent.mission) %></h3> |
|
| 1 |
+<% if @mission_invites.length > 0 %> |
|
| 2 |
+ <div class="page-header"> |
|
| 3 |
+ <h1>Choose your Missions </h1> |
|
| 4 |
+ </div> |
|
| 5 |
+ <ul class="thumbnails"> |
|
| 6 |
+ <% @mission_invites.each do |invite| %> |
|
| 7 |
+ <li class="span4"> |
|
| 8 |
+ <div class="thumbnail" style= "padding: 5px;"> |
|
| 9 |
+ <h3 style= "padding: 5px;"><%= invite.mission_agent.mission.title %></h3> |
|
| 9 | 10 |
<p style= "padding: 5px; height: 50px;"><%= invite.mission_agent.mission.description %></p> |
| 10 |
- </div> |
|
| 11 |
- </li> |
|
| 11 |
+ <div style="width: 48%; float: left;"> |
|
| 12 |
+ <%= link_to 'accept', mission_agent_accept_path(invite.id), :class => "btn btn-large btn-block btn-success" %> |
|
| 13 |
+ </div> |
|
| 14 |
+ <div style="width: 48%; float: right;"> |
|
| 15 |
+ <%= link_to 'Denie', mission_agent_denie_path(invite.id), :class => "btn btn-large btn-block btn-danger" %> |
|
| 16 |
+ </div> |
|
| 17 |
+ <div class="clearfix"></div> |
|
| 18 |
+ </div> |
|
| 19 |
+ </li> |
|
| 20 |
+ <% end %> |
|
| 21 |
+ </ul> |
|
| 12 | 22 |
<% end %> |
| 13 |
-</ul> |
|
| 14 |
-<div class="page-header"> |
|
| 15 |
- <h1>Missions Control</h1> |
|
| 16 |
-</div> |
|
| 17 |
-<ul class="thumbnails"> |
|
| 18 |
-<% @mission_control.each do |mission| %> |
|
| 19 |
- <li class="span4"> |
|
| 20 |
- <div class="thumbnail" style= "padding: 5px;"> |
|
| 21 |
- <h3 style= "padding: 5px;"><%= link_to mission.title, mission_control_path(mission) %></h3> |
|
| 22 |
- <p style= "padding: 5px; height: 50px;"><%= mission.description %></p> |
|
| 23 |
- </div> |
|
| 24 |
- </li> |
|
| 25 |
-<% end %> |
|
| 26 |
-</ul> |
|
| 23 |
+ |
|
| 24 |
+<% if @missions.length > 0%> |
|
| 25 |
+ <div class="page-header"> |
|
| 26 |
+ <h1>Assigned Missions</h1> |
|
| 27 |
+ </div> |
|
| 28 |
+ <ul class="thumbnails"> |
|
| 29 |
+ <% @missions.each do |invite| %> |
|
| 30 |
+ <li class="span4"> |
|
| 31 |
+ <div class="thumbnail" style= "padding: 5px;"> |
|
| 32 |
+ <h3 style= "padding: 5px;"><%= link_to invite.mission_agent.mission.title, mission_path(invite.mission_agent.mission) %></h3> |
|
| 33 |
+ <p style= "padding: 5px; height: 50px;"><%= invite.mission_agent.mission.description %></p> |
|
| 34 |
+ </div> |
|
| 35 |
+ </li> |
|
| 36 |
+ <% end %> |
|
| 37 |
+ </ul> |
|
| 38 |
+<% end %> |
|
| 39 |
+ |
|
| 40 |
+<% if @mission_control.length > 0 %> |
|
| 41 |
+ <div class="page-header"> |
|
| 42 |
+ <h1>Missions Control</h1> |
|
| 43 |
+ </div> |
|
| 44 |
+ <ul class="thumbnails"> |
|
| 45 |
+ <% @mission_control.each do |mission| %> |
|
| 46 |
+ <li class="span4"> |
|
| 47 |
+ <div class="thumbnail" style= "padding: 5px;"> |
|
| 48 |
+ <h3 style= "padding: 5px;"><%= link_to mission.title, mission_control_path(mission) %></h3> |
|
| 49 |
+ <p style= "padding: 5px; height: 50px;"><%= mission.description %></p> |
|
| 50 |
+ </div> |
|
| 51 |
+ </li> |
|
| 52 |
+ <% end %> |
|
| 53 |
+ </ul> |
|
| 54 |
+<% end%> |
@@ -28,6 +28,9 @@ |
||
| 28 | 28 |
<% @status_label = 'label-success'%> |
| 29 | 29 |
<% elsif agent.mission_agent_invites.last.status == 'denied' %> |
| 30 | 30 |
<% @status_label = 'label-important'%> |
| 31 |
+ <% elsif agent.mission_agent_invites.last.status == 'Completed' %> |
|
| 32 |
+ <% @status_label = 'label-success'%> |
|
| 33 |
+ <% @agent_status = 'closed'%> |
|
| 31 | 34 |
<% else%> |
| 32 | 35 |
<% @status_label = 'label-default'%> |
| 33 | 36 |
<% end %> |
@@ -64,16 +67,25 @@ |
||
| 64 | 67 |
</span> |
| 65 | 68 |
<div class="clearfix"></div> |
| 66 | 69 |
</div> |
| 67 |
- <div id="collapse_<%= agent.id %>" class="accordion-body collapse <% if @agent_status == 'missing' || @agent_status == 'empty' %> out <% else %> in <% end %>"> |
|
| 70 |
+ <div id="collapse_<%= agent.id %>" class="accordion-body collapse <% if @agent_status == 'missing' || @agent_status == 'empty' || @agent_status == 'closed' %> out <% else %> in <% end %>"> |
|
| 68 | 71 |
<div class="accordion-inner"> |
| 69 | 72 |
<div class="row-fluid"> |
| 70 | 73 |
<ul class="thumbnails"> |
| 71 | 74 |
<% @step = 1 %> |
| 72 |
- <% agent.mission_agent_steps.each do |step| %> |
|
| 75 |
+ <% agent.mission_agent_steps.order(:step => :asc).each do |step| %> |
|
| 73 | 76 |
<li class="span4"> |
| 74 | 77 |
<div class="thumbnail" style= "padding: 5px;"> |
| 75 |
- <h3 style= "padding: 5px;">Step <%= @step %></h3> |
|
| 78 |
+ <h3 style= "padding: 5px; margin-top: 0px;">Step <%= @step %> <%= render 'mission_agent_step_status', :step => step %></h3> |
|
| 76 | 79 |
<p style= "padding: 5px; height: 50px;"><%= step.description %></p> |
| 80 |
+ <% if step.status == 'Waiting Validation'%> |
|
| 81 |
+ <div class="well well-small" style="margin-bottom: 0px; text-align: center; height: 90px;"> |
|
| 82 |
+ <p style="height: 60px"><strong>Response:</strong> <%= step.proof %></p> |
|
| 83 |
+ <div style=" margin-top: 10px"> |
|
| 84 |
+ <%= link_to 'Invalidade', step_invalidate_check_path(step.id), :class => 'btn btn-danger btn-mini' %> |
|
| 85 |
+ <%= link_to 'Validade', step_validate_check_path(step.id), :class => 'btn btn-success btn-mini', :style => 'margin-right: 5px;' %> |
|
| 86 |
+ </div> |
|
| 87 |
+ </div> |
|
| 88 |
+ <% end %> |
|
| 77 | 89 |
</li> |
| 78 | 90 |
<% @step = @step + 1 %> |
| 79 | 91 |
<% end %> |
@@ -16,12 +16,14 @@ |
||
| 16 | 16 |
<ul class="thumbnails"> |
| 17 | 17 |
<% @step = 1 %> |
| 18 | 18 |
<% if @agent.length > 0 %> |
| 19 |
- <% @agent.first.mission_agent_steps.each do |step| %> |
|
| 19 |
+ <% @agent.first.mission_agent_steps.order(:step => :asc).each do |step| %> |
|
| 20 | 20 |
<li class="span4"> |
| 21 | 21 |
<div class="thumbnail" style= "padding: 5px;"> |
| 22 |
- <h3 style= "padding: 5px;">Step <%= @step %></h3> |
|
| 22 |
+ <h3 style= "padding: 5px;">Step <%= @step %> <%= render 'mission_agent_step_status', :step => step %></h3> |
|
| 23 | 23 |
<p style= "padding: 5px; height: 50px;"><%= step.description %></p> |
| 24 |
- <a href="#myModal<%= @step %>" role="button" class="btn btn-block btn-default" data-toggle="modal">Validate</a> |
|
| 24 |
+ <% if step.validated != true || step.completed != true %> |
|
| 25 |
+ <a href="#myModal<%= @step %>" role="button" class="btn btn-block btn-default" data-toggle="modal">Validate</a> |
|
| 26 |
+ <% end %> |
|
| 25 | 27 |
</li> |
| 26 | 28 |
<% @step = @step + 1 %> |
| 27 | 29 |
<% end %> |
@@ -29,7 +31,7 @@ |
||
| 29 | 31 |
</ul> |
| 30 | 32 |
|
| 31 | 33 |
<% @step = 1 %> |
| 32 |
-<% @agent.first.mission_agent_steps.each do |step| %> |
|
| 34 |
+<% @agent.first.mission_agent_steps.order(:step => :asc).each do |step| %> |
|
| 33 | 35 |
|
| 34 | 36 |
<!-- Modal --> |
| 35 | 37 |
<div id="myModal<%= @step %>" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> |
@@ -1,7 +1,6 @@ |
||
| 1 | 1 |
AvalancheGame::Application.routes.draw do |
| 2 | 2 |
get "start/about" |
| 3 | 3 |
get "agent/current_missions" |
| 4 |
- get "choose_missions" => "agent#choose_mission", :as => :mission_choose |
|
| 5 | 4 |
get "accept_mission/:id" => "agent#accept_mission", :as => :mission_agent_accept |
| 6 | 5 |
get "denie_mission/:id" => "agent#denie_mission", :as => :mission_agent_denie |
| 7 | 6 |
get "agent/:id" => "agent#agent_profile", :as => :agent_profile |
@@ -11,6 +10,8 @@ AvalancheGame::Application.routes.draw do |
||
| 11 | 10 |
get "mission_control/:id" => "missions#mission_control", :as => :mission_control |
| 12 | 11 |
get "mission_list" => "missions#list", :as => :mission_list |
| 13 | 12 |
patch "mission_agent_step" => "missions#validate_agent_step", :as => :mission_agent_step |
| 13 |
+ get "mission_agent_step_validate_check/:id" => "missions#mission_agent_step_validate_check", :as => :step_validate_check |
|
| 14 |
+ get "mission_agent_step_invalidate_check/:id" => "missions#mission_agent_step_invalidate_check", :as => :step_invalidate_check |
|
| 14 | 15 |
resources :missions |
| 15 | 16 |
|
| 16 | 17 |
devise_for :users, :skip => [:sessions, :passwords, :confirmations, :registrations] |
@@ -0,0 +1,7 @@ |
||
| 1 |
+class AddValidationToMissionAgentStep < ActiveRecord::Migration |
|
| 2 |
+ def change |
|
| 3 |
+ add_column :mission_agent_steps, :status, :string |
|
| 4 |
+ add_column :mission_agent_steps, :validated, :boolean |
|
| 5 |
+ add_reference :mission_agent_steps, :validated_by, index: true |
|
| 6 |
+ end |
|
| 7 |
+end |
@@ -11,7 +11,7 @@ |
||
| 11 | 11 |
# |
| 12 | 12 |
# It's strongly recommended that you check this file into your version control system. |
| 13 | 13 |
|
| 14 |
-ActiveRecord::Schema.define(version: 20140825202313) do |
|
| 14 |
+ActiveRecord::Schema.define(version: 20140829041611) do |
|
| 15 | 15 |
|
| 16 | 16 |
# These are extensions that must be enabled in order to support this database |
| 17 | 17 |
enable_extension "plpgsql" |
@@ -46,9 +46,13 @@ ActiveRecord::Schema.define(version: 20140825202313) do |
||
| 46 | 46 |
t.string "proof" |
| 47 | 47 |
t.datetime "created_at" |
| 48 | 48 |
t.datetime "updated_at" |
| 49 |
+ t.string "status" |
|
| 50 |
+ t.boolean "validated" |
|
| 51 |
+ t.integer "validated_by_id" |
|
| 49 | 52 |
end |
| 50 | 53 |
|
| 51 | 54 |
add_index "mission_agent_steps", ["mission_agent_id"], name: "index_mission_agent_steps_on_mission_agent_id", using: :btree |
| 55 |
+ add_index "mission_agent_steps", ["validated_by_id"], name: "index_mission_agent_steps_on_validated_by_id", using: :btree |
|
| 52 | 56 |
|
| 53 | 57 |
create_table "mission_agents", force: true do |t| |
| 54 | 58 |
t.integer "mission_id" |