diff --git a/app/controllers/manager/dossiers_controller.rb b/app/controllers/manager/dossiers_controller.rb index d42d335ce..23068d4c4 100644 --- a/app/controllers/manager/dossiers_controller.rb +++ b/app/controllers/manager/dossiers_controller.rb @@ -1,4 +1,12 @@ module Manager class DossiersController < Manager::ApplicationController + def change_state_to_instruction + dossier = Dossier.find(params[:id]) + dossier.update(state: 'en_instruction', processed_at: nil, motivation: nil) + dossier.attestation&.destroy + logger.info("Le dossier #{dossier.id} est repassé en instruction par #{current_administration.email}") + flash[:notice] = "Le dossier #{dossier.id} est repassé en instruction" + redirect_to manager_dossier_path(dossier) + end end end diff --git a/app/lib/pipedrive/deal_adapter.rb b/app/lib/pipedrive/deal_adapter.rb index 68f9725c9..b86654771 100644 --- a/app/lib/pipedrive/deal_adapter.rb +++ b/app/lib/pipedrive/deal_adapter.rb @@ -22,8 +22,8 @@ class Pipedrive::DealAdapter end def self.get_deals_ids_for_person(person_id) - Pipedrive::API.get_deals_for_person(person_id) - .map { |datum| datum['id'] } + deals = Pipedrive::API.get_deals_for_person(person_id) || [] + deals.map { |datum| datum['id'] } end def self.update_deal_owner_and_stage(deal_id, owner_id, stage_id) diff --git a/app/views/dossiers/_messagerie.html.haml b/app/views/dossiers/_messagerie.html.haml index ca223136d..4c1c22da6 100644 --- a/app/views/dossiers/_messagerie.html.haml +++ b/app/views/dossiers/_messagerie.html.haml @@ -20,7 +20,7 @@ = render partial: 'dossiers/commentaires/form', locals: { dossier_facade: @facade } .last-commentaire.clearfix.hidden-print - - if last_comment = dossier_facade.commentaires.first + - if last_comment = dossier_facade.commentaires.last %div DERNIER MESSAGE = render partial: 'dossiers/commentaires/commentaire', object: last_comment diff --git a/app/views/manager/application/_navigation.html.erb b/app/views/manager/application/_navigation.html.erb index 60c28e051..bb217b350 100644 --- a/app/views/manager/application/_navigation.html.erb +++ b/app/views/manager/application/_navigation.html.erb @@ -12,7 +12,7 @@ as defined by the routes in the `admin/` namespace
- <% Administrate::Namespace.new(namespace).resources.reject { |resource| resource.resource == 'dossiers'}.each do |resource| %> + <% Administrate::Namespace.new(namespace).resources.each do |resource| %> <%= link_to( display_resource_name(resource), diff --git a/app/views/manager/dossiers/show.html.erb b/app/views/manager/dossiers/show.html.erb new file mode 100644 index 000000000..4213b3e0d --- /dev/null +++ b/app/views/manager/dossiers/show.html.erb @@ -0,0 +1,48 @@ +<%# +# Show + +This view is the template for the show page. +It renders the attributes of a resource, +as well as a link to its edit page. + +## Local variables: + +- `page`: + An instance of [Administrate::Page::Show][1]. + Contains methods for accessing the resource to be displayed on the page, + as well as helpers for describing how each attribute of the resource + should be displayed. + +[1]: http://www.rubydoc.info/gems/administrate/Administrate/Page/Show +%> + +<% content_for(:title) { t("administrate.actions.show_resource", name: page.page_title) } %> +<% dossier = page.resource %> + + + +
+
+ <% page.attributes.each do |attribute| %> +
+ <%= t( + "helpers.label.#{resource_name}.#{attribute.name}", + default: attribute.name.titleize, + ) %> +
+ +
<%= render_field attribute %>
+ <% end %> +
+
diff --git a/config/routes.rb b/config/routes.rb index bfaf02af0..b6617d7c8 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -6,6 +6,10 @@ Rails.application.routes.draw do post 'whitelist', on: :member end + resources :dossiers, only: [:index, :show] do + post 'change_state_to_instruction', on: :member + end + resources :administrateurs, only: [:index, :show, :new, :create] do post 'reinvite', on: :member put 'enable_feature', on: :member diff --git a/spec/lib/pipedrive/deal_adapter_spec.rb b/spec/lib/pipedrive/deal_adapter_spec.rb new file mode 100644 index 000000000..bce1ad0e5 --- /dev/null +++ b/spec/lib/pipedrive/deal_adapter_spec.rb @@ -0,0 +1,27 @@ +require 'spec_helper' + +describe Pipedrive::DealAdapter do + let(:url) { PIPEDRIVE_API_URL } + let(:status) { 200 } + let(:body) { '{}' } + + before do + stub_request(:get, url) + .to_return(status: status, body: body) + end + + describe ".get_deals_ids_for_person" do + let(:url) { %r{/persons/1/deals\?*} } + subject { Pipedrive::DealAdapter.get_deals_ids_for_person('1') } + + context "with valid data" do + let(:body) { '{ "success": true, "data": [ { "id": 34 }, { "id": 35 } ] }' } + it { is_expected.to eq [34, 35] } + end + + context "when no data are returned" do + let(:body) { '{ "success": true, "data": null }' } + it { is_expected.to eq [] } + end + end +end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index e04cac0f7..e693207dd 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -72,6 +72,7 @@ DatabaseCleaner.strategy = :transaction TPS::Application.load_tasks SIADETOKEN = :valid_token if !defined? SIADETOKEN +PIPEDRIVE_TOKEN = :pipedrive_test_token if !defined? PIPEDRIVE_TOKEN include Warden::Test::Helpers