Internal: Optimize session reminders handling and type determination - refs BT#22151

pull/5944/head
christianbeeznst 10 months ago
parent 5e352ffc81
commit 3e5544e70b
  1. 30
      src/CoreBundle/Command/SendEventRemindersCommand.php
  2. 16
      src/CourseBundle/Entity/CCalendarEvent.php

@ -7,6 +7,7 @@ declare(strict_types=1);
namespace Chamilo\CoreBundle\Command;
use Chamilo\CoreBundle\Entity\AgendaReminder;
use Chamilo\CoreBundle\Entity\Session;
use Chamilo\CoreBundle\Entity\User;
use Chamilo\CoreBundle\Repository\Node\CourseRepository;
use Chamilo\CoreBundle\ServiceHelper\MessageHelper;
@ -160,11 +161,34 @@ class SendEventRemindersCommand extends Command
case 'session':
if ($session = $resourceLink->getSession()) {
foreach ($session->getUsers() as $sessionRelUser) {
$user = $sessionRelUser->getUser();
$course = $resourceLink->getCourse();
if (!$course) {
if ($debug) {
error_log("No course found for resource link in session ID: {$session->getId()}");
}
break;
}
$usersToNotify = [];
$studentSubscriptions = $session->getSessionRelCourseRelUsersByStatus($course, Session::STUDENT);
foreach ($studentSubscriptions as $studentSubscription) {
$usersToNotify[$studentSubscription->getUser()->getId()] = $studentSubscription->getUser();
}
$coachSubscriptions = $session->getSessionRelCourseRelUsersByStatus($course, Session::COURSE_COACH);
foreach ($coachSubscriptions as $coachSubscription) {
$usersToNotify[$coachSubscription->getUser()->getId()] = $coachSubscription->getUser();
}
$generalCoaches = $session->getGeneralCoaches();
foreach ($generalCoaches as $generalCoach) {
$usersToNotify[$generalCoach->getId()] = $generalCoach;
}
foreach ($usersToNotify as $user) {
$this->messageHelper->sendMessageSimple($user->getId(), $messageSubject, $messageContent, $senderId);
if ($debug) {
error_log("Message sent to user ID: {$user->getId()} for session event: ".$event->getTitle());
error_log("Message sent to user ID: {$user->getId()} ({$user->getUsername()}) for session event: {$event->getTitle()}");
}
$sentRemindersCount++;
}

@ -513,6 +513,14 @@ class CCalendarEvent extends AbstractResource implements ResourceInterface, Stri
$resourceLinks = $this->resourceNode->getResourceLinks();
foreach ($resourceLinks as $link) {
if (null !== $link->getCourse() && null === $link->getSession()) {
return 'course';
}
if (null !== $link->getSession()) {
return 'session';
}
if (null === $link->getCourse()
&& null === $link->getSession()
&& null === $link->getGroup()
@ -520,14 +528,6 @@ class CCalendarEvent extends AbstractResource implements ResourceInterface, Stri
) {
return 'global';
}
if (null !== $link->getCourse()) {
return 'course';
}
if (null !== $link->getSession()) {
return 'session';
}
}
return 'personal';

Loading…
Cancel
Save