<?php

namespace App\Appointment\Repository;

use App\Appointment\Entity\AppointmentEvent;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;

class AppointmentEventRepository extends ServiceEntityRepository
{
    public function __construct(ManagerRegistry $registry) { parent::__construct($registry, AppointmentEvent::class); }

    public function save(AppointmentEvent $e, bool $flush = true): void
    {
        $this->getEntityManager()->persist($e);
        if ($flush) {
            $this->getEntityManager()->flush();
        }
    }

    /** رویدادهای یک نوبت به‌ترتیب زمان (قدیمی → جدید)، به‌صورت آرایه. */
    public function findByAppointmentUuid(string $appointmentUuid): array
    {
        return $this->createQueryBuilder('e')
            ->select('e.type AS type', 'e.title AS title', 'e.actorName AS actor_name', 'e.reason AS reason', 'e.createdAt AS created_at')
            ->join('e.appointment', 'a')
            ->where('a.uuid = :uuid')->setParameter('uuid', $appointmentUuid)
            ->orderBy('e.createdAt', 'ASC')
            ->getQuery()->getArrayResult();
    }
}
