Element_OphTrOperationbooking_Operation::getWaitingListStatus PHP Méthode

getWaitingListStatus() public méthode

Checks to see if it's an operation to be scheduled or an operation to be rescheduled. If it's the former it bases its calculation on the operation creation date. If it's the latter it bases it on the most recent cancelled_booking creation date. return int
    public function getWaitingListStatus()
    {
        if (is_null($this->getLastLetter())) {
            return self::STATUS_PURPLE;
            // no invitation letter has been sent
        } elseif (is_null($this->date_letter_sent->date_invitation_letter_sent) and is_null($this->date_letter_sent->date_1st_reminder_letter_sent) and is_null($this->date_letter_sent->date_2nd_reminder_letter_sent) and is_null($this->date_letter_sent->date_gp_letter_sent)) {
            return self::STATUS_PURPLE;
            // no invitation letter has been sent
        }
        $now = new DateTime();
        $now->setTime(0, 0, 0);
        // $two_weeks_ago = $now->modify('-14 days');
        $now = new DateTime();
        $now->setTime(0, 0, 0);
        // $one_week_ago = $now->modify('-7 days');
        // if the last letter was the invitation and it was sent over two weeks ago from now:
        $date_sent = new DateTime($this->date_letter_sent->date_invitation_letter_sent);
        $date_sent->setTime(0, 0, 0);
        if ($this->getLastLetter() == self::LETTER_INVITE and $now->getTimestamp() - $date_sent->getTimestamp() > 1209600) {
            return self::STATUS_GREEN1;
        }
        // if the last letter was the 1st reminder and it was sent over two weeks ago from now:
        $date_sent = new DateTime($this->date_letter_sent->date_1st_reminder_letter_sent);
        $date_sent->setTime(0, 0, 0);
        if ($this->getLastLetter() == self::LETTER_REMINDER_1 and $now->getTimestamp() - $date_sent->getTimestamp() > 1209600) {
            return self::STATUS_GREEN2;
        }
        // if the last letter was the 2nd reminder and it was sent over two weeks ago from now:
        $date_sent = new DateTime($this->date_letter_sent->date_2nd_reminder_letter_sent);
        $date_sent->setTime(0, 0, 0);
        if ($this->getLastLetter() == self::LETTER_REMINDER_2 and $now->getTimestamp() - $date_sent->getTimestamp() > 1209600) {
            return self::STATUS_ORANGE;
        }
        // if the last letter was the gp letter and it was sent over one week ago from now:
        $date_sent = new DateTime($this->date_letter_sent->date_gp_letter_sent);
        $date_sent->setTime(0, 0, 0);
        if ($this->getLastLetter() == self::LETTER_GP and $now->getTimestamp() - $date_sent->getTimestamp() > 604800) {
            return self::STATUS_RED;
        }
        return;
    }