Commit a77309a4 authored by THEO GUILLON's avatar THEO GUILLON
Browse files

Merge branch...

Merge branch '96-ajouter-la-possibiliter-de-rajouter-plusieurs-sous-traitants-lors-de-la-declaration-d-un' into '1.2.0'

Resolve "Ajouter la possibiliter de rajouter plusieurs sous-traitants lors de la déclaration d'un traitement"

See merge request web-DPO/web-DPO!303
parents 084cd946 36b0adc3
......@@ -181,6 +181,7 @@ INSERT INTO normes (norme, numero, libelle, description, name_fichier, fichier,
('MR', '006', 'Études nécessitant l’accès aux données du PMSI par les industriels de santé', 'La MR 006 encadre l’accès par des industriels de santé aux données du Programme de médicalisation des systèmes d''information (PMSI) de l’Agence technique de l’information sur l’hospitalisation (ATIH) mises à disposition via une solution sécurisée. Les responsables de traitement ont l’obligation de documenter les projets menés dans le registre des activités de traitement. Les études menées doivent présenter un caractère d’intérêt public et aucun appariement avec d’autres données à caractère personnel n’est possible. Les responsables de traitement doivent enregistrer leurs traitements auprès d’un répertoire public tenu par l’INDS. Les industriels devront recourir à un bureau d’études/laboratoires de recherches ayant réalisé un engagement de conformité au référentiel fixé par l’arrêté du 17 juillet 2017 auprès de la CNIL. Ils devront également faire réaliser un audit indépendant tous les 3 ans sur l’utilisation des données et le respect de l’interdiction des finalités interdites.', 'MR-006.pdf', '1584952271.pdf', NOW(), NOW()),
('RS', '001', 'Gestion des vigilances sanitaires', 'Le référentiel « RS-001 » encadre les traitements de données à caractère personnel mis en œuvre à des fins de gestion des vigilances sanitaires. Ce référentiel s’applique à l’ensemble des vigilances sanitaires visées par l''arrêté du 27 février 2017 fixant la liste des catégories d''événements sanitaires indésirables pour lesquels la déclaration ou le signalement peut s''effectuer au moyen du portail de signalement des événements sanitaires indésirables (pharmacovigilance, cosmétovigilance, addictovigilance, hémovigilance, etc.) . Seuls les fabricants, entreprises, exploitants, organismes responsables de la mise sur le marché d''un médicament, d''un dispositif ou d''un produit peuvent effectuer un engagement de conformité au référentiel « RS-001 ». Ce référentiel ne couvre pas les traitements mis en œuvre par les professionnels de santé et les systèmes ou services de soins de santé (p. ex. : établissements de santé, maisons de santé, centres de santé, agences sanitaires, etc.).', 'RS-001.pdf', '1584952286.pdf', NOW(), NOW());
-- Typages des annexes
INSERT INTO liste_droits (libelle, value, created, modified) VALUES
('Gestion du typage des annexes', 32, NOW(), NOW());
......@@ -213,4 +214,160 @@ INSERT INTO typages_organisations (typage_id, organisation_id)
ALTER TABLE fichiers ADD COLUMN typage_id INTEGER DEFAULT NULL REFERENCES typages(id) ON DELETE CASCADE ON UPDATE CASCADE;
CREATE TABLE coresponsables (
id serial NOT NULL PRIMARY KEY,
fiche_id INTEGER NOT NULL REFERENCES fiches(id) ON DELETE CASCADE ON UPDATE CASCADE,
responsable_id INTEGER NOT NULL,
nomcoresponsable VARCHAR(50) NOT NULL,
prenomcoresponsable VARCHAR(50) NOT NULL,
fonctioncoresponsable VARCHAR(75) NOT NULL,
emailcoresponsable VARCHAR(75) NOT NULL,
telephonecoresponsable VARCHAR(15) NOT NULL,
raisonsocialestructure VARCHAR(75) NOT NULL,
siretstructure VARCHAR(14) NOT NULL,
apestructure VARCHAR(5) NOT NULL,
telephonestructure VARCHAR(15),
faxstructure VARCHAR(15),
adressestructure TEXT,
emailstructure VARCHAR(75),
created timestamp without time zone NOT NULL,
modified timestamp without time zone NOT NULL
);
ALTER TABLE coresponsables ADD CONSTRAINT coresponsables_emailresponsable_email_chk CHECK ( cakephp_validate_email( emailcoresponsable ) );
ALTER TABLE coresponsables ADD CONSTRAINT coresponsables_telephoneresponsable_phone_chk CHECK ( cakephp_validate_phone( telephonecoresponsable, NULL, 'fr' ) );
ALTER TABLE coresponsables ADD CONSTRAINT coresponsables_apestructure_alpha_numeric_chk CHECK ( cakephp_validate_alpha_numeric( apestructure ) );
ALTER TABLE coresponsables ADD CONSTRAINT coresponsables_telephonestructure_phone_chk CHECK ( cakephp_validate_phone( telephonestructure, NULL, 'fr' ) );
ALTER TABLE coresponsables ADD CONSTRAINT coresponsables_faxstructure_phone_chk CHECK ( cakephp_validate_phone( faxstructure, NULL, 'fr' ) );
ALTER TABLE coresponsables ADD CONSTRAINT coresponsables_emailstructure_email_chk CHECK ( cakephp_validate_email( emailstructure ) );
UPDATE valeurs SET valeur = replace(valeur, ' ', '') WHERE champ_name='telephonecoresponsable';
UPDATE valeurs SET valeur = replace(valeur, ' ', '') WHERE champ_name='siretstructure';
UPDATE valeurs SET valeur = replace(valeur, ' ', '') WHERE champ_name='apestructure';
UPDATE valeurs SET valeur = replace(valeur, ' ', '') WHERE champ_name='telephonestructure';
UPDATE valeurs SET valeur = replace(valeur, ' ', '') WHERE champ_name='faxstructure';
UPDATE valeurs SET valeur = replace(valeur, ' ', '') WHERE champ_name='emailstructure';
INSERT INTO coresponsables (
fiche_id,
responsable_id,
nomcoresponsable,
prenomcoresponsable,
fonctioncoresponsable,
emailcoresponsable,
telephonecoresponsable,
raisonsocialestructure,
siretstructure,
apestructure,
telephonestructure,
faxstructure,
adressestructure,
emailstructure,
created,
modified
)
SELECT
fiches.id,
fiches.coresponsableid,
(SELECT valeurs.valeur FROM valeurs WHERE valeurs.fiche_id = fiches.id AND valeurs.champ_name = 'nomcoresponsable' LIMIT 1) AS "nomcoresponsable",
(SELECT valeurs.valeur FROM valeurs WHERE valeurs.fiche_id = fiches.id AND valeurs.champ_name = 'prenomcoresponsable' LIMIT 1) AS "prenomcoresponsable",
(SELECT valeurs.valeur FROM valeurs WHERE valeurs.fiche_id = fiches.id AND valeurs.champ_name = 'fonctioncoresponsable' LIMIT 1) AS "fonctioncoresponsable",
(SELECT valeurs.valeur FROM valeurs WHERE valeurs.fiche_id = fiches.id AND valeurs.champ_name = 'emailcoresponsable' LIMIT 1) AS "emailcoresponsable",
(SELECT valeurs.valeur FROM valeurs WHERE valeurs.fiche_id = fiches.id AND valeurs.champ_name = 'telephonecoresponsable' LIMIT 1) AS "telephonecoresponsable",
(SELECT valeurs.valeur FROM valeurs WHERE valeurs.fiche_id = fiches.id AND valeurs.champ_name = 'raisonsocialestructure' LIMIT 1) AS "raisonsocialestructure",
(SELECT valeurs.valeur FROM valeurs WHERE valeurs.fiche_id = fiches.id AND valeurs.champ_name = 'siretstructure' LIMIT 1) AS "siretstructure",
(SELECT valeurs.valeur FROM valeurs WHERE valeurs.fiche_id = fiches.id AND valeurs.champ_name = 'apestructure' LIMIT 1) AS "apestructure",
(SELECT valeurs.valeur FROM valeurs WHERE valeurs.fiche_id = fiches.id AND valeurs.champ_name = 'telephonestructure' LIMIT 1) AS "telephonestructure",
(SELECT valeurs.valeur FROM valeurs WHERE valeurs.fiche_id = fiches.id AND valeurs.champ_name = 'faxstructure' LIMIT 1) AS "faxstructure",
(SELECT valeurs.valeur FROM valeurs WHERE valeurs.fiche_id = fiches.id AND valeurs.champ_name = 'adressestructure' LIMIT 1) AS "adressestructure",
(SELECT valeurs.valeur FROM valeurs WHERE valeurs.fiche_id = fiches.id AND valeurs.champ_name = 'emailstructure' LIMIT 1) AS "emailstructure",
NOW(),
NOW()
FROM fiches
WHERE
fiches.coresponsableid IS NOT NULL ;
ALTER TABLE fiches DROP coresponsableid;
DELETE FROM valeurs WHERE champ_name IN (
'nomcoresponsable',
'prenomcoresponsable',
'fonctioncoresponsable',
'emailcoresponsable',
'telephonecoresponsable',
'raisonsocialestructure',
'siretstructure',
'apestructure',
'telephonestructure',
'faxstructure',
'adressestructure',
'emailstructure'
);
CREATE TABLE soustraitances (
id serial NOT NULL PRIMARY KEY,
fiche_id INTEGER NOT NULL REFERENCES fiches(id) ON DELETE CASCADE ON UPDATE CASCADE,
soustraitant_id INTEGER NOT NULL,
raisonsociale VARCHAR(75) NOT NULL,
siret VARCHAR(14) NOT NULL,
ape VARCHAR(5) NOT NULL,
telephone VARCHAR(15),
fax VARCHAR(15),
adresse TEXT,
email VARCHAR(75),
created timestamp without time zone NOT NULL,
modified timestamp without time zone NOT NULL
);
ALTER TABLE soustraitances ADD CONSTRAINT soustraitances_ape_alpha_numeric_chk CHECK ( cakephp_validate_alpha_numeric( ape ) );
ALTER TABLE soustraitances ADD CONSTRAINT soustraitances_telephone_phone_chk CHECK ( cakephp_validate_phone( telephone, NULL, 'fr' ) );
ALTER TABLE soustraitances ADD CONSTRAINT soustraitances_fax_phone_chk CHECK ( cakephp_validate_phone( fax, NULL, 'fr' ) );
ALTER TABLE soustraitances ADD CONSTRAINT soustraitances_email_email_chk CHECK ( cakephp_validate_email( email ) );
UPDATE valeurs SET valeur = replace(valeur, ' ', '') WHERE champ_name='soustraitantsiret';
UPDATE valeurs SET valeur = replace(valeur, ' ', '') WHERE champ_name='soustraitantape';
UPDATE valeurs SET valeur = replace(valeur, ' ', '') WHERE champ_name='soustraitanttelephone';
UPDATE valeurs SET valeur = replace(valeur, ' ', '') WHERE champ_name='soustraitantfax';
UPDATE valeurs SET valeur = replace(valeur, ' ', '') WHERE champ_name='soustraitantemail';
INSERT INTO soustraitances (
fiche_id,
soustraitant_id,
raisonsociale,
siret,
ape,
telephone,
fax,
adresse,
email,
created,
modified
)
SELECT
fiches.id,
fiches.soustraitantid,
(SELECT valeurs.valeur FROM valeurs WHERE valeurs.fiche_id = fiches.id AND valeurs.champ_name = 'soustraitantraisonsociale' LIMIT 1) AS "soustraitantraisonsociale",
(SELECT valeurs.valeur FROM valeurs WHERE valeurs.fiche_id = fiches.id AND valeurs.champ_name = 'soustraitantsiret' LIMIT 1) AS "soustraitantsiret",
(SELECT valeurs.valeur FROM valeurs WHERE valeurs.fiche_id = fiches.id AND valeurs.champ_name = 'soustraitantape' LIMIT 1) AS "soustraitantape",
(SELECT valeurs.valeur FROM valeurs WHERE valeurs.fiche_id = fiches.id AND valeurs.champ_name = 'soustraitanttelephone' LIMIT 1) AS "soustraitanttelephone",
(SELECT valeurs.valeur FROM valeurs WHERE valeurs.fiche_id = fiches.id AND valeurs.champ_name = 'soustraitantfax' LIMIT 1) AS "soustraitantfax",
(SELECT valeurs.valeur FROM valeurs WHERE valeurs.fiche_id = fiches.id AND valeurs.champ_name = 'soustraitantadresse' LIMIT 1) AS "soustraitantadresse",
(SELECT valeurs.valeur FROM valeurs WHERE valeurs.fiche_id = fiches.id AND valeurs.champ_name = 'soustraitantemail' LIMIT 1) AS "soustraitantemail",
NOW(),
NOW()
FROM fiches
WHERE
fiches.soustraitantid IS NOT NULL ;
ALTER TABLE fiches DROP soustraitantid;
DELETE FROM valeurs WHERE champ_name IN (
'soustraitantraisonsociale',
'soustraitantsiret',
'soustraitantape',
'soustraitanttelephone',
'soustraitantfax',
'soustraitantadresse',
'soustraitantemail'
);
COMMIT;
......@@ -37,6 +37,7 @@ class FichesController extends AppController
public $uses = [
'Champ',
'Coresponsable',
'Responsable',
'ResponsableOrganisation',
'EtatFiche',
......@@ -53,6 +54,7 @@ class FichesController extends AppController
'Organisation',
'Service',
'Soustraitant',
'Soustraitance',
'SoustraitantOrganisation',
'Typage',
'TypageOrganisation',
......@@ -408,7 +410,13 @@ class FichesController extends AppController
$typages = $this->_typages();
$this->set(compact('formulaire_id', 'formulaireOLD', 'typages'));
// On récupère les responsable
$responsables = $this->_responsables();
// On récupère les soustraitant
$soustraitants = $this->_soustraitants();
$this->set(compact('formulaire_id', 'formulaireOLD', 'typages', 'responsables', 'soustraitants'));
}
/**
......@@ -443,6 +451,25 @@ class FichesController extends AppController
return $responsables;
}
protected function _coresponsables($fiche_id)
{
$coresponsables = null;
if (empty($this->request->data['Coresponsable'])) {
$coresponsables = $this->Coresponsable->find('all', [
'conditions' => [
'fiche_id' => $fiche_id
]
]);
$coresponsableSelected = Hash::extract($coresponsables, '{n}.Coresponsable.responsable_id');
$this->request->data['Coresponsable']['coresponsables'] = $coresponsableSelected;
}
$this->set(compact('coresponsables'));
}
/**
* @return array
*/
......@@ -474,6 +501,25 @@ class FichesController extends AppController
return $soustraitants;
}
protected function _soustraitances($fiche_id)
{
$soustraitances = null;
if (empty($this->request->data['Soustraitance'])) {
$soustraitances = $this->Soustraitance->find('all', [
'conditions' => [
'fiche_id' => $fiche_id
]
]);
$soustraitanceSelected = Hash::extract($soustraitances, '{n}.Soustraitance.soustraitant_id');
$this->request->data['Soustraitance']['soustraitances'] = $soustraitanceSelected;
}
$this->set(compact('soustraitances'));
}
/**
* Gère la suppression de traitement
*
......@@ -662,9 +708,7 @@ class FichesController extends AppController
'form_id',
'norme_id',
'coresponsable',
'coresponsableid',
'soustraitance',
'soustraitantid',
'obligation_pia',
'realisation_pia',
'depot_pia',
......@@ -694,32 +738,46 @@ class FichesController extends AppController
]
]);
if ($formulaireOLD['Formulaire']['oldformulaire'] === true) {
// Reprise des données de la version v1.1.0 pour la coresponsabilité
$responsables = $this->_responsables();
$this->set(compact('responsables'));
$this->request->data['Fiche']['coresponsableid'] = $fiche['Fiche']['coresponsableid'];
// Reprise des données de la version v1.1.0 pour la soustraitance
if ($formulaireOLD['Formulaire']['soustraitant'] === true && $fiche['Fiche']['soustraitance'] === true) {
$soustraitance = $this->Formulaire->find('first', [
'conditions' => [
'id' => $fiche['Fiche']['form_id']
],
'fields' => [
'soustraitant'
]
]);
$soustraitants = $this->_soustraitants();
// On récupère les responsables
$responsables = $this->_responsables();
$this->set(compact('responsables'));
// On récupère les coresponsables
$this->_coresponsables($id);
// On récupère les responsables
$soustraitants = $this->_soustraitants();
$this->set(compact('soustraitants'));
// On récupère la soustraitance
$this->_soustraitances($id);
// if ($formulaireOLD['Formulaire']['oldformulaire'] === true) {
// // Reprise des données de la version v1.1.0 pour la coresponsabilité
//// $responsables = $this->_responsables();
//// $this->set(compact('responsables'));
//// $this->request->data['Fiche']['coresponsableid'] = $fiche['Fiche']['coresponsableid'];
//
// // Reprise des données de la version v1.1.0 pour la soustraitance
// if ($formulaireOLD['Formulaire']['soustraitant'] === true && $fiche['Fiche']['soustraitance'] === true) {
// $soustraitance = $this->Formulaire->find('first', [
// 'conditions' => [
// 'id' => $fiche['Fiche']['form_id']
// ],
// 'fields' => [
// 'soustraitant'
// ]
// ]);
//
// $soustraitants = $this->_soustraitants();
//
// $this->set(compact('soustraitance', 'soustraitants'));
// }
// } else {
// // Récupére en BDD les options des champs défini lors de la création du formulaire
// $this->getOptionsFields($fiche['Fiche']['form_id']);
// }
$this->set(compact('soustraitance', 'soustraitants'));
$this->request->data['Fiche']['soustraitantid'] = $fiche['Fiche']['soustraitantid'];
}
} else {
// Récupére en BDD les options des champs défini lors de la création du formulaire
$this->getOptionsFields($fiche['Fiche']['form_id']);
}
// Récupére en BDD les options des champs défini lors de la création du formulaire
$this->getOptionsFields($fiche['Fiche']['form_id']);
$this->request->data['Fiche']['norme_id'] = $fiche['Fiche']['norme_id'];
$this->request->data['Fiche']['coresponsable'] = $fiche['Fiche']['coresponsable'];
......@@ -841,7 +899,6 @@ class FichesController extends AppController
$soustraitants = $this->_soustraitants();
$this->set(compact('soustraitance', 'soustraitants'));
$this->request->data['Fiche']['soustraitantid'] = $fiche['Fiche']['soustraitantid'];
}
} else {
// Récupére en BDD les options des champs défini lors de la création du formulaire
......@@ -1696,7 +1753,6 @@ class FichesController extends AppController
'organisation_id' => $organisation_id,
'norme_id' => $fiche['Fiche']['norme_id'],
'numero' => $fiche['Fiche']['numero'],
'soustraitantid' => $fiche['Fiche']['soustraitantid'],
'coresponsable' => $fiche['Fiche']['coresponsable'],
'coresponsableid' => $fiche['Fiche']['coresponsableid']
]
......
......@@ -473,8 +473,6 @@ class FormulairesController extends AppController {
$success = true;
$this->Formulaire->begin();
// debug($this->request->data);die;
$data = $this->request->data;
unset($data['Fiche']);
......@@ -815,42 +813,42 @@ class FormulairesController extends AppController {
}
// valeur par défault
// if ($this->request->params['action'] == 'add' && empty($this->request->data)) {
// $fields['coresponsable'] = [
// [
// 'Champ' => [
// 'type' => 'input',
// 'ligne' => 1,
// 'colonne' => 1,
// 'details' => '{"name":"nom_responsable_conjoint","placeholder":"Nom et prénom","label":"Nom et prénom du responsable conjoint","default":"","obligatoire":true,"repeat":false}'
// ]
// ],
// [
// 'Champ' => [
// 'type' => 'input',
// 'ligne' => 3,
// 'colonne' => 1,
// 'details' => '{"name":"structure_responsable_conjointe","placeholder":"Raison sociale","label":"Raison sociale de la structure conjointe","default":"","obligatoire":true,"repeat":false}'
// ]
// ],
// [
// 'Champ' => [
// 'type' => 'input',
// 'ligne' => 1,
// 'colonne' => 2,
// 'details' => '{"name":"email_responsable_conjoint","placeholder":"Adresse e-mail","label":"Adresse mail du responsable conjoint","default":"","obligatoire":true,"repeat":false}'
// ]
// ],
// [
// 'Champ' => [
// 'type' => 'textarea',
// 'ligne' => 3,
// 'colonne' => 2,
// 'details' => '{"name":"adresse_structure_responsable_conjointe","placeholder":"Adresse postale","label":"Adresse de la structure conjointe","default":"","obligatoire":false,"repeat":false}'
// ]
// ]
// ];
// }
if ($this->request->params['action'] == 'add' && empty($this->request->data)) {
$fields['coresponsable'] = [
[
'Champ' => [
'type' => 'input',
'ligne' => 1,
'colonne' => 1,
'details' => '{"name":"nom_responsable_conjoint","placeholder":"Nom et prénom","label":"Nom et prénom du responsable conjoint","default":"","obligatoire":true}'
]
],
[
'Champ' => [
'type' => 'input',
'ligne' => 3,
'colonne' => 1,
'details' => '{"name":"structure_responsable_conjointe","placeholder":"Raison sociale","label":"Raison sociale de la structure conjointe","default":"","obligatoire":true}'
]
],
[
'Champ' => [
'type' => 'input',
'ligne' => 1,
'colonne' => 2,
'details' => '{"name":"email_responsable_conjoint","placeholder":"Adresse e-mail","label":"Adresse mail du responsable conjoint","default":"","obligatoire":true}'
]
],
[
'Champ' => [
'type' => 'textarea',
'ligne' => 3,
'colonne' => 2,
'details' => '{"name":"adresse_structure_responsable_conjointe","placeholder":"Adresse postale","label":"Adresse de la structure conjointe","default":"","obligatoire":false}'
]
]
];
}
$this->request->data['Formulaire']['form-container-formulaire'] = $fields['formulaire'];
$this->request->data['Formulaire']['form-container-coresponsable'] = $fields['coresponsable'];
......
......@@ -73,7 +73,7 @@ msgid "fiche.ongletInformationTraitement"
msgstr "Information générale"
msgid "fiche.ongletSousTraitant"
msgstr "Sous-traitant"
msgstr "Sous-traitance(s)"
msgid "fiche.ongletFormulaire"
msgstr "Formulaire"
......
......@@ -250,6 +250,9 @@ msgstr "Avez-vous réalisé l'analyse d'impact (AIPD) ?"
msgid "formulaire.champDepotPia"
msgstr "Avez-vous déposer dans l'onglet annexe l'analyse d'impact (AIPD) ?"
msgid "formulaire.infoActifTabCoresponsable"
msgstr "Cet onglet sera actif uniquement lorsque le déclaration du traitement aura indiqué 'Oui' sur le champ 'Co-responsable ?' dans l'onget 'Information générale'"
###############################################################################
msgid "formulaire.champIfTheField"
......
<?php
/**
* Model Coresponsable
*
* web-DPO : Outil de gestion de vos traitements dans le cadre de la
* réglementation relative à la protection des données personnelles (RGPD)
*
* Copyright (c) Libriciel SCOP (https://www.libriciel.fr/)
*
* Licensed under The CeCiLL V2 License
* For full copyright and license information, please see the LICENSE.txt
* Redistributions of files must retain the above copyright notice.
*
* @copyright Copyright (c) Libriciel SCOP (https://www.libriciel.fr/)
* @link https://www.libriciel.fr/web-cil/
* @since web-DPO
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.html CeCiLL V2 License
* @version v1.2.0
* @package AppModel
*/
App::uses('AppModel', 'Model');
class Coresponsable extends AppModel {
public $name = 'Coresponsable';
public $validationDomain = 'validation';
public $actsAs = [
'Database.DatabaseFormattable' => [
'Database.DatabaseDefaultFormatter' => [
'formatTrim' => [
'NOT' => ['binary']
],
'formatNull' => true,
'formatNumeric' => [
'float',
'integer'
],
'formatSuffix' => '/_id$/',
'formatStripNotAlnum' => '/^(telephonecoresponsable|telephonestructure|faxstructure|siretstructure)$/'
]
],
'LettercaseFormattable' => [
'upper_noaccents' => ['nomcoresponsable'],
'title' => ['prenomcoresponsable']
]
];
/**
* validate associations
*
* @var array
*
* @access public
* @created 12/04/2018
* @version v1.0.0
*/
public $validate = [
'fiche_id' => [
'notBlank' => [
'rule' => ['notBlank']
]
],
'responsable_id' => [
'notBlank' => [
'rule' => ['notBlank']
]
],
'nomcoresponsable' => [
'notBlank' => [
'rule' => ['notBlank']
]
],
'prenomcoresponsable' => [
'notBlank' => [
'rule' => ['notBlank']
]
],
'fonctioncoresponsable' => [
'notBlank' => [
'rule' => ['notBlank']
]
],
'emailcoresponsable' => [
[
'rule' => ['custom', REGEXP_EMAIL_FR],
'message' => 'validation.adresseMailNonValide'
]
],
'telephonecoresponsable' => [
'notBlank' => [
'rule' => ['notBlank']
]
],
'raisonsocialestructure' => [
'notBlank' => [
'rule' => ['notBlank']
]
],
'siretstructure' => [
'luhn' => [
'rule' => [
'luhn',
true
],
'message' => 'validation.numeroSIRETNonValide'
],
[
'rule' => 'numeric',
'message' => 'validation.numeroSIRETUniquementComposeChiffre'
],
],
'apestructure' => [
'notBlank' => [
'rule' => ['notBlank']
]
],
];
/**
* belongsTo associations
*
* @var array
*
* @access public
* @created 18/06/2015
* @version V0.9.0
*/
public $belongsTo = [
'Fiche' => [
'className' => 'Fiche',
'foreignKey' => 'fiche_id'
]
];
}
<