Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Met à jour les cartes sollicitation #3745

Merged
merged 6 commits into from
Jan 14, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 17 additions & 7 deletions app/assets/stylesheets/components/cards.sass
Original file line number Diff line number Diff line change
Expand Up @@ -101,16 +101,23 @@

// Carte solicitation =================================
.card-solicitation
.subtitle
color: $grey-dark
font-size: 0.875rem
h2
font-size: 1.25rem
line-height: 1.5rem
.card__title
flex: 1 1 auto
.subtitle
color: $grey-dark
font-size: 0.875rem
h2
font-size: 1.25rem
line-height: 1.5rem
margin-bottom: 0
.fr-card__content
padding: 1rem 2rem
.fr-card__body
margin-bottom: 0
.card__info
display: flex
justify-content: space-between
margin-bottom: 1rem
.card__fields
margin-right: 1.5rem
.card__description
Expand Down Expand Up @@ -140,7 +147,7 @@
display: flex
justify-content: flex-end
align-items: center
flex: 0 1 50%
flex: 0 1 45%
.modify-badges
cursor: pointer
font-size: 1.5rem
Expand All @@ -151,6 +158,9 @@
.badge-select
flex: 1 1 auto
.badges-list
display: flex
flex-wrap: wrap
justify-content: flex-end
.label
margin: 2px
.dropdown
Expand Down
13 changes: 8 additions & 5 deletions app/controllers/conseiller/solicitations_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,14 @@ def index
end

def processed
@solicitations = ordered_solicitations(:processed)
@solicitations = ordered_solicitations(:processed, :desc)
@facilities = get_and_format_facilities
@status = t('solicitations.header.processed')
render :index
end

def canceled
@solicitations = ordered_solicitations(:canceled)
@solicitations = ordered_solicitations(:canceled, :desc)
@facilities = get_and_format_facilities
@status = t('solicitations.header.canceled')
render :index
Expand Down Expand Up @@ -50,7 +50,10 @@ def update_status
if @solicitation.valid?
done = Solicitation.human_attribute_value(:status, status, context: :done, count: 1)
flash.notice = "#{@solicitation} #{done}"
render 'remove'
respond_to do |format|
format.turbo_stream { render turbo_stream: turbo_stream.remove(@solicitation) }
format.html { redirect_back fallback_location: conseiller_solicitations_path }
end
else
flash.alert = @solicitation.errors.full_messages.to_sentence
redirect_to [:conseiller, @solicitation]
Expand Down Expand Up @@ -89,13 +92,13 @@ def mark_as_spam

private

def ordered_solicitations(status)
def ordered_solicitations(status, order = :asc)
Solicitation
.includes(:badge_badgeables, :badges, :landing, :diagnosis, :facility, feedbacks: { user: :antenne },
landing_subject: :subject, institution: :logo, subject_answers: :subject_question)
.where(status: status)
.apply_filters(index_search_params)
.order(:completed_at)
.order(completed_at: order)
.page(params[:page])
end

Expand Down
15 changes: 14 additions & 1 deletion app/controllers/emails/solicitations_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,27 @@ def send_generic_email
if processor.valid?
processor.send_email
flash.notice = t('emails.sent')
render_turbo_stream_or_html
else
flash.alert = t('emails.not_sent')
render_turbo_stream_or_html(status: :unprocessable_entity)
end
redirect_to conseiller_solicitations_path(query: params[:query])
end

private

def render_turbo_stream_or_html(status: :ok)
respond_to do |format|
format.turbo_stream do
render turbo_stream: [
turbo_stream.remove(@solicitation),
turbo_stream.append('flash', partial: 'shared/flashes', locals: { flash: flash })
], status: status, layout: false
end
format.html { redirect_to conseiller_solicitations_path(query: params[:query]) }
end
end

def authorize_index_solicitation
authorize Solicitation, :index?
end
Expand Down
38 changes: 17 additions & 21 deletions app/helpers/solicitation_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,17 @@ def status_action_link(solicitation, new_status, classes = %w[])
path = update_status_conseiller_solicitation_path(solicitation, status: new_status)
classes += STATUS_ACTION_COLORS[new_status.to_sym]
tag.li class: 'fr-menu__item' do
link_to name, path, method: :post, remote: true, class: classes.join(' ')
link_to name, path, method: :post, class: classes.join(' ')
end
end

