Build default pref list dossier for new gestionnaire
This commit is contained in:
parent
9bf8005658
commit
bce1b96fee
7 changed files with 218 additions and 12 deletions
|
@ -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.
|
||||
|
||||
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
|
||||
enable_extension "plpgsql"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue