133 lines
4.2 KiB
Ruby
133 lines
4.2 KiB
Ruby
class PreferenceListDossier < ActiveRecord::Base
|
|
belongs_to :gestionnaire
|
|
belongs_to :procedure
|
|
|
|
def table_attr
|
|
return self.attr if table.nil? || table.empty?
|
|
table + '.' + attr
|
|
end
|
|
|
|
def table_with_s_attr
|
|
return 'dossiers.' + self.attr if table.nil? || table.empty?
|
|
table + 's' + '.' + attr
|
|
end
|
|
|
|
def self.available_columns_for procedure_id = nil
|
|
columns = {
|
|
dossier: columns_dossier,
|
|
procedure: columns_procedure,
|
|
entreprise: columns_entreprise,
|
|
etablissement: columns_etablissement,
|
|
user: columns_user,
|
|
france_connect: columns_france_connect
|
|
}
|
|
|
|
columns = columns.merge({
|
|
champs: columns_champs_procedure(procedure_id),
|
|
champs_private: columns_champs_private_procedure(procedure_id)
|
|
}) if procedure_id.present?
|
|
|
|
columns
|
|
end
|
|
|
|
private
|
|
|
|
def self.columns_dossier
|
|
table = nil
|
|
|
|
{
|
|
dossier_id: create_column('Nº', 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('État', 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('Organisme', 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('Libellé NAF', 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.columns_france_connect
|
|
table = 'france_connect_information'
|
|
|
|
{
|
|
gender: create_column('Civilité (FC)', table, 'gender', 'gender_fr', 1),
|
|
given_name: create_column('Prénom (FC)', table, 'given_name', 'given_name', 2),
|
|
family_name: create_column('Nom (FC)', table, 'family_name', 'family_name', 2)
|
|
}
|
|
end
|
|
|
|
def self.columns_champs_procedure procedure_id
|
|
table = 'champs'
|
|
|
|
if procedure = Procedure.find_by(id: procedure_id)
|
|
procedure.types_de_champ.inject({}) do |acc, type_de_champ|
|
|
acc = acc.merge({
|
|
"type_de_champ_#{type_de_champ.id}" => create_column(type_de_champ.libelle, table, type_de_champ.id, 'value', 2)
|
|
}) if type_de_champ.field_for_list?
|
|
acc
|
|
end
|
|
end
|
|
end
|
|
|
|
def self.columns_champs_private_procedure procedure_id
|
|
table = 'champs_private'
|
|
|
|
if procedure = Procedure.find_by(id: procedure_id)
|
|
procedure.types_de_champ_private.inject({}) do |acc, type_de_champ|
|
|
acc = acc.merge({
|
|
"type_de_champ_private_#{type_de_champ.id}" => create_column(type_de_champ.libelle, table, type_de_champ.id, 'value', 2)
|
|
}) if type_de_champ.field_for_list?
|
|
acc
|
|
end
|
|
end
|
|
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
|