def subject_button(solicitation, classes = %[])
def subject_link(solicitation)
if solicitation.diagnosis.present? && solicitation.diagnosis.needs.present?
button_for_editable_subject(solicitation.diagnosis.needs.first, classes)
link_for_editable_subject(solicitation.diagnosis.needs.first)
elsif solicitation.landing_subject.present?
solicitation.landing_subject.title
else
button_for_non_editable_subject(solicitation, classes)
I18n.t('helpers.solicitation_number', id: solicitation.id)
end
end

Expand All @@ -52,20 +54,14 @@ def link_to_diagnosis(diagnosis)
t('helpers.solicitation.analysis_in_progress', step: diagnosis.human_attribute_value(:step))
end

link_to text, [:conseiller, diagnosis], class: 'button'
end

def display_region(region, territory_params)
# display region if there is no region filter
return unless ((territory_params.present? && (territory_params == 'uncategorisable')) || territory_params.blank?) && region.present?
tag.li(class: 'item') do
t('helpers.solicitation.localisation_html', region: region.name)
end
link_to text, [:conseiller, diagnosis], class: 'button', 'data-turbo': false
end

def display_solicitation_attribute(solicitation, attribute)
if attribute == :provenance_detail && solicitation.campaign == 'entreprendre'
link_to solicitation.send(attribute), partner_url(solicitation, full: true), title: "#{to_new_window_title(t('needs.show.origin_source_title'))}", target: '_blank', rel: 'noopener'
link_to solicitation.send(attribute), partner_url(solicitation, full: true), title: "#{to_new_window_title(t('needs.show.origin_source_title'))}", target: '_blank', rel: 'noopener', data: { turbo: false }
elsif attribute == :siret
link_to(solicitation.normalized_siret, show_with_siret_companies_path(solicitation.siret), data: { turbo: false })
else
solicitation.send(attribute)
end
Expand All @@ -89,14 +85,14 @@ def partner_url(solicitation, full: false)

private

def button_for_editable_subject(need, classes)
title = t('helpers.solicitation.modify_subject', subject: need.subject)
def link_for_editable_subject(need)
title = t('helpers.solicitation.modify_subject')
path = needs_conseiller_diagnosis_path(need.diagnosis)
link_to need.subject.label, path, class: classes + ' fr-icon-settings-5-fill fr-btn--icon-right ', title: title
end

def button_for_non_editable_subject(solicitation, classes)
tag.button(class: classes, disabled: 'disabled') { solicitation.landing_subject.title }
aria_describedby = "tooltip-#{need.id}"
tag.div do
concat(link_to need.subject.label, path, title: title, 'aria-describedby': aria_describedby, 'data-turbo': false)
concat(tag.span title, class: 'fr-tooltip fr-placement', id: "tooltip-#{need.id}", role: 'tooltip', 'aria-hidden': true)
end
end

def entreprendre_url(solicitation, full: false)
Expand Down
2 changes: 1 addition & 1 deletion app/models/solicitation.rb
Original file line number Diff line number Diff line change
Expand Up @@ -664,7 +664,7 @@ def to_s
end

def display_attributes
%i[normalized_phone_number institution requested_help_amount location provenance_title provenance_detail relaunch]
%i[full_name email siret provenance_detail cooperation]
end

