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


use Cake\ORM\Entity;
use App\Controller\EmpruntsController;

const DEBUG = false;


/**
 * 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
    ];
    
    // Instance du controleur EmpruntsController pour messages de debug
    private $mycontroller = null;
    
    
    private function d($arg) {
        if (! $this->mycontroller) $this->mycontroller = new EmpruntsController();
        $this->mycontroller->myDebug($arg);
    }
    
    // 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');
        //$today->setTimezone('Europe/Paris');
        $this->d('*** today:');
        $this->d($today);
        $this->d($today->format('d/m/y'));
        $this->d($today->format('d/m/yy'));
        $this->d($today->format('yy/m/d'));
        $this->d($today->format('y/m/d'));
        
        $this->d('*** date_emprunt:');
        $this->d($this->date_emprunt);
        //$date_emprunt = new \DateTime(strtr($this->_properties['date_emprunt'],'/','-')) ; //->format('d/m/y');
        //$date_emprunt = new \DateTime(str($this->date_emprunt)) ; //->format('d/m/y');
        $date_emprunt = new \DateTime(strtr($this->date_emprunt,'/','-')) ; //->format('d/m/y');
        $this->d($date_emprunt);
        $this->d($date_emprunt->format('d/m/y'));
        $this->d($date_emprunt->format('d/m/yy'));
        $this->d($date_emprunt->format('yy/m/d'));
        $this->d($date_emprunt->format('y/m/d'));
        
        // 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'],'/','-'));
        $this->d('*** date_retour_emprunt:');
        $this->d($this->date_retour_emprunt);
        $date_retour = new \DateTime(strtr($this->date_retour_emprunt,'/','-'));
        $this->d($date_retour);
        $this->d($date_retour->format('d/m/y'));
        $this->d($date_retour->format('d/m/yy'));
        $this->d($date_retour->format('yy/m/d'));
        $this->d($date_retour->format('y/m/d'));
        
        $date_retour->add(new \DateInterval('PT23H59M59S')); //->format('d/m/y');
        $this->d('*** date_retour_emprunt + 23h59m59s:');
        $this->d($date_retour);
        $this->d($date_retour->format('d/m/yy'));
        
        $delay = $today->diff($date_emprunt)->days;
        $this->d("*** delay1 $delay");
        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;
                $this->d("*** delay2 $delay");
            }
            $delay = "depuis " . ($delay==0?1:$delay);
        }
        return [$status, $delay];
        
    }
    
}