Add archive button on recapitulative page user dossier

This commit is contained in:
Xavier J 2015-11-27 13:56:54 +01:00
parent b541e74422
commit a79ecbba6d
9 changed files with 89 additions and 35 deletions

View file

@ -9,3 +9,9 @@ h5 span {
#insee_infogreffe { #insee_infogreffe {
font-size:17px; font-size:17px;
} }
#recap_dossier{
#validate_button {
float: right;
}
}

View file

@ -78,6 +78,18 @@ class Users::DossiersController < UsersController
end end
end end
def archive
@dossier = current_user.dossiers.find(params[:dossier_id])
@dossier.update_attributes({archived: true})
flash.notice = 'Dossier archivé'
redirect_to users_dossiers_path
rescue ActiveRecord::RecordNotFound
flash.alert = 'Dossier inéxistant'
redirect_to users_dossiers_path
end
private private
def update_params def update_params

View file

@ -1,22 +1,32 @@
.row#recap_dossier .row#recap_dossier
.col-md-2.col-lg-2 .col-md-4.col-lg-4
%h2 .row
='Récapitulatif' .col-md-6.col-lg-6
%h2 Récapitulatif
.col-md-6.col-lg-6
= form_tag "/users/dossiers/#{@dossier.id}/archive", style:'margin-top:21px', action: :archive, method: :put do
%button#archive.btn.btn-sm.btn-default.text-info{type: :button}
%i.fa.fa-eraser
Archiver
#confirm
%button#valid.btn.btn-sm.btn-success{type: :submit}
%i.fa.fa-check
Valider
%button#cancel.btn.btn-sm.btn-danger{type: :button}
%i.fa.fa-remove
Annuler
.col-md-7.col-lg-7 .col-md-5.col-lg-5
.col-md-3.col-lg-3 .col-md-3.col-lg-3
%h2#dossier_id{:class => 'text-info', :style => 'text-align:right; margin-bottom:15px'} %h2#dossier_id{:class => 'text-info', :style => 'text-align:right; margin-bottom:15px'}
= "Dossier n°#{@dossier.id}" = "Dossier n°#{@dossier.id}"
- unless gestionnaire_signed_in? - unless gestionnaire_signed_in?
-if @dossier.draft? -if @dossier.validated?
= form_tag(url_for({controller: :recapitulatif, action: :initiate, dossier_id: @dossier.id}), class: 'form-inline', method: 'POST') do %br
%button#action_button.btn.btn-success = form_tag(url_for({controller: :recapitulatif, action: :submit, dossier_id: @dossier.id}), method: 'POST') do
= 'Soumettre mon dossier' %button#validate_button.btn.btn-success
-elsif @dossier.validated?
= form_tag(url_for({controller: :recapitulatif, action: :submit, dossier_id: @dossier.id}), class: 'form-inline', method: 'POST') do
%button#action_button.btn.btn-success
= 'Déposer mon dossier' = 'Déposer mon dossier'
-else -else
%h3{:class => 'text-success', :style => 'text-align:right'} %h3{:class => 'text-success', :style => 'text-align:right'}

View file

@ -37,6 +37,8 @@ Rails.application.routes.draw do
get '/carte' => 'carte#show' get '/carte' => 'carte#show'
post '/carte' => 'carte#save' post '/carte' => 'carte#save'
put '/archive' => 'dossiers#archive'
end end
resource :dossiers resource :dossiers
end end

View file

@ -0,0 +1,5 @@
class AddArchivedToDossier < ActiveRecord::Migration
def change
add_column :dossiers, :archived, :boolean, default: false
end
end

View file

@ -11,7 +11,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20151126153425) do ActiveRecord::Schema.define(version: 20151127103412) do
# These are extensions that must be enabled in order to support this database # These are extensions that must be enabled in order to support this database
enable_extension "plpgsql" enable_extension "plpgsql"
@ -67,6 +67,7 @@ ActiveRecord::Schema.define(version: 20151126153425) do
t.string "state" t.string "state"
t.integer "user_id" t.integer "user_id"
t.text "json_latlngs" t.text "json_latlngs"
t.boolean "archived", default: false
end end
add_index "dossiers", ["procedure_id"], name: "index_dossiers_on_procedure_id", using: :btree add_index "dossiers", ["procedure_id"], name: "index_dossiers_on_procedure_id", using: :btree

View file