def normalized_siret
Expand Down
4 changes: 2 additions & 2 deletions app/views/conseiller/solicitations/_retry_diagnosis.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
%span.ri-arrow-down-s-line.fr-ml-1w{ 'aria-hidden': 'true' }
%ul.dropdown-content.fr-menu__list
%li.fr-menu__item
= link_to prepare_diagnosis_conseiller_solicitation_path(solicitation), class: 'fr-nav__link', method: :post do
= link_to prepare_diagnosis_conseiller_solicitation_path(solicitation), class: 'fr-nav__link', method: :post, 'data-turbo': false do
= t('.start_auto_diagnosis')
%span.ri-arrow-right-s-line.fr-ml-1w{ 'aria-hidden': 'true' }
%li.fr-menu__item
= link_to new_conseiller_diagnosis_path(solicitation: solicitation.id), class: 'fr-nav__link' do
= link_to new_conseiller_diagnosis_path(solicitation: solicitation.id), class: 'fr-nav__link', 'data-turbo': false do
= t('.start_manual_diagnosis')
%span.ri-arrow-right-s-line.fr-ml-1w{ 'aria-hidden': 'true' }
99 changes: 42 additions & 57 deletions app/views/conseiller/solicitations/_solicitation.haml
Original file line number Diff line number Diff line change
@@ -1,35 +1,12 @@
.card-solicitation.fr-my-4w.card{ id: solicitation.id }
.card__header
.card__title
%h2= [solicitation.to_s, solicitation.full_name].join(' - ')
%span.subtitle= I18n.l(solicitation.completed_at, format: :long)
= render 'solicitation_badges', solicitation: solicitation
.fr-card__body.fr-text--sm
.fr-card__content
.card__info
%ul.card__fields.list-unstyled.fr-p-0
- if solicitation.siret.present?
%li.item.fr-p-0
= t('.siret')
%strong= link_to(solicitation.normalized_siret, show_with_siret_companies_path(solicitation.siret), data: { turbo: false })
%li.item.fr-p-0
= t('.email')
%strong= mail_to(solicitation.email, solicitation.email, target: '_blank')
- solicitation.display_attributes.each do |attribute|
- if solicitation.send(attribute).present?
%li.item.fr-p-0
= Solicitation.human_attribute_name(attribute) + ' : '
%strong= display_solicitation_attribute(solicitation, attribute)
- if solicitation.landing.present?
%li.item.fr-p-0
= t('.source')
%strong= link_to solicitation.landing.slug, landing_path(solicitation.landing)
- if solicitation.landing_subject.present?
%li.item.fr-p-0
= t('.landing_subjects')
= subject_button(solicitation, "fr-btn fr-btn--secondary fr-btn--sm")
= display_region(solicitation.region, params[:territory])

= turbo_frame_tag solicitation do
.card-solicitation.fr-my-4w.card
.card__header
.card__title
%h2= subject_link(solicitation)
%span.subtitle= I18n.l(solicitation.completed_at, format: :long)
= render 'solicitation_badges', solicitation: solicitation
.fr-card__body.fr-text--sm
.fr-card__content
.card__meta
%ul.fr-badge-group.meta__warnings
- if solicitation.facility&.all_nature_activites&.any?
Expand Down Expand Up @@ -60,30 +37,38 @@
= t('.not_sas_html')
%span.fr-tooltip.fr-placement{ 'aria-hidden': "true", role: 'tooltip', id: "tooltip-not-sas-#{solicitation.id}" }
= t('.not_sas_explanation')
- if facilities[solicitation.id].present?
.meta__items
.item= t('.needs_historic')
- facilities[solicitation.id].each do |facility|
= link_to facility[:company_name], needs_company_path(facility[:id])
- if solicitation.cooperation.present?
.logo-institution= display_logo(name: solicitation.cooperation.logo&.filename, path: "cooperations/", extra_params: { class: 'institution-logo' })
.card__description
.card__description__label= t('.description')
.card__description__content.break-word
= simple_format(solicitation.description)
- if solicitation.subject_answers.any?
%ul
- solicitation.subject_answers.each do |answer|
- answer_label = I18n.t(answer.filter_value, scope: [:activerecord, :attributes, :subject_questions, answer.key],
default: I18n.t(answer.filter_value, scope: [:boolean, :text]))
%li
= question_label(answer.key, :short)
%strong= answer_label

.card__description
.card__description__content.break-word
= simple_format(solicitation.description)
- if solicitation.subject_answers.any?
%ul
- solicitation.subject_answers.each do |answer|
- answer_label = I18n.t(answer.filter_value, scope: [:activerecord, :attributes, :subject_questions, answer.key],
default: I18n.t(answer.filter_value, scope: [:boolean, :text]))
%li
= question_label(answer.key, :short)
%strong= answer_label

