Merge branch 'develop' into print_css_for_dossier_show

# Conflicts:
#	app/views/dossiers/_messagerie.html.haml
This commit is contained in:
Xavier J 2017-02-07 17:38:02 +01:00
commit 7cd08ec3f9
10 changed files with 111 additions and 50 deletions

View file

@ -42,20 +42,20 @@ class CommentairesController < ApplicationController
flash.alert = "Veuillez rédiger un message ou ajouter une pièce jointe."
end
notify_user_with_mail(@commentaire) if saved
if is_gestionnaire?
unless current_gestionnaire.follow? @commentaire.dossier
current_gestionnaire.toggle_follow_dossier @commentaire.dossier
end
NotificationMailer.new_answer(@commentaire.dossier).deliver_now! if saved
redirect_to url_for(controller: 'backoffice/dossiers', action: :show, id: params['dossier_id'])
else
if current_user.email != @commentaire.dossier.user.email
invite = Invite.where(dossier: @commentaire.dossier, email: current_user.email).first
redirect_to url_for(controller: 'users/dossiers/invites', action: :show, id: invite.id)
else
redirect_to url_for(controller: :recapitulatif, action: :show, dossier_id: params['dossier_id'])
redirect_to users_dossier_recapitulatif_path(params['dossier_id'])
end
end
end
@ -63,4 +63,10 @@ class CommentairesController < ApplicationController
def is_gestionnaire?
false
end
private
def notify_user_with_mail(commentaire)
NotificationMailer.new_answer(commentaire.dossier).deliver_now! unless current_user.try(:email) == commentaire.dossier.user.email
end
end

View file

@ -1,14 +0,0 @@
%div.commentaire
.row
%div.col-lg-12.col-md-12.col-sm-12.col-xs-12.comment-header
= commentaire.header
.row
%div.col-lg-12.col-md-12.col-sm-12.col-xs-12.content
= commentaire.body.html_safe
- if file = commentaire.piece_justificative
.row
%div.col-lg-12.col-md-12.col-sm-12.col-xs-12.file
= link_to file.content_url, class: 'link', target: '_blank' do
%span.fa.fa-file
%div
= file.original_filename

View file

@ -7,25 +7,25 @@
MESSAGERIE
.col-xs-2.count
- message_count = dossier_facade.commentaires.count
= (message_count == 1) ? "1 message" : "#{message_count} messages"
= pluralize(@facade.commentaires.count, "message")
.alert.alert-info
Cette messagerie permet d'échanger entre le demandeur et le service instructeur.
.body.display-block-on-print
- if dossier_facade.commentaires.any?
.commentaires
= render partial: 'dossiers/commentaire', collection: dossier_facade.commentaires.object.sort
= render partial: 'dossiers/commentaires/commentaire', collection: dossier_facade.commentaires.object.sort
.split-hr
#new-commentaire.hidden-print
= form_tag(url_for({ controller: 'commentaires', action: :create, dossier_id: dossier_facade.dossier.id, champ_id: dossier_facade.champ_id }), class: 'form-inline', method: 'POST', multipart: true) do
= render partial: 'dossiers/commentaires/form', locals: { dossier_facade: @facade }
%textarea.form-control{id: 'texte_commentaire', class: 'wysihtml5', name: 'texte_commentaire', style: 'width: 100%; margin-bottom:2%', rows: '5', placeholder:"Commentaire"}
.row
.col-md-6
%h4.text-primary{style: 'margin-top: 0px'} Ajouter un fichier
= file_field_tag "piece_justificative[content]", accept: PieceJustificative.accept_format, style: 'float: left; margin-left: 20px'
.last-commentaire.clearfix
.col-md-6
%input#save-message.form-control.btn.btn-send{ type: 'submit', value: 'ENVOYER' }
@ -34,14 +34,7 @@
- if last_comment = dossier_facade.commentaires.first
%div
DERNIER MESSAGE
= render partial: 'dossiers/commentaire', object: last_comment
-# = "DERNIER MESSAGE (#{last_comment.header})"
-# .content
-# = last_comment.body.html_safe
-# - if file = last_comment.piece_justificative
-# .file
-# = link_to file.content_url, class: 'link', target: '_blank' do
-# %span.fa.fa-file
-# = file.original_filename
= render partial: 'dossiers/commentaires/commentaire', object: last_comment
#open-message.new-action
ENVOYER UN MESSAGE

