src/Controller/CronController.php line 37

  1. <?php
  2. namespace App\Controller;
  3. use App\Classes\ConfigurationUtility;
  4. use App\Classes\Setup\EventReminder\EventReminderClass;
  5. use App\Repository\ActivityAssignmentsRepository;
  6. use App\Repository\EventRemindersRepository;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. /**
  11.  * @Route("/cron")
  12.  */
  13. class CronController extends AbstractController
  14. {
  15.     private $event_reminder;
  16.     private $assignmentRepository;
  17.     private $event_reminder_class;
  18.     public function __construct(
  19.         EventRemindersRepository $eventReminder,
  20.         EventReminderClass $eventReminderClass,
  21.         ActivityAssignmentsRepository $activityAssignmentsRepository
  22.     ) {
  23.         $this->event_reminder $eventReminder;
  24.         $this->assignmentRepository $activityAssignmentsRepository;
  25.         $this->event_reminder_class $eventReminderClass;
  26.     }
  27.     /**
  28.      * @return Response
  29.      * @Route("/email-event-reminder", name="cron_event_reminder", methods={"GET"})
  30.      */
  31.     public function sendEmailReminder(): Response
  32.     {
  33.         date_default_timezone_set('UTC');
  34.         $currentDate = new \DateTime();
  35.         $url ConfigurationUtility::getBaseUrl() . '/login';
  36.         $currentTime date('H:i');
  37.         $eventReminders $this->event_reminder->getEventReminders();
  38.         foreach ($eventReminders as $val) {
  39.             if (isset($val['days_before']) && $val['days_before'] !== && $val['time'] === $currentTime) {
  40.                 $currentDate->add(new \DateInterval("P{$val['days_before']}D"));
  41.                 $date_filter $currentDate->format('Y-m-d');
  42.                 $assignment $this->assignmentRepository->findByFilters([
  43.                     'conference_id' => $val['conference_id'],
  44.                     'date_start' => $date_filter,
  45.                 ]);
  46.                 if (count($assignment) > 0) {
  47.                     foreach ($assignment as $item) {
  48.                         $date_start date('m/d/Y'strtotime($item['event_date']));
  49.                         $workerJobs = [];
  50.                         $event_status_name $item['event_status_name'] !== "" strtoupper($item['event_status_name']) : null;
  51.                         if (!in_array($event_status_name, ['CANCELLED''POSTPONED TO''POSTPONED'])) {
  52.                             if (count($item['activity_assignment_details']) > 0) {
  53.                                 $workerJobs =  $this->event_reminder_class
  54.                                     ->groupActivityAssignmentByWorker($item['activity_assignment_details']);
  55.                                 foreach ($workerJobs as $v) {
  56.                                     if (count($v)) {
  57.                                         $jobNames $this->event_reminder_class->getAllJobName($v);
  58.                                         $details = [
  59.                                             'email_subject' => 'Event reminder for ' $item['activity_name'] . ' on ' $date_start,
  60.                                             'email_to' => $v[0]['worker_email'],
  61.                                             'email_cc' => $val['email'],
  62.                                             'worker_name' => $v[0]['worker_name'],
  63.                                             'worker_id' => $v[0]['worker_id'],
  64.                                             'savable' => true,
  65.                                         ];
  66.                                         $body $this->event_reminder_class->createEventReminderEmailTemplate([
  67.                                             'worker_name' => $v[0]['worker_name'],
  68.                                             'job_name' => $jobNames,
  69.                                             'event_name' => $item['activity_name'],
  70.                                             'event_date' => $date_start,
  71.                                             'event_time' => $item['time_start'],
  72.                                             'event_location' => $item['location'],
  73.                                             'email_content' => $val['email_content'],
  74.                                             'url' => $url
  75.                                         ]);
  76.                                         $this->event_reminder_class->sendReminder($body$details);
  77.                                     }
  78.                                 }
  79.                             }
  80.                         }
  81.                     }
  82.                 }
  83.             }
  84.         }
  85.         return $this->json(true);
  86.     }
  87. }