.card__info
%ul.card__fields.list-unstyled.fr-p-0
- solicitation.display_attributes.each do |attribute|
- if solicitation.send(attribute).present?
%li.item.fr-p-0
= Solicitation.human_attribute_name(attribute) + ' : '
= display_solicitation_attribute(solicitation, attribute)
.card__meta
%ul.fr-badge-group.meta__warnings
- if facilities[solicitation.id].present?
.meta__items
.item= t('.needs_historic')
- facilities[solicitation.id].each do |facility|
= link_to facility[:company_name], needs_company_path(facility[:id]), 'data-turbo': false

.card__feedbacks
%div{ id: "display-feedbacks-#{solicitation.id}" }
= render partial: 'feedbacks/feedback', collection: solicitation.feedbacks
= render 'feedbacks/form', feedback: solicitation.feedbacks.new(category: :solicitation)
.card__footer
= render 'solicitation_actions', solicitation: solicitation
.card__feedbacks
%hr
%div{ id: "display-feedbacks-#{solicitation.id}" }
= render partial: 'feedbacks/feedback', collection: solicitation.feedbacks
= render 'feedbacks/form', feedback: solicitation.feedbacks.new(category: :solicitation)
.card__footer
= render 'solicitation_actions', solicitation: solicitation
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@
= render 'retry_diagnosis', solicitation: solicitation
- else
.actions.success-main-525-bg
= link_to prepare_diagnosis_conseiller_solicitation_path(solicitation), class: 'button', method: :post do
= link_to prepare_diagnosis_conseiller_solicitation_path(solicitation), class: 'button', method: :post, 'data-turbo': false do
%span.ri-rocket-2-fill.fr-mr-1w{ 'aria-hidden': 'true' }
= t('.start_auto_diagnosis')
%span.ri-arrow-right-s-line.fr-ml-1w{ 'aria-hidden': 'true' }
- else
.actions.success-main-525-bg
= link_to new_conseiller_diagnosis_path(solicitation: solicitation.id), class: 'button' do
= link_to new_conseiller_diagnosis_path(solicitation: solicitation.id), class: 'button', 'data-turbo': false do
= t('.start_diagnosis')
%span.ri-arrow-right-s-line.fr-ml-1w{ 'aria-hidden': 'true' }

Expand Down Expand Up @@ -46,7 +46,7 @@
%li.fr-menu__item
= link_to t(email_type, scope: 'solicitations.solicitation_actions.emails'),
emails_solicitation_generic_path(email_type: email_type, id: solicitation.id, query: params[:query]),
method: :post, class: 'fr-nav__link'
method: :post, class: 'fr-nav__link', 'data-turbo': false

.dropdown.actions.grey-medium-bg
%button.button
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@
{},
{ multiple: true, class: 'badge-select', 'data-badges-target': 'select', id: "solicitation-#{solicitation.id}-select-badges" })

= f.submit t('ok'), class: 'fr-btn fr-btn--sm'
= f.submit t('ok'), class: 'fr-btn fr-btn--sm', 'data-turbo': false
%button.ri-price-tag-3-line.fr-mr-1w.modify-badges{ data: { action: 'click->badges#toggleForm', id: "#{solicitation.id}" }, title: t('.add_remove_badges') }
6 changes: 0 additions & 6 deletions app/views/conseiller/solicitations/remove.js.haml

This file was deleted.

2 changes: 1 addition & 1 deletion app/views/feedbacks/_form.html.haml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
= form_with model: feedback, data: { controller: "feedback-form" },
= form_with model: feedback, data: { controller: "feedback-form", turbo: false },
class: "feedbacks-form feedback-form-#{feedback.feedbackable_id} #{'from_alert_box' if local_assigns[:from_alert_box].present?} " do |form|
= form.hidden_field :feedbackable_id, id: "feedbackable-id-#{feedback.feedbackable_id}"
= form.hidden_field :feedbackable_type, id: "feedbackable-type-#{feedback.feedbackable_id}"
Expand Down
5 changes: 2 additions & 3 deletions app/views/layouts/application.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,8 @@
= render 'user_impersonate'

%main#content{ role: 'main' }
-# ajout d'un id pour turbo_stream
#flash
= render 'shared/flashes'
= render 'shared/flashes'

.fr-pt-5w
= content_for?(:content) ? yield(:content) : yield # :content is used by sub-layouts (e.g. side_menu)
- if user_signed_in?
Expand Down
Loading
Loading