Emprunt.php 2.51 KB
<?php
namespace App\Model\Entity;

use Cake\ORM\Entity;

/**
 * Emprunt Entity.
 *
 * @property int $id
 * @property int $materiel_id
 * @property \App\Model\Entity\Materiel $materiel
 * @property \Cake\I18n\Time $date_emprunt
 * @property \Cake\I18n\Time $date_retour_emprunt
 * @property bool $emprunt_interne
 * @property string $laboratoire
 * @property int $site_id
 * @property string $e_lieu_detail
 * @property string $nom_emprunteur
 * @property string $email_emprunteur
 * @property string $tel
 * @property string $commentaire
 * @property string $nom_createur
 * @property string $nom_modificateur
 * @property \Cake\I18n\Time $created
 * @property \Cake\I18n\Time $modified
 */
class Emprunt 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
    ];
    
    // Si on veut que ce champ virtuel soit exporté systématiquement dans l'entité
    //protected $_virtual = ['status_from_dates'];
    
    // Ajoute le champ VIRTUEL (calculé) "status_from_dates" à l'entité Emprunt
    protected function _getStatusFromDates() {
        //return $this->_properties['lieu'] . '  ' . $this->_properties['last_name'];
        //return "un";
        $today = new \DateTime('now');
        //echo $today->format('d/m/y');
        $date_emprunt = new \DateTime(strtr($this->_properties['date_emprunt'],'/','-')) ; //->format('d/m/y');
        // on ajoute 23h59m59s à date_retour pour autoriser le retour jqa la fin de la journée
        $date_retour = new \DateTime(strtr($this->_properties['date_retour_emprunt'],'/','-'));
        $date_retour->add(new \DateInterval('PT23H59M59S')); //->format('d/m/y');
        $delay = $today->diff($date_emprunt)->days;
        if ($today < $date_emprunt) {
            $status = "A VENIR";
            $delay = "dans " . ($delay==0?1:$delay);
        }
        else {
            if ($today <= $date_retour) {
                $status = "EN COURS";
            }
            else {
                $status = "TERMINÉ";
                $delay = $today->diff($date_retour)->days;
            }
            $delay = "depuis " . ($delay==0?1:$delay);
        }
        return [$status, $delay];
        
    }
    
}