Split methods for export, need to write 2 tests for headers and raw data (export_headers, data_with_champs)
This commit is contained in:
parent
a89a40df34
commit
e49e0b02ef
3 changed files with 39 additions and 12 deletions
|
@ -21,7 +21,7 @@ class Backoffice::DossiersController < Backoffice::DossiersListController
|
|||
def download_dossiers_tps
|
||||
if procedure = Procedure.find_by(id: params[:procedure_id])
|
||||
dossiers = DossiersListGestionnaireService.new(current_gestionnaire, nil, procedure).filter_dossiers
|
||||
respond_with Dossier.export_columns_and_procedure(dossiers, request.format)
|
||||
respond_with Dossier.export_full_generation(dossiers, request.format)
|
||||
else
|
||||
dossiers = DossiersListGestionnaireService.new(current_gestionnaire, nil, nil).filter_dossiers
|
||||
respond_to do |format|
|
||||
|
|
|
@ -325,19 +325,34 @@ class Dossier < ActiveRecord::Base
|
|||
self.export_default_columns.to_a
|
||||
end
|
||||
|
||||
def self.export_columns_and_procedure(dossiers, format)
|
||||
def export_headers
|
||||
serialized_dossier = DossierProcedureSerializer.new(self).as_json[:dossier_procedure]
|
||||
champs = {}
|
||||
serialized_dossier[:champs].each do |champ_hash|
|
||||
champs[champ_hash[:type_de_champ]["libelle"].parameterize.underscore.to_sym] = champ_hash[:value]
|
||||
end
|
||||
dossier_data = serialized_dossier.except(:champs).merge(champs)
|
||||
dossier_data = self.convert_specific_values_to_string(dossier_data)
|
||||
return (dossier_data.keys << self.export_entreprise_data.keys).flatten
|
||||
end
|
||||
|
||||
def data_with_champs
|
||||
serialized_dossier = DossierProcedureSerializer.new(self).as_json[:dossier_procedure]
|
||||
champs = {}
|
||||
serialized_dossier[:champs].each do |champ_hash|
|
||||
champs[champ_hash[:type_de_champ]["libelle"].parameterize.underscore.to_sym] = champ_hash[:value]
|
||||
end
|
||||
dossier_data = serialized_dossier.except(:champs).merge(champs)
|
||||
dossier_data = self.convert_specific_values_to_string(dossier_data)
|
||||
return (dossier_data.values << self.export_entreprise_data.values).flatten
|
||||
end
|
||||
|
||||
def self.export_full_generation(dossiers, format)
|
||||
data = []
|
||||
headers = nil
|
||||
headers = []
|
||||
dossiers.each do |dossier|
|
||||
serialized_dossier = DossierProcedureSerializer.new(dossier).as_json[:dossier_procedure]
|
||||
champs = {}
|
||||
serialized_dossier[:champs].each do |champ_hash|
|
||||
champs[champ_hash[:type_de_champ]["libelle"].parameterize.underscore.to_sym] = champ_hash[:value]
|
||||
end
|
||||
dossier_data = serialized_dossier.except(:champs).merge(champs)
|
||||
dossier_data = dossier.convert_specific_values_to_string(dossier_data)
|
||||
headers ||= (dossier_data.keys << dossier.export_entreprise_data.keys).flatten
|
||||
data << (dossier_data.values << dossier.export_entreprise_data.values).flatten
|
||||
headers = dossier.export_headers if headers.empty?
|
||||
data << dossier.data_with_champs
|
||||
end
|
||||
if ["csv"].include?(format)
|
||||
return SpreadsheetArchitect.to_csv(data: data, headers: headers)
|
||||
|
|
|
@ -754,6 +754,18 @@ describe Dossier do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#export_headers' do
|
||||
let(:procedure) { create(:procedure) }
|
||||
let(:dossier) { create(:dossier, :with_entreprise, user: user, procedure: procedure) }
|
||||
|
||||
subject { dossier.export_headers }
|
||||
it do
|
||||
end
|
||||
end
|
||||
|
||||
describe '#data_with_champs' do
|
||||
end
|
||||
|
||||
describe '#Dossier.to_csv' do
|
||||
let!(:procedure) { create(:procedure) }
|
||||
let!(:dossier) { create(:dossier, :with_entreprise, user: user, procedure: procedure) }
|
||||
|
|
Loading…
Reference in a new issue