Commit b3b62666 authored by Stephane Bouvry's avatar Stephane Bouvry
Browse files

Système de recall 2

parent 45fa0a2f
Loading
Loading
Loading
Loading
Loading
+11 −8
Changes for module/Oscar/src/Oscar/Command/OscarTimesheetDeclarerRecallCommand.php: 11 added lines, 8 removed lines.
Original line number Diff line number Diff line
@@ -73,6 +73,12 @@ class OscarTimesheetDeclarerRecallCommand extends OscarCommandAbstract
            return;
        }

        if( $all != 'all' ){
            $personId = $this->getPersonService()->getPersonByLdapLogin($all)->getId();
            $declarerId = $personId;
            $all = false;
        }

        $declarerPeriod = $input->getOption(self::OPT_PERIOD);
        if( !$declarerPeriod ){
            $today = date('Y-m-d');
@@ -103,6 +109,7 @@ class OscarTimesheetDeclarerRecallCommand extends OscarCommandAbstract
    {
        /** @var Person $declarer */
        $declarer = $this->getPersonService()->getPersonById($declarerId);

        $result = $this->declarerPeriod($declarerId, $declarerPeriod);
        $io->title($result['person']);
        $io->writeln(sprintf("Message : <options=bold>%s</>", $result['message']));
@@ -110,14 +117,10 @@ class OscarTimesheetDeclarerRecallCommand extends OscarCommandAbstract
        $io->writeln(sprintf("Déclaration (heures) : <options=bold>%s/%s</>", $result['total'], $result['needed']));
        $io->writeln(sprintf("Max : <options=bold>%s</>", $result['max']));
        $io->writeln(sprintf("Min : <options=bold>%s</>", $result['min']));
        $io->writeln(sprintf("Mail requis : <options=bold>%s</>", $result['mailRequired'] ? "Oui" : "Non"));
        $io->writeln(sprintf("Mail envoyé : <options=bold>%s</>", $result['mailSend'] ? "Oui" : "Non"));
        $io->writeln(sprintf("Status : <options=bold>%s</>", $result['status']));

        if( $result['needSend'] ){
            $message = $this->getMailer()->newMessage("[OSCAR] Déclaration de temps $declarerPeriod", "CONTENU : " . $result['message']);
            $message->setTo($declarer->getEmail());
            $message->setBody("Message : " . $result['message']);
            $this->getMailer()->send($message);
            echo "MAIL !!!! \n";
        }
    }

    /**
@@ -149,7 +152,7 @@ class OscarTimesheetDeclarerRecallCommand extends OscarCommandAbstract
    //public function declarerRecall

    public function declarerPeriod( $declarerId, $period ){
        return $this->getTimesheetService()->getPersonRecallDeclarationPeriod($declarerId, $period);
        return $this->getTimesheetService()->recallProcess($declarerId, $period);
    }

    public function declarer( InputInterface $input, OutputInterface $output, $declarerId ){
+196 −0
Changes for module/Oscar/src/Oscar/Entity/RecallDeclaration.php: 196 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php


namespace Oscar\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Cette classe référence les rôles GLOBAUX sur l'application.
 *
 * @ORM\Entity
 */
class RecallDeclaration
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * Année de référence
     * @var integer
     * @ORM\Column(type="integer")
     */
    private $periodYear;

    /**
     * Mois de référence
     * @var integer
     * @ORM\Column(type="integer", nullable=false)
     */
    private $periodMonth;


    /**
     * @var Person
     * @ORM\ManyToOne(targetEntity="Person")
     */
    private $person;

    /**
     * @var string
     * @ORM\Column(type="string")
     */
    private $context = "declarer";

    /**
     * @var \DateTime
     * @ORM\Column(type="datetime")
     *
     */
    private $startProcess;

    /**
     * @var \DateTime
     * @ORM\Column(type="datetime")
     */
    private $lastSend;

    /**
     * @var string
     * @ORM\Column(type="text")
     */
    private $history;

    /**
     * @return mixed
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * @return int
     */
    public function getPeriodYear(): int
    {
        return $this->periodYear;
    }

    /**
     * @param int $periodYear
     */
    public function setPeriodYear(int $periodYear): self
    {
        $this->periodYear = $periodYear;
        return $this;
    }

    /**
     * @return int
     */
    public function getPeriodMonth(): int
    {
        return $this->periodMonth;
    }

    /**
     * @param int $periodMonth
     */
    public function setPeriodMonth(int $periodMonth): self
    {
        $this->periodMonth = $periodMonth;
        return $this;
    }

    /**
     * @return Person
     */
    public function getPerson(): Person
    {
        return $this->person;
    }

    /**
     * @param Person $person
     */
    public function setPerson(Person $person): self
    {
        $this->person = $person;
        return $this;
    }

    /**
     * @return string
     */
    public function getContext(): string
    {
        return $this->context;
    }

    /**
     * @param string $context
     */
    public function setContext(string $context): self
    {
        $this->context = $context;
        return $this;
    }

    /**
     * @return \DateTime
     */
    public function getStartProcess(): \DateTime
    {
        return $this->startProcess;
    }

    /**
     * @param \DateTime $startProcess
     */
    public function setStartProcess(\DateTime $startProcess): self
    {
        $this->startProcess = $startProcess;
        return $this;
    }

    /**
     * @return \DateTime
     */
    public function getLastSend(): \DateTime
    {
        return $this->lastSend;
    }

    /**
     * @param \DateTime $lastSend
     */
    public function setLastSend(\DateTime $lastSend): self
    {
        $this->lastSend = $lastSend;
        return $this;
    }

    /**
     * @return string
     */
    public function getHistory(): string
    {
        return $this->history;
    }

    /**
     * @param string $history
     */
    public function setHistory(string $history): self
    {
        $this->history = $history;
        return $this;
    }


}
 No newline at end of file
