Implemented custom method to catch procedure_id while rendering data on each request format
This commit is contained in:
parent
23ee1cb21c
commit
973570332f
4 changed files with 31 additions and 13 deletions
|
@ -20,11 +20,14 @@ class Backoffice::DossiersController < Backoffice::DossiersListController
|
||||||
|
|
||||||
def download_dossiers_tps
|
def download_dossiers_tps
|
||||||
dossiers = current_gestionnaire.dossiers.where.not(state: :draft)
|
dossiers = current_gestionnaire.dossiers.where.not(state: :draft)
|
||||||
|
if procedure = Procedure.find_by(id: params[:procedure_id])
|
||||||
respond_to do |format|
|
respond_with Dossier.export_columns_and_procedure(dossiers, request.format, procedure)
|
||||||
format.xlsx { render xlsx: dossiers }
|
else
|
||||||
format.ods { render ods: dossiers }
|
respond_to do |format|
|
||||||
format.csv { render csv: dossiers }
|
format.xlsx { render xlsx: dossiers }
|
||||||
|
format.ods { render ods: dossiers }
|
||||||
|
format.csv { render csv: dossiers }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -303,7 +303,7 @@ class Dossier < ActiveRecord::Base
|
||||||
return hash
|
return hash
|
||||||
end
|
end
|
||||||
|
|
||||||
def as_csv(options={})
|
def export_default_columns
|
||||||
dossier_attr = DossierSerializer.new(self).attributes
|
dossier_attr = DossierSerializer.new(self).attributes
|
||||||
dossier_attr = convert_specific_values_to_string(dossier_attr)
|
dossier_attr = convert_specific_values_to_string(dossier_attr)
|
||||||
unless entreprise.nil?
|
unless entreprise.nil?
|
||||||
|
@ -319,7 +319,22 @@ class Dossier < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def spreadsheet_columns
|
def spreadsheet_columns
|
||||||
self.as_csv.to_a
|
self.export_default_columns.to_a
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.export_columns_and_procedure(dossiers, format, procedure)
|
||||||
|
data = []
|
||||||
|
headers = dossiers.first.export_default_columns.keys
|
||||||
|
dossiers.each do |dossier|
|
||||||
|
data << dossier.export_default_columns.values
|
||||||
|
end
|
||||||
|
if ["csv"].include?(format)
|
||||||
|
return SpreadsheetArchitect.to_csv(data: data, headers: headers)
|
||||||
|
elsif ["xlsx"].include?(format)
|
||||||
|
return SpreadsheetArchitect.to_xlsx(data: data, headers: headers)
|
||||||
|
elsif ["ods"].include?(format)
|
||||||
|
return SpreadsheetArchitect.to_ods(data: data, headers: headers)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def reset!
|
def reset!
|
||||||
|
|
|
@ -12,13 +12,13 @@
|
||||||
%span.caret
|
%span.caret
|
||||||
%ul.dropdown-menu.dropdown-menu-right
|
%ul.dropdown-menu.dropdown-menu-right
|
||||||
%li
|
%li
|
||||||
= link_to backoffice_download_dossiers_tps_path(format: :csv), { class: 'btn btn-sm' } do
|
= link_to backoffice_download_dossiers_tps_path(format: :csv, procedure_id: params[:id]), { class: 'btn btn-sm' } do
|
||||||
= t('dynamics.backoffice.format_csv')
|
= t('dynamics.backoffice.format_csv')
|
||||||
%li
|
%li
|
||||||
= link_to backoffice_download_dossiers_tps_path(format: :xlsx), { class: 'btn btn-sm' } do
|
= link_to backoffice_download_dossiers_tps_path(format: :xlsx, procedure_id: params[:id]), { class: 'btn btn-sm' } do
|
||||||
= t('dynamics.backoffice.format_xlsx')
|
= t('dynamics.backoffice.format_xlsx')
|
||||||
%li
|
%li
|
||||||
= link_to backoffice_download_dossiers_tps_path(format: :ods), { class: 'btn btn-sm' } do
|
= link_to backoffice_download_dossiers_tps_path(format: :ods, procedure_id: params[:id]), { class: 'btn btn-sm' } do
|
||||||
= t('dynamics.backoffice.format_ods')
|
= t('dynamics.backoffice.format_ods')
|
||||||
|
|
||||||
= render partial: 'backoffice/dossiers/onglets'
|
= render partial: 'backoffice/dossiers/onglets'
|
||||||
|
|
|
@ -659,10 +659,10 @@ describe Dossier do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#as_csv?' do
|
describe '#export_default_columns?' do
|
||||||
let(:procedure) { create(:procedure) }
|
let(:procedure) { create(:procedure) }
|
||||||
let(:dossier) { create(:dossier, :with_entreprise, user: user, procedure: procedure) }
|
let(:dossier) { create(:dossier, :with_entreprise, user: user, procedure: procedure) }
|
||||||
subject { dossier.as_csv }
|
subject { dossier.export_default_columns }
|
||||||
|
|
||||||
it { expect(subject[:archived]).to eq('false') }
|
it { expect(subject[:archived]).to eq('false') }
|
||||||
it { expect(subject[:etablissement_siret]).to eq('44011762001530') }
|
it { expect(subject[:etablissement_siret]).to eq('44011762001530') }
|
||||||
|
@ -692,7 +692,7 @@ describe Dossier do
|
||||||
|
|
||||||
context 'when dossier does not have enterprise' do
|
context 'when dossier does not have enterprise' do
|
||||||
let(:dossier) { create(:dossier, user: user, procedure: procedure) }
|
let(:dossier) { create(:dossier, user: user, procedure: procedure) }
|
||||||
subject { dossier.as_csv }
|
subject { dossier.export_default_columns }
|
||||||
|
|
||||||
it { expect(subject[:archived]).to eq('false') }
|
it { expect(subject[:archived]).to eq('false') }
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue