You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							134 lines
						
					
					
						
							3.1 KiB
						
					
					
				
			
		
		
	
	
							134 lines
						
					
					
						
							3.1 KiB
						
					
					
				<?php
 | 
						|
 | 
						|
declare(strict_types=1);
 | 
						|
 | 
						|
/* For licensing terms, see /license.txt */
 | 
						|
 | 
						|
namespace Chamilo\CoreBundle\Entity;
 | 
						|
 | 
						|
use Chamilo\CoreBundle\Traits\TimestampableTypedEntity;
 | 
						|
use Chamilo\CourseBundle\Entity\CCalendarEvent;
 | 
						|
use DateInterval;
 | 
						|
use Doctrine\ORM\Mapping as ORM;
 | 
						|
use Symfony\Component\Serializer\Annotation\Groups;
 | 
						|
 | 
						|
#[ORM\Entity]
 | 
						|
#[ORM\Table(name: 'agenda_reminder')]
 | 
						|
class AgendaReminder
 | 
						|
{
 | 
						|
    use TimestampableTypedEntity;
 | 
						|
 | 
						|
    #[ORM\Id]
 | 
						|
    #[ORM\Column(type: 'integer')]
 | 
						|
    #[ORM\GeneratedValue(strategy: 'AUTO')]
 | 
						|
    #[Groups(['calendar_event:read'])]
 | 
						|
    protected ?int $id = null;
 | 
						|
 | 
						|
    #[ORM\Column(name: 'type', type: 'string')]
 | 
						|
    protected string $type;
 | 
						|
 | 
						|
    #[ORM\Column(name: 'date_interval', type: 'dateinterval')]
 | 
						|
    protected DateInterval $dateInterval;
 | 
						|
 | 
						|
    #[ORM\Column(name: 'sent', type: 'boolean')]
 | 
						|
    protected bool $sent;
 | 
						|
 | 
						|
    #[Groups(['calendar_event:write', 'calendar_event:read'])]
 | 
						|
    public int $count;
 | 
						|
 | 
						|
    #[Groups(['calendar_event:write', 'calendar_event:read'])]
 | 
						|
    public string $period;
 | 
						|
 | 
						|
    #[ORM\ManyToOne(inversedBy: 'reminders')]
 | 
						|
    #[ORM\JoinColumn(referencedColumnName: 'iid', nullable: false)]
 | 
						|
    private ?CCalendarEvent $event = null;
 | 
						|
 | 
						|
    public function __construct()
 | 
						|
    {
 | 
						|
        $this->sent = false;
 | 
						|
    }
 | 
						|
 | 
						|
    public function getId(): ?int
 | 
						|
    {
 | 
						|
        return $this->id;
 | 
						|
    }
 | 
						|
 | 
						|
    public function getType(): string
 | 
						|
    {
 | 
						|
        return $this->type;
 | 
						|
    }
 | 
						|
 | 
						|
    public function setType(string $type): self
 | 
						|
    {
 | 
						|
        $this->type = $type;
 | 
						|
 | 
						|
        return $this;
 | 
						|
    }
 | 
						|
 | 
						|
    public function getDateInterval(): DateInterval
 | 
						|
    {
 | 
						|
        return $this->dateInterval;
 | 
						|
    }
 | 
						|
 | 
						|
    public function setDateInterval(DateInterval $dateInterval): self
 | 
						|
    {
 | 
						|
        $this->dateInterval = $dateInterval;
 | 
						|
 | 
						|
        return $this;
 | 
						|
    }
 | 
						|
 | 
						|
    public function isSent(): bool
 | 
						|
    {
 | 
						|
        return $this->sent;
 | 
						|
    }
 | 
						|
 | 
						|
    public function setSent(bool $sent): self
 | 
						|
    {
 | 
						|
        $this->sent = $sent;
 | 
						|
 | 
						|
        return $this;
 | 
						|
    }
 | 
						|
 | 
						|
    public function getEvent(): ?CCalendarEvent
 | 
						|
    {
 | 
						|
        return $this->event;
 | 
						|
    }
 | 
						|
 | 
						|
    public function setEvent(?CCalendarEvent $event): static
 | 
						|
    {
 | 
						|
        $this->event = $event;
 | 
						|
 | 
						|
        return $this;
 | 
						|
    }
 | 
						|
 | 
						|
    public function decodeDateInterval(): static
 | 
						|
    {
 | 
						|
        $this->dateInterval = match ($this->period) {
 | 
						|
            'i' => DateInterval::createFromDateString("{$this->count} minutes"),
 | 
						|
            'h' => DateInterval::createFromDateString("{$this->count} hours"),
 | 
						|
            'd' => DateInterval::createFromDateString("{$this->count} days"),
 | 
						|
            default => null,
 | 
						|
        };
 | 
						|
 | 
						|
        return $this;
 | 
						|
    }
 | 
						|
 | 
						|
    public function encodeDateInterval(): static
 | 
						|
    {
 | 
						|
        if ($this->dateInterval->i) {
 | 
						|
            $this->count = $this->dateInterval->i;
 | 
						|
            $this->period = 'i';
 | 
						|
        } elseif ($this->dateInterval->h) {
 | 
						|
            $this->count = $this->dateInterval->h;
 | 
						|
            $this->period = 'h';
 | 
						|
        } elseif ($this->dateInterval->d) {
 | 
						|
            $this->count = $this->dateInterval->d;
 | 
						|
            $this->period = 'd';
 | 
						|
        } else {
 | 
						|
            $this->count = (int) $this->dateInterval->format('%a');
 | 
						|
            $this->period = 'd';
 | 
						|
        }
 | 
						|
 | 
						|
        return $this;
 | 
						|
    }
 | 
						|
}
 | 
						|
 |