Blame view

src/Model/Table/SuivisTable.php 5.34 KB
6c4edfa3   Alexandre   First Commit LabI...
1
2
3
<?php
namespace App\Model\Table;

6c4edfa3   Alexandre   First Commit LabI...
4
5
6
7
8
9
10
use Cake\ORM\RulesChecker;
use Cake\ORM\Table;
use Cake\Validation\Validator;

/**
 * Suivis Model
 *
69ea278c   Alexis Proust   mise a jour fichier
11
 * @property \Cake\ORM\Association\BelongsTo $Unites
6c4edfa3   Alexandre   First Commit LabI...
12
 * @property \Cake\ORM\Association\BelongsTo $Materiels
ebe38bef   Alexandre   #3586 Ajout assoc...
13
 * @property \Cake\ORM\Association\BelongsTo $TypeSuivis
e9a0cc56   Alexandre   Version: 2.4.6.0
14
15
 * @property \Cake\ORM\Association\BelongsTo $GroupesThematiques
 * @property \Cake\ORM\Association\BelongsTo $GroupesMetiers
6c4edfa3   Alexandre   First Commit LabI...
16
 * @property \Cake\ORM\Association\HasMany $Documents
69ea278c   Alexis Proust   mise a jour fichier
17
 * @property \Cake\ORM\Association\HasMany $Fichemetrologiques
6c4edfa3   Alexandre   First Commit LabI...
18
 */
0e5846aa   Alexandre   Css bouton valide...
19
class SuivisTable extends AppTable
6c4edfa3   Alexandre   First Commit LabI...
20
21
22
23
24
{

    /**
     * Initialize method
     *
63c3cb16   epallier   Nombreux petits b...
25
26
     * @param array $config
     *            The configuration for the Table.
6c4edfa3   Alexandre   First Commit LabI...
27
28
29
30
31
     * @return void
     */
    public function initialize(array $config)
    {
        parent::initialize($config);
63c3cb16   epallier   Nombreux petits b...
32
        
6c4edfa3   Alexandre   First Commit LabI...
33
34
35
        $this->table('suivis');
        $this->displayField('id');
        $this->primaryKey('id');
63c3cb16   epallier   Nombreux petits b...
36
        
6c4edfa3   Alexandre   First Commit LabI...
37
        $this->addBehavior('Timestamp');
63c3cb16   epallier   Nombreux petits b...
38
        
6c4edfa3   Alexandre   First Commit LabI...
39
40
41
42
        $this->belongsTo('Materiels', [
            'foreignKey' => 'materiel_id',
            'joinType' => 'INNER'
        ]);
ebe38bef   Alexandre   #3586 Ajout assoc...
43
44
        
        $this->belongsTo('TypeSuivis', [
63c3cb16   epallier   Nombreux petits b...
45
            'foreignKey' => 'type_suivi_id'
ebe38bef   Alexandre   #3586 Ajout assoc...
46
47
        ]);
        
e9a0cc56   Alexandre   Version: 2.4.6.0
48
        $this->belongsTo('GroupesMetiers', [
63c3cb16   epallier   Nombreux petits b...
49
            'foreignKey' => 'groupes_metier_id'
e9a0cc56   Alexandre   Version: 2.4.6.0
50
51
52
        ]);
        
        $this->belongsTo('GroupesThematiques', [
63c3cb16   epallier   Nombreux petits b...
53
            'foreignKey' => 'groupes_thematique_id'
e9a0cc56   Alexandre   Version: 2.4.6.0
54
55
        ]);
        
6c4edfa3   Alexandre   First Commit LabI...
56
57
58
        $this->hasMany('Documents', [
            'foreignKey' => 'suivi_id'
        ]);
63c3cb16   epallier   Nombreux petits b...
59
60
        $this->belongsTo('Unites', [
            'foreignKey' => 'unite_id'
69ea278c   Alexis Proust   mise a jour fichier
61
        ]);
63c3cb16   epallier   Nombreux petits b...
62
        $this->hasMany('Fichemetrologiques', [
69ea278c   Alexis Proust   mise a jour fichier
63
64
            'foreignKey' => 'suivi_id'
        ]);
63c3cb16   epallier   Nombreux petits b...
65
66
67
68
69
70
        /*
         * EP remarque 9/6/17 : il manque peut-etre ceci pour formule_id, sans doute en cours pour le LATMOS ?
         * $this->belongsTo('Table?', [
         * 'foreignKey' => 'formule_id'
         * ]);
         */
6c4edfa3   Alexandre   First Commit LabI...
71
72
73
74
75
    }

    /**
     * Default validation rules.
     *
63c3cb16   epallier   Nombreux petits b...
76
77
     * @param \Cake\Validation\Validator $validator
     *            Validator instance.
6c4edfa3   Alexandre   First Commit LabI...
78
79
80
81
     * @return \Cake\Validation\Validator
     */
    public function validationDefault(Validator $validator)
    {
63c3cb16   epallier   Nombreux petits b...
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
        $validator->integer('id')->allowEmpty('id', 'create');
        
        $validator->integer('materiel_id');
        
        $validator->allowEmpty('date_controle');
        
        $validator->allowEmpty('date_prochain_controle');
        
        $validator->notEmpty('organisme')->add('organisme', 'valid', [
            'rule' => 'check_string',
            'message' => 'Ce champ contient des caractères interdits',
            'provider' => 'table'
        ]);
        
        $validator->numeric('frequence', 'Veuillez saisir des chiffres uniquement.')
19798ef9   Alexandre   Mode_install, maj...
97
98
99
            ->allowEmpty('frequence')
            ->maxLength('frequence', 8, '8 Chiffres maximum');
        
63c3cb16   epallier   Nombreux petits b...
100
101
102
103
104
105
106
107
108
109
110
        $validator->allowEmpty('type_frequence');
        
        $validator->allowEmpty('panne_resolu');
        
        $validator->allowEmpty('commentaire')->add('commentaire', 'valid', [
            'rule' => [
                'check_string_with_some_special_cars'
            ],
            'message' => 'Ce champ contient des caractères interdits',
            'provider' => 'table'
        ]);
9cfb4997   Alexandre   Version: 2.4.3.10
111
        
6c4edfa3   Alexandre   First Commit LabI...
112
113
114
        return $validator;
    }

6c4edfa3   Alexandre   First Commit LabI...
115
116
117
118
    /**
     * Returns a rules checker object that will be used for validating
     * application integrity.
     *
63c3cb16   epallier   Nombreux petits b...
119
120
     * @param \Cake\ORM\RulesChecker $rules
     *            The rules object to be modified.
6c4edfa3   Alexandre   First Commit LabI...
121
122
123
124
     * @return \Cake\ORM\RulesChecker
     */
    public function buildRules(RulesChecker $rules)
    {
63c3cb16   epallier   Nombreux petits b...
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
        $checkNextDateControlIsAfterDateControl = function ($entity) {
            
            $controle = $entity->date_controle;
            $p_controle = $entity->date_prochain_controle;
            if (empty($controle) || empty($p_controle))
                return true;
            $prochainControle = $p_controle;
            $controle = explode("/", $controle);
            $prochainControle = explode("/", $prochainControle);
            $controle = $controle[2] . $controle[1] . $controle[0];
            $prochainControle = $prochainControle[2] . $prochainControle[1] . $prochainControle[0];
            if ($controle > $prochainControle) {
                return false;
            }
            return true;
        };
        
        $rules->add($checkNextDateControlIsAfterDateControl, [
            'errorField' => 'date_prochain_controle',
            'message' => 'La date de la prochaine intervention dois être postérieure à la date de l\'intervention précédente.'
        ]);
        
        $rules->add($rules->existsIn([
            'materiel_id'
        ], 'Materiels'));
        $rules->add($rules->existsIn([
            'type_suivi_id'
        ], 'TypeSuivis'));
        $rules->add($rules->existsIn([
            'groupes_thematique_id'
        ], 'GroupesThematiques'));
        $rules->add($rules->existsIn([
            'groupes_metier_id'
        ], 'GroupesMetiers'));
6c4edfa3   Alexandre   First Commit LabI...
159
160
        return $rules;
    }
63c3cb16   epallier   Nombreux petits b...
161

3e24b686   Alexandre   Version: 2.4.2.20
162
163
    public function beforeSave($event, $entity, $options)
    {
63c3cb16   epallier   Nombreux petits b...
164
165
166
167
168
169
170
171
172
        if (empty($entity->get('date_controle'))) {
            $entity->set('date_controle', null);
        }
        
        if (empty($entity->get('date_prochain_controle'))) {
            $entity->set('date_prochain_controle', null);
        }
        
        return true;
3e24b686   Alexandre   Version: 2.4.2.20
173
    }
6c4edfa3   Alexandre   First Commit LabI...
174
}