Materiel.php 6.29 KB
<?php
namespace App\Model\Entity;

use Cake\ORM\Entity;

/**
 * Materiel Entity.
 *
 * @property int $id
 * @property string $designation
 * @property int $sur_categorie_id
 * @property \App\Model\Entity\SurCategory $sur_category
 * @property int $categorie_id
 * @property \App\Model\Entity\Category $category
 * @property int $sous_categorie_id
 * @property \App\Model\Entity\SousCategory $sous_category
 * @property string $numero_laboratoire
 * @property string $description
 * @property bool $materiel_administratif
 * @property bool $materiel_technique
 * @property string $status
 * @property \Cake\I18n\Time $date_acquisition
 * @property float $prix_ht
 * @property string $eotp
 * @property string $numero_commande
 * @property string $code_comptable
 * @property string $numero_serie
 * @property int $groupes_thematique_id
 * @property \App\Model\Entity\GroupesThematique $groupes_thematique
 * @property int $groupes_metier_id
 * @property \App\Model\Entity\GroupesMetier $groupes_metier
 * @property string $numero_inventaire_organisme
 * @property string $numero_inventaire_old
 * @property \Cake\I18n\Time $date_archivage
 * @property bool $etiquette
 * @property string $lieu_detail
 * @property string $nom_responsable
 * @property string $email_responsable
 * @property string $nom_createur
 * @property string $nom_modificateur
 * @property \Cake\I18n\Time $created
 * @property \Cake\I18n\Time $modified
 * @property \Cake\I18n\Time $date_fin_garantie
 * @property int $duree_garantie
 * @property string $unite_duree_garantie
 * @property \Cake\I18n\Time $date_reception
 * @property int $organisme_id
 * @property \App\Model\Entity\Organisme $organisme
 * @property int $site_id
 * @property int $photo_id
 * @property bool $hors_service
 * @property \App\Model\Entity\Site $site
 * @property \App\Model\Entity\Document[] $documents
 * @property \App\Model\Entity\Emprunt[] $emprunts
 * @property \App\Model\Entity\Suivi[] $suivis
 * @property int $fournisseur_id
 * @property \App\Model\Entity\Fournisseur $fournisseur
 * @property bool $metrologie
 */
class Materiel extends Entity {

    /**
     * Fields that can be mass assigned using newEntity() or patchEntity().
     *
     * Note that when '*' is set to true, this allows all unspecified fields to
     * be mass assigned. For security purposes, it is advised to set '*' to false
     * (or remove it), and explicitly make individual fields accessible as needed.
     *
     * @var array
     */
    protected $_accessible = [
        '*' => true,
        'id' => false
    ];
    
    // Ce qui s'affiche quand on fait echo $entity
    public function __toString() { return $this->designation; }
    
    // (EP 20200504)
    // Propriétés virtuelles (attributs virtuels de l'entité matériel)
    // A utiliser dans le controleur ainsi : $materiel->is_created
    //public function isCreated() { return $this->status == 'CREATED'; }
    //protected function _getIsCreated() { return $this->_fields['status'] == 'CREATED'; }
    protected function _getIsCreated() { return $this->status == 'CREATED'; }
    //return $this->status == 'CREATED';
    protected function _getIsValidated() { return $this->status == 'VALIDATED'; }
    //protected function _getIsValidated() { return $this->_fields['status'] == 'VALIDATED'; }
    //public function is_tobearchived() { return $this->status == 'TOBEARCHIVED'; }
    protected function _getIsTobearchived() { return $this->status == 'TOBEARCHIVED'; }
    protected function _getIsArchived() { return $this->status == 'ARCHIVED'; }
    
    // Ce matériel est utilisé ou déclaré par l'utilisateur $userfullname
    // is Owned Or Declared By User
    // fullname = "Pallier Etienne"
    //public function isUsedOrCreatedByUser($user) {
    //public function isOwnedOrDeclaredByUser($username) { 
    public function belongsToUser($userfullname) { 
        return in_array($userfullname, [$this->nom_createur, $this->nom_responsable]);
    }
    
    // Ce matériel a le même groupe que l'un de ceux de l'utilisateur courant
    public function isSameGroupAsUser($user_group_metier_id, $user_group_thematique_id) {
        // Responsable groupe métier ?
        //if ($this->groupes_metier_id==null && $this->groupes_thematique_id==null) return false;
        //if ($user_group_metier_id==null && $user_group_thematique_id==null) return false;
        $samegroup1 = $this->groupes_metier_id!=null && $this->groupes_metier_id==$user_group_metier_id;
        $samegroup2 = $this->groupes_thematique_id!=null && $this->groupes_thematique_id==$user_group_thematique_id;
        return $samegroup1 || $samegroup2;
    } // isSameGroupAsUser
    
    
    /* 14/1/19 bake autogenerated:
    protected $_accessible = [
        'designation' => true,
        'sur_categorie_id' => true,
        'categorie_id' => true,
        'sous_categorie_id' => true,
        'numero_laboratoire' => true,
        'description' => true,
        'materiel_administratif' => true,
        'materiel_technique' => true,
        'status' => true,
        'date_acquisition' => true,
        'prix_ht' => true,
        'eotp' => true,
        'numero_commande' => true,
        'code_comptable' => true,
        'numero_serie' => true,
        'groupes_thematique_id' => true,
        'groupes_metier_id' => true,
        'numero_inventaire_organisme' => true,
        'numero_inventaire_old' => true,
        'date_archivage' => true,
        'etiquette' => true,
        'lieu_detail' => true,
        'nom_responsable' => true,
        'email_responsable' => true,
        'gestionnaire_id' => true,
        'nom_createur' => true,
        'nom_modificateur' => true,
        'created' => true,
        'modified' => true,
        'date_reception' => true,
        'organisme_id' => true,
        'site_id' => true,
        'date_fin_garantie' => true,
        'duree_garantie' => true,
        'unite_duree_garantie' => true,
        'hors_service' => true,
        'photo_id' => true,
        'metrologie' => true,
        'fournisseur_id' => true,
        'sur_category' => true,
        'category' => true,
        'sous_category' => true,
        'groupes_thematique' => true,
        'groupes_metier' => true,
        'organisme' => true,
        'site' => true,
        'documents' => true,
        'emprunts' => true,
        'suivis' => true,
        'fournisseur' => true,
        'user' => true
    ];
    */
    
}