View file

@ -0,0 +1,11 @@
%div.commentaire
.comment-header
= commentaire.header
.content
= commentaire.body.html_safe
- if file = commentaire.piece_justificative
.file
= link_to file.content_url, class: 'link', target: '_blank' do
%span.fa.fa-file
%div
= file.original_filename

View file

@ -0,0 +1,11 @@
= form_tag(url_for({ controller: 'commentaires', action: :create, dossier_id: dossier_facade.dossier.id, champ_id: dossier_facade.champ_id }), class: 'form-inline', method: 'POST', multipart: true) do
%textarea.form-control{id: 'texte_commentaire', class: 'wysihtml5', name: 'texte_commentaire', style: 'width: 100%; margin-bottom:2%', rows: '5', placeholder:"Commentaire"}
.row
.col-md-6
%h4.text-primary{style: 'margin-top: 0px'} Ajouter un fichier
= file_field_tag "piece_justificative[content]", accept: PieceJustificative.accept_format, style: 'float: left; margin-left: 20px'
.col-md-6
%input#save-message.form-control.btn.btn-send{ type: 'submit', value: 'ENVOYER' }

View file

@ -8,31 +8,29 @@
-if dossiers_list_facade.liste == 'brouillon'
Les dossiers présents dans cette liste
%b
n'ont pas encore été soumis à votre administration.
n'ont pas encore été soumis aux services instructeurs.
Ils ne sont visibles que par vous.
-elsif dossiers_list_facade.liste == 'nouveaux'
Les dossiers présents dans cette liste
%b
n'ont pas encore été ouverts
par votre accompagnteur. Une notification vous sera envoyée quand votre demande aura été étudiée.
par les services instructeurs. Une notification vous sera envoyée quand votre demande aura été étudiée.
-elsif dossiers_list_facade.liste == 'a_traiter'
Les dossiers présents dans cette liste sont
%b
visibles par l'administration.
visibles par les services instructeurs.
%br
Ces dossiers ne sont pas encore figés et peuvent être modifiés à souhait.
%br
Une fois que le dossier aura été considéré comme complet par votre accompagnateur, celui-ci passera à l'étape suivante de dépôt.
-elsif dossiers_list_facade.liste == 'en_attente'
Les dossiers présents dans cette liste sont
%b
en cours de relecture par votre accompagnateur.
en cours de relecture par les services instructeurs.
Il reviendra vers vous si des informations ou documents sont manquants pour le futur examen de votre dossier.
-elsif dossiers_list_facade.liste == 'valides'
Les dossiers présents dans cette liste ont été
%b
relus et considérés comme complets
pour examen par votre accompagnateur. Ceux-ci ne peuvent maintenant plus être modifiés. Il faut que vous procédiez à leur dépôt afin qu'une décision finale soit rendue.
pour examen par les services instructeurs. Ceux-ci ne peuvent maintenant plus être modifiés. Il faut que vous procédiez à leur dépôt afin qu'une décision finale soit rendue.
-elsif dossiers_list_facade.liste == 'en_instruction'
Les dossiers présents dans cette liste sont
%b
@ -40,9 +38,9 @@
ou
%b
en cours d'examen
par l'administration compétente. Une notification vous sera envoyée une fois qu'une décision aura été rendue.
par les services instructeurs. Une notification vous sera envoyée une fois qu'une décision aura été rendue.
-elsif dossiers_list_facade.liste == 'termine'
Les dossiers présents dans cette liste sont ceux qui ont été instruits par l'administration et
Les dossiers présents dans cette liste sont ceux qui ont été instruits et pour lesquels
%b
une décision finale a été rendue.
Ils peuvent posséder trois états différents : Accepté, Refusé ou Sans Suite.
@ -50,4 +48,4 @@
Les dossiers présents dans cette liste sont ceux
%b
auxquels vous avez été invités
à participer afin d'émettre un avis et/ou à fournir des documents complémentaires.
à participer afin d'émettre un avis ou de fournir des documents complémentaires.

