Merge branch 'develop' into staging
This commit is contained in:
commit
28f1de4570
9 changed files with 224 additions and 12 deletions
|
@ -2,4 +2,6 @@ class Entreprise < ActiveRecord::Base
|
||||||
belongs_to :dossier
|
belongs_to :dossier
|
||||||
has_one :etablissement, dependent: :destroy
|
has_one :etablissement, dependent: :destroy
|
||||||
has_one :rna_information, dependent: :destroy
|
has_one :rna_information, dependent: :destroy
|
||||||
|
|
||||||
|
validates_presence_of :siren
|
||||||
end
|
end
|
||||||
|
|
|
@ -10,6 +10,8 @@ class Gestionnaire < ActiveRecord::Base
|
||||||
has_many :follows
|
has_many :follows
|
||||||
has_many :preference_list_dossiers
|
has_many :preference_list_dossiers
|
||||||
|
|
||||||
|
after_create :build_default_preferences_list_dossier
|
||||||
|
|
||||||
def dossiers_filter
|
def dossiers_filter
|
||||||
dossiers.where(procedure_id: procedure_filter_list)
|
dossiers.where(procedure_id: procedure_filter_list)
|
||||||
end
|
end
|
||||||
|
@ -38,4 +40,48 @@ class Gestionnaire < ActiveRecord::Base
|
||||||
|
|
||||||
Follow.where(gestionnaire_id: id, dossier_id: dossier_id).any?
|
Follow.where(gestionnaire_id: id, dossier_id: dossier_id).any?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def build_default_preferences_list_dossier
|
||||||
|
|
||||||
|
PreferenceListDossier.available_columns.each do |table|
|
||||||
|
table.second.each do |column|
|
||||||
|
|
||||||
|
if valid_couple_table_attr? table.first, column.first
|
||||||
|
PreferenceListDossier.create(
|
||||||
|
libelle: column.second[:libelle],
|
||||||
|
table: column.second[:table],
|
||||||
|
attr: column.second[:attr],
|
||||||
|
attr_decorate: column.second[:attr_decorate],
|
||||||
|
bootstrap_lg: column.second[:bootstrap_lg],
|
||||||
|
order: nil,
|
||||||
|
filter: nil,
|
||||||
|
gestionnaire: self
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def valid_couple_table_attr? table, column
|
||||||
|
couples = [{
|
||||||
|
table: :dossier,
|
||||||
|
column: :dossier_id
|
||||||
|
}, {
|
||||||
|
table: :procedure,
|
||||||
|
column: :libelle
|
||||||
|
}, {
|
||||||
|
table: :etablissement,
|
||||||
|
column: :siret
|
||||||
|
}, {
|
||||||
|
table: :entreprise,
|
||||||
|
column: :raison_sociale
|
||||||
|
}, {
|
||||||
|
table: :dossier,
|
||||||
|
column: :state
|
||||||
|
}]
|
||||||
|
|
||||||
|
couples.include?({table: table, column: column})
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,7 +2,7 @@ class PreferenceListDossier < ActiveRecord::Base
|
||||||
belongs_to :gestionnaire
|
belongs_to :gestionnaire
|
||||||
|
|
||||||
def table_attr
|
def table_attr
|
||||||
return self.attr if table.empty?
|
return self.attr if table.nil? || table.empty?
|
||||||
table + '.' + attr
|
table + '.' + attr
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,10 @@ class DossierService
|
||||||
def dossier_informations!
|
def dossier_informations!
|
||||||
@entreprise_adapter = SIADE::EntrepriseAdapter.new(DossierService.siren @siret)
|
@entreprise_adapter = SIADE::EntrepriseAdapter.new(DossierService.siren @siret)
|
||||||
|
|
||||||
|
if @entreprise_adapter.to_params.nil?
|
||||||
|
raise RestClient::ResourceNotFound
|
||||||
|
end
|
||||||
|
|
||||||
@dossier.create_entreprise(@entreprise_adapter.to_params)
|
@dossier.create_entreprise(@entreprise_adapter.to_params)
|
||||||
@etablissement_adapter = SIADE::EtablissementAdapter.new(@siret)
|
@etablissement_adapter = SIADE::EtablissementAdapter.new(@siret)
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
%tr
|
%tr
|
||||||
- current_gestionnaire.preference_list_dossiers.order(:id).each_with_index do |preference, index|
|
- current_gestionnaire.preference_list_dossiers.order(:id).each_with_index do |preference, index|
|
||||||
%td
|
%td
|
||||||
- if preference.table.empty?
|
- if preference.table.nil? || preference.table.empty?
|
||||||
- value = dossier.decorate.public_send(preference.attr_decorate)
|
- value = dossier.decorate.public_send(preference.attr_decorate)
|
||||||
- else
|
- else
|
||||||
- value = dossier.public_send(preference.table).decorate.public_send(preference.attr_decorate)
|
- value = dossier.public_send(preference.table).decorate.public_send(preference.attr_decorate)
|
||||||
|
|
|
@ -0,0 +1,133 @@
|
||||||
|
class BuildDefaultPreferenceListDossier < ActiveRecord::Migration
|
||||||
|
class Gestionnaire < ActiveRecord::Base
|
||||||
|
def build_default_preferences_list_dossier
|
||||||
|
|
||||||
|
PreferenceListDossier.available_columns.each do |table|
|
||||||
|
table.second.each do |column|
|
||||||
|
|
||||||
|
if valid_couple_table_attr? table.first, column.first
|
||||||
|
PreferenceListDossier.create(
|
||||||
|
libelle: column.second[:libelle],
|
||||||
|
table: column.second[:table],
|
||||||
|
attr: column.second[:attr],
|
||||||
|
attr_decorate: column.second[:attr_decorate],
|
||||||
|
bootstrap_lg: column.second[:bootstrap_lg],
|
||||||
|
order: nil,
|
||||||
|
filter: nil,
|
||||||
|
gestionnaire_id: self.id
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def valid_couple_table_attr? table, column
|
||||||
|
couples = [{
|
||||||
|
table: :dossier,
|
||||||
|
column: :dossier_id
|
||||||
|
}, {
|
||||||
|
table: :procedure,
|
||||||
|
column: :libelle
|
||||||
|
}, {
|
||||||
|
table: :etablissement,
|
||||||
|
column: :siret
|
||||||
|
}, {
|
||||||
|
table: :entreprise,
|
||||||
|
column: :raison_sociale
|
||||||
|
}, {
|
||||||
|
table: :dossier,
|
||||||
|
column: :state
|
||||||
|
}]
|
||||||
|
|
||||||
|
couples.include?({table: table, column: column})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class PreferenceListDossier < ActiveRecord::Base
|
||||||
|
def self.available_columns
|
||||||
|
{
|
||||||
|
dossier: columns_dossier,
|
||||||
|
procedure: columns_procedure,
|
||||||
|
entreprise: columns_entreprise,
|
||||||
|
etablissement: columns_etablissement,
|
||||||
|
user: columns_user
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.columns_dossier
|
||||||
|
table = nil
|
||||||
|
|
||||||
|
{
|
||||||
|
dossier_id: create_column('ID', table, 'id', 'id', 1),
|
||||||
|
created_at: create_column('Créé le', table, 'created_at', 'first_creation', 2),
|
||||||
|
updated_at: create_column('Mise à jour le', table, 'updated_at', 'last_update', 2),
|
||||||
|
state: create_column('Statut', table, 'state', 'display_state', 1)
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.columns_procedure
|
||||||
|
table = 'procedure'
|
||||||
|
|
||||||
|
{
|
||||||
|
libelle: create_column('Libellé procédure', table, 'libelle', 'libelle', 4),
|
||||||
|
organisation: create_column('Organisation', table, 'organisation', 'organisation', 3),
|
||||||
|
direction: create_column('Direction', table, 'direction', 'direction', 3)
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.columns_entreprise
|
||||||
|
table = 'entreprise'
|
||||||
|
|
||||||
|
{
|
||||||
|
siren: create_column('SIREN', table, 'siren', 'siren', 2),
|
||||||
|
forme_juridique: create_column('Forme juridique', table, 'forme_juridique', 'forme_juridique', 3),
|
||||||
|
nom_commercial: create_column('Nom commercial', table, 'nom_commercial', 'nom_commercial', 3),
|
||||||
|
raison_sociale: create_column('Raison sociale', table, 'raison_sociale', 'raison_sociale', 3),
|
||||||
|
siret_siege_social: create_column('SIRET siège social', table, 'siret_siege_social', 'siret_siege_social', 2),
|
||||||
|
date_creation: create_column('Date de création', table, 'date_creation', 'date_creation', 2),
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.columns_etablissement
|
||||||
|
table = 'etablissement'
|
||||||
|
|
||||||
|
{
|
||||||
|
siret: create_column('SIRET', table, 'siret', 'siret', 2),
|
||||||
|
libelle: create_column('Nom établissement', table, 'libelle_naf', 'libelle_naf', 3),
|
||||||
|
code_postal: create_column('Code postal', table, 'code_postal', 'code_postal', 1)
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.columns_user
|
||||||
|
table = 'user'
|
||||||
|
|
||||||
|
{
|
||||||
|
email: create_column('Email', table, 'email', 'email', 2)
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.create_column libelle, table, attr, attr_decorate, bootstrap_lg
|
||||||
|
{
|
||||||
|
libelle: libelle,
|
||||||
|
table: table,
|
||||||
|
attr: attr,
|
||||||
|
attr_decorate: attr_decorate,
|
||||||
|
bootstrap_lg: bootstrap_lg,
|
||||||
|
order: nil,
|
||||||
|
filter: nil
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def up
|
||||||
|
Gestionnaire.all.each do |gestionnaire|
|
||||||
|
gestionnaire.build_default_preferences_list_dossier
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
Gestionnaire.all.each do |gestionnaire|
|
||||||
|
PreferenceListDossier.where(gestionnaire_id: gestionnaire.id).delete_all
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -11,7 +11,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(version: 20160722135927) do
|
ActiveRecord::Schema.define(version: 20160802113112) do
|
||||||
|
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
enable_extension "plpgsql"
|
||||||
|
|
|
@ -10,12 +10,6 @@ feature 'on backoffice page' do
|
||||||
before do
|
before do
|
||||||
create :assign_to, gestionnaire: gestionnaire, procedure: procedure
|
create :assign_to, gestionnaire: gestionnaire, procedure: procedure
|
||||||
|
|
||||||
create :preference_list_dossier,
|
|
||||||
gestionnaire: gestionnaire,
|
|
||||||
table: 'entreprise',
|
|
||||||
attr: 'raison_sociale',
|
|
||||||
attr_decorate: 'raison_sociale'
|
|
||||||
|
|
||||||
visit backoffice_path
|
visit backoffice_path
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -24,12 +18,10 @@ feature 'on backoffice page' do
|
||||||
page.find_by_id(:gestionnaire_email).set gestionnaire.email
|
page.find_by_id(:gestionnaire_email).set gestionnaire.email
|
||||||
page.find_by_id(:gestionnaire_password).set gestionnaire.password
|
page.find_by_id(:gestionnaire_password).set gestionnaire.password
|
||||||
page.click_on 'Se connecter'
|
page.click_on 'Se connecter'
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
context 'when he click on first dossier' do
|
context 'when he click on first dossier' do
|
||||||
before do
|
before do
|
||||||
page.click_on dossier.entreprise.raison_sociale
|
page.click_on dossier.id
|
||||||
end
|
end
|
||||||
scenario 'it redirect to dossier page' do
|
scenario 'it redirect to dossier page' do
|
||||||
expect(page).to have_css('#backoffice_dossier_show')
|
expect(page).to have_css('#backoffice_dossier_show')
|
||||||
|
|
|
@ -156,4 +156,39 @@ describe Gestionnaire, type: :model do
|
||||||
it { expect(Follow.all.size).to eq 1 }
|
it { expect(Follow.all.size).to eq 1 }
|
||||||
it { expect(subject.first).to eq dossier }
|
it { expect(subject.first).to eq dossier }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#build_default_preferences_list_dossier' do
|
||||||
|
subject { gestionnaire.preference_list_dossiers }
|
||||||
|
|
||||||
|
context 'when gestionnaire is created' do
|
||||||
|
it 'build default 5 pref list dossier object' do
|
||||||
|
expect(subject.size).to eq 5
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'build dossier_id column' do
|
||||||
|
expect(subject.first.table).to be_nil
|
||||||
|
expect(subject.first.attr).to eq 'id'
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'build dossier state column' do
|
||||||
|
expect(subject[1].table).to be_nil
|
||||||
|
expect(subject[1].attr).to eq 'state'
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'build procedure libelle column' do
|
||||||
|
expect(subject[2].table).to eq 'procedure'
|
||||||
|
expect(subject[2].attr).to eq 'libelle'
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'build entreprise raison_sociale column' do
|
||||||
|
expect(subject[3].table).to eq 'entreprise'
|
||||||
|
expect(subject[3].attr).to eq 'raison_sociale'
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'build entreprise raison_sociale column' do
|
||||||
|
expect(subject.last.table).to eq 'etablissement'
|
||||||
|
expect(subject.last.attr).to eq 'siret'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue