Loading module/Oscar/src/Oscar/Command/OscarTimesheetDeclarerRecallCommand.php +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 Loading @@ -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'); Loading Loading @@ -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'])); Loading @@ -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"; } } /** Loading Loading @@ -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 ){ Loading module/Oscar/src/Oscar/Entity/RecallDeclaration.php 0 → 100644 +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 module/Oscar/src/Oscar/Service/PersonService.php +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 Loading @@ -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]); Loading @@ -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 Loading module/Oscar/src/Oscar/Service/RecallTimesheetService.php 0 → 100644 +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 module/Oscar/src/Oscar/Service/TimesheetService.php +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 Loading @@ -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 Loading Loading @@ -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; } Loading @@ -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) { Loading Loading
module/Oscar/src/Oscar/Command/OscarTimesheetDeclarerRecallCommand.php +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 Loading @@ -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'); Loading Loading @@ -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'])); Loading @@ -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"; } } /** Loading Loading @@ -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 ){ Loading
module/Oscar/src/Oscar/Entity/RecallDeclaration.php 0 → 100644 +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
module/Oscar/src/Oscar/Service/PersonService.php +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 Loading @@ -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]); Loading @@ -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 Loading
module/Oscar/src/Oscar/Service/RecallTimesheetService.php 0 → 100644 +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
module/Oscar/src/Oscar/Service/TimesheetService.php +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 Loading @@ -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 Loading Loading @@ -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; } Loading @@ -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) { Loading