+8 −1
Changes for module/Oscar/src/Oscar/Service/PersonService.php: 8 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -555,7 +555,7 @@ class PersonService implements UseOscarConfigurationService, UseEntityManager, U

        //  TODO vérifier que ça fonctionne
        /** @var MailingService $mailer */
        $mailer = $this->getServiceContainer()->get(MailingService::class);
        $mailer = $this->getMailingService();
        $to = $person->getEmail();
        $content .= "</ul>\n";
        $mail = $mailer->newMessage("Notifications en attente", ['body' => $content]);
@@ -563,6 +563,13 @@ class PersonService implements UseOscarConfigurationService, UseEntityManager, U
        $mailer->send($mail);
    }

    /**
     * @return MailingService
     */
    public function getMailingService(){
        return $this->getServiceContainer()->get(MailingService::class);
    }


    /**
     * Charge en profondeur la liste des personnes disposant du privilége sur une
+47 −0
Changes for module/Oscar/src/Oscar/Service/RecallTimesheetService.php: 47 added lines, 0 removed lines.
Original line number Diff line number Diff line
<?php


namespace Oscar\Service;


use Oscar\Entity\Person;

class RecallTimesheetService
{
    private $timesheetService;

    public function getTimesheetService(){
        return $this->timesheetService;
    }

    public function __construct( TimesheetService $timesheetService)
    {
        $this->timesheetService = $timesheetService;
    }

    /**
     * Détermine si la personne est considérée comme déclarant pour la période.
     *
     * @param Person $person
     * @param $period
     */
    public function isDeclarerAt(Person $person, $period)
    {

    }

    public function getRecallPersonAt(Person $person, $period)
    {

    }

    public function autoRecallPersonAt(Person $person, $period)
    {

    }

    public function getDeclarerPeriods(Person $person)
    {

    }
}
 No newline at end of file
+37 −1
Changes for module/Oscar/src/Oscar/Service/TimesheetService.php: 37 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -2475,6 +2475,16 @@ class TimesheetService implements UseOscarUserContextService, UseOscarConfigurat

    public function getPersonRecallDeclarationPeriod($declarerId, $period)
    {

        /****
         * if( $result['needSend'] ){
         * $message = $this->getMailer()->newMessage("[OSCAR] Déclaration de temps $declarerPeriod", "CONTENU : " . $result['message']);
         * $message->setTo($declarer->getEmail());
         * $message->setBody("Message : " . $result['message']);
         * $this->getMailer()->send($message);
         * echo "MAIL !!!! \n";
         * }
         */
        $sendMail = false;
        $message = "";
        $total = 0.0; // Temps total saisi
@@ -2506,11 +2516,13 @@ class TimesheetService implements UseOscarUserContextService, UseOscarConfigurat
        }

        $validations = $this->getValidationPeriodRepository()->getValidationPeriodForPersonAtPeriod($declarerId, $period);
        $statusPack = [];

        if (count($validations)) {
            $hasConflict = false;
            /** @var ValidationPeriod $validation */
            foreach ($validations as $validation) {
                $statusPack[] = $validation->getStatus();
                if ($validation->hasConflict()) {
                    $hasConflict = true;
                }
@@ -2533,14 +2545,38 @@ class TimesheetService implements UseOscarUserContextService, UseOscarConfigurat
        return [
            'person' => "$declarer",
            'message' => "$message",
            'mailRequired' => $sendMail,
            'needSend' => $sendMail,
            'max' => $max,
            'min' => $min,
            'total' => $total,
            'needed' => $needed
            'needed' => $needed,
            'status' => implode(", ", $statusPack)
        ];
    }

    public function recallProcess($declarerId, $period)
    {
        $result = $this->getPersonRecallDeclarationPeriod($declarerId, $period);
        $result['mailSend'] = false;

        // Vérification du dernier envois
        $recalls = ;


        if ($result['needSend']) {
            $declarer = $this->getPersonService()->getPersonById($declarerId);
            $message = $this->getPersonService()->getMailingService()->newMessage("[OSCAR] Déclaration de temps $declarer", "CONTENU : " . $result['message']);
            $message->setTo($declarer->getEmail());
            $message->setBody("Message : " . $result['message']);
            $this->getPersonService()->getMailingService()->send($message);
            $result['mailSend'] = true;

        }
        return $result;
    }


    public function getPersonPeriods(Person $person, $period)
    {