@ -2,6 +2,7 @@ require 'spec_helper'
describe Users::DossiersController, type: :controller do describe Users::DossiersController, type: :controller do
let(:user) { create(:user) } let(:user) { create(:user) }
describe '.index' do describe '.index' do
let!(:dossier) { create(:dossier, :with_entreprise, :with_procedure, user: user) } let!(:dossier) { create(:dossier, :with_entreprise, :with_procedure, user: user) }
subject { get :index } subject { get :index }
@ -17,7 +18,6 @@ describe Users::DossiersController, type: :controller do
end end
end end
let(:use_api_carto) { false } let(:use_api_carto) { false }
let(:procedure) { create(:procedure, use_api_carto: use_api_carto) } let(:procedure) { create(:procedure, use_api_carto: use_api_carto) }
let(:dossier) { create(:dossier, :with_entreprise, user: user, procedure: procedure) } let(:dossier) { create(:dossier, :with_entreprise, user: user, procedure: procedure) }
@ -138,7 +138,7 @@ describe Users::DossiersController, type: :controller do
describe 'PUT #update' do describe 'PUT #update' do
before do before do
sign_in dossier.user sign_in dossier.user
put :update, id: dossier_id, dossier: { autorisation_donnees: autorisation_donnees } put :update, id: dossier_id, dossier: {autorisation_donnees: autorisation_donnees}
end end
context 'when Checkbox is checked' do context 'when Checkbox is checked' do
let(:autorisation_donnees) { '1' } let(:autorisation_donnees) { '1' }
@ -153,7 +153,7 @@ describe Users::DossiersController, type: :controller do
let(:use_api_carto) { true } let(:use_api_carto) { true }
before do before do
put :update, id: dossier_id, dossier: { autorisation_donnees: autorisation_donnees } put :update, id: dossier_id, dossier: {autorisation_donnees: autorisation_donnees}
end end
it 'redirects to carte' do it 'redirects to carte' do
expect(response).to redirect_to(controller: :carte, action: :show, dossier_id: dossier.id) expect(response).to redirect_to(controller: :carte, action: :show, dossier_id: dossier.id)
@ -178,4 +178,34 @@ describe Users::DossiersController, type: :controller do
end end
end end
end end
describe 'PUT #archive' do
let(:dossier) { create(:dossier, user: user) }
context 'when user is the owner of the file' do
before do
sign_in user
put :archive, dossier_id: dossier.id
dossier.reload
end
it { expect(dossier.archived).to be_truthy }
it { expect(response).to redirect_to :users_dossiers }
it { expect(flash[:notice]).to have_content 'Dossier archivé' }
end
context 'when user is not the owner of the file' do
let(:user_2) { create(:user) }
before do
sign_in user_2
put :archive, dossier_id: dossier.id
procedure.reload
end
it { expect(response).to redirect_to :users_dossiers }
it { expect(flash[:alert]).to have_content 'Dossier inéxistant' }
end
end
end end

View file

@ -5,8 +5,8 @@ describe 'users/dossiers/index.html.haml', type: :view do
describe 'list dossiers' do describe 'list dossiers' do
let(:user) { create(:user) } let(:user) { create(:user) }
let!(:dossier1) { create(:dossier, user: user, state: 'initiated') } let!(:dossier1) { create(:dossier, :with_procedure, user: user, state: 'initiated') }
let!(:dossier2) { create(:dossier, user: user, state: 'initiated') } let!(:dossier2) { create(:dossier, :with_procedure, user: user, state: 'initiated') }
let(:dossiers) { user.dossiers.where("state NOT IN ('draft')").order(updated_at: 'DESC') } let(:dossiers) { user.dossiers.where("state NOT IN ('draft')").order(updated_at: 'DESC') }

View file

@ -53,18 +53,6 @@ describe 'users/recapitulatif/show.html.haml', type: :view do
end end
context 'buttons to change dossier state' do context 'buttons to change dossier state' do
context 'when dossier state is draft' do
before do
dossier.draft!
render
end
it 'button Soumettre mon dossier est present' do
expect(rendered).to have_css('#action_button')
expect(rendered).to have_content('Soumettre mon dossier')
end
end
context 'when dossier state is initiated' do context 'when dossier state is initiated' do
before do before do
dossier.initiated! dossier.initiated!
@ -100,7 +88,7 @@ describe 'users/recapitulatif/show.html.haml', type: :view do
end end
it 'button Déposer mon dossier est present' do it 'button Déposer mon dossier est present' do
expect(rendered).to have_css('#action_button') expect(rendered).to have_css('#validate_button')
expect(rendered).to have_content('Déposer mon dossier') expect(rendered).to have_content('Déposer mon dossier')
end end