View file

@ -21,3 +21,7 @@ end
# ActiveSupport::Inflector.inflections(:en) do |inflect|
# inflect.acronym 'RESTful'
# end
ActiveSupport::Inflector.inflections(:fr) do |inflect|
inflect.plural(/$/, 's')
inflect.plural(/(hib|ch|bij|caill|p|gen|jouj)ou$/i, '\1oux')
end

View file

@ -14,7 +14,7 @@ describe Users::CommentairesController, type: :controller do
context 'création correct d\'un commentaire' do
subject do
sign_in dossier.user
post :create, params: {dossier_id: dossier_id, texte_commentaire: texte_commentaire}
post :create, params: { dossier_id: dossier_id, texte_commentaire: texte_commentaire }
end
it 'depuis la page récapitulatif' do
@ -34,12 +34,12 @@ describe Users::CommentairesController, type: :controller do
end
end
context 'when document is upload whith a commentaire', vcr: {cassette_name: 'controllers_sers_commentaires_controller_upload_doc'} do
context 'when document is upload whith a commentaire', vcr: { cassette_name: 'controllers_sers_commentaires_controller_upload_doc' } do
let(:document_upload) { Rack::Test::UploadedFile.new("./spec/support/files/piece_justificative_0.pdf", 'application/pdf') }
subject do
sign_in dossier.user
post :create, params: {dossier_id: dossier_id, texte_commentaire: texte_commentaire, piece_justificative: {content: document_upload}}
post :create, params: { dossier_id: dossier_id, texte_commentaire: texte_commentaire, piece_justificative: { content: document_upload } }
end
it 'create a new piece justificative' do
@ -88,7 +88,7 @@ describe Users::CommentairesController, type: :controller do
sign_in dossier.user
dossier.replied!
post :create, params: {dossier_id: dossier_id, texte_commentaire: texte_commentaire}
post :create, params: { dossier_id: dossier_id, texte_commentaire: texte_commentaire }
dossier.reload
end

View file

@ -5,19 +5,67 @@ describe Users::Dossiers::CommentairesController, type: :controller do
let(:texte_commentaire) { 'Commentaire de test' }
describe '#POST create' do
subject {
post :create, params:{dossier_id: dossier.id, texte_commentaire: texte_commentaire}
dossier.reload
}
context 'when invite is connected' do
let!(:invite) { create(:invite, :with_user, dossier: dossier) }
before do
sign_in invite.user
dossier.replied!
post :create, params:{dossier_id: dossier.id, texte_commentaire: texte_commentaire}
dossier.reload
end
it { is_expected.to redirect_to users_dossiers_invite_path(invite.id) }
it { expect(dossier.state).to eq 'replied' }
it do
subject
is_expected.to redirect_to users_dossiers_invite_path(invite.id)
expect(dossier.state).to eq 'replied'
end
it 'should notify user' do
expect(NotificationMailer).to receive(:new_answer).and_return(NotificationMailer)
expect(NotificationMailer).to receive(:deliver_now!)
subject
end
end
context 'when user is connected' do
before do
sign_in dossier.user
end
it 'do not send a mail to notify user' do
expect(NotificationMailer).to_not receive(:new_answer)
subject
end
end
end
describe '#notify_user_with_mail' do
let(:commentaire){create(:commentaire)}
context 'when usager is writing a commentaire on dossier' do
before { sign_in commentaire.dossier.user }
it {
expect(NotificationMailer).to_not receive(:new_answer)
subject.send(:notify_user_with_mail, commentaire)
}
end
context 'when anybody else but usager is writing a commentaire' do
before { sign_in create(:user, email: 'administrateur@test.fr') }
it {
expect(NotificationMailer).to receive(:new_answer).and_return(NotificationMailer)
expect(NotificationMailer).to receive(:deliver_now!)
subject.send(:notify_user_with_mail, commentaire)
}
end
end
end

View file

@ -46,5 +46,9 @@ FactoryGirl.define do
dossier.cerfa << create(:cerfa)
end
end
trait :replied do
state 'replied'
end
end
end