| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -11,6 +11,7 @@ use Chamilo\CoreBundle\ApiResource\CalendarEvent; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					use Chamilo\CoreBundle\Entity\Session; | 
					 | 
					 | 
					 | 
					use Chamilo\CoreBundle\Entity\Session; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					use Chamilo\CoreBundle\Entity\SessionRelCourse; | 
					 | 
					 | 
					 | 
					use Chamilo\CoreBundle\Entity\SessionRelCourse; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					use Chamilo\CoreBundle\Repository\Node\UsergroupRepository; | 
					 | 
					 | 
					 | 
					use Chamilo\CoreBundle\Repository\Node\UsergroupRepository; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					use Chamilo\CoreBundle\Settings\SettingsManager; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					use Chamilo\CourseBundle\Entity\CCalendarEvent; | 
					 | 
					 | 
					 | 
					use Chamilo\CourseBundle\Entity\CCalendarEvent; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					use Chamilo\CourseBundle\Repository\CCalendarEventRepository; | 
					 | 
					 | 
					 | 
					use Chamilo\CourseBundle\Repository\CCalendarEventRepository; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					use Symfony\Component\Routing\Generator\UrlGeneratorInterface; | 
					 | 
					 | 
					 | 
					use Symfony\Component\Routing\Generator\UrlGeneratorInterface; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -21,7 +22,8 @@ class CalendarEventTransformer implements DataTransformerInterface | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    public function __construct( | 
					 | 
					 | 
					 | 
					    public function __construct( | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        private readonly RouterInterface $router, | 
					 | 
					 | 
					 | 
					        private readonly RouterInterface $router, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        private readonly UsergroupRepository $usergroupRepository, | 
					 | 
					 | 
					 | 
					        private readonly UsergroupRepository $usergroupRepository, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        private readonly CCalendarEventRepository $calendarEventRepository | 
					 | 
					 | 
					 | 
					        private readonly CCalendarEventRepository $calendarEventRepository, | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        private readonly SettingsManager $settingsManager | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ) {} | 
					 | 
					 | 
					 | 
					    ) {} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    public function transform($object, string $to, array $context = []): object | 
					 | 
					 | 
					 | 
					    public function transform($object, string $to, array $context = []): object | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -51,6 +53,8 @@ class CalendarEventTransformer implements DataTransformerInterface | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        $eventType = $this->calendarEventRepository->determineEventType($object); | 
					 | 
					 | 
					 | 
					        $eventType = $this->calendarEventRepository->determineEventType($object); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        $color = $this->determineEventColor($eventType); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        $calendarEvent = new CalendarEvent( | 
					 | 
					 | 
					 | 
					        $calendarEvent = new CalendarEvent( | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            'calendar_event_'.$object->getIid(), | 
					 | 
					 | 
					 | 
					            'calendar_event_'.$object->getIid(), | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            $object->getTitle(), | 
					 | 
					 | 
					 | 
					            $object->getTitle(), | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -67,6 +71,7 @@ class CalendarEventTransformer implements DataTransformerInterface | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            $object->getMaxAttendees(), | 
					 | 
					 | 
					 | 
					            $object->getMaxAttendees(), | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            $object->getResourceNode(), | 
					 | 
					 | 
					 | 
					            $object->getResourceNode(), | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            $object->getResourceLinkListFromEntity(), | 
					 | 
					 | 
					 | 
					            $object->getResourceLinkListFromEntity(), | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            $color | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        ); | 
					 | 
					 | 
					 | 
					        ); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        $calendarEvent->setType($eventType); | 
					 | 
					 | 
					 | 
					        $calendarEvent->setType($eventType); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -99,4 +104,27 @@ class CalendarEventTransformer implements DataTransformerInterface | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            $sessionUrl, | 
					 | 
					 | 
					 | 
					            $sessionUrl, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        ); | 
					 | 
					 | 
					 | 
					        ); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    private function determineEventColor(string $eventType): string | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        $agendaColors = [ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            'platform' => 'red', | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            'course' => '#458B00', | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            'session' => '#00496D', | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            'personal' => 'steel blue', | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        ]; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        $settingAgendaColors = $this->settingsManager->getSetting('agenda.agenda_colors'); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        if (is_array($settingAgendaColors)) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            $agendaColors = array_merge($agendaColors, $settingAgendaColors); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        $colorKeyMap = [ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            'global' => 'platform', | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        ]; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        $colorKey = $colorKeyMap[$eventType] ?? $eventType; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        return $agendaColors[$colorKey] ?? $agendaColors['personal']; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
					 | 
					 | 
					
  |