// EN: Booking domain events.
// VI: Domain events của Booking.

using BookingService.Domain.AggregatesModel.AppointmentAggregate;
using MediatR;

namespace BookingService.Domain.Events;

/// <summary>
/// EN: Domain event raised when an appointment is created.
/// VI: Domain event phát ra khi lịch hẹn được tạo.
/// </summary>
public record AppointmentCreatedDomainEvent(Appointment Appointment) : INotification;

/// <summary>
/// EN: Domain event raised when an appointment is completed.
/// VI: Domain event phát ra khi lịch hẹn hoàn thành.
/// </summary>
public record AppointmentCompletedDomainEvent(Appointment Appointment) : INotification;

/// <summary>
/// EN: Domain event raised when an appointment is cancelled.
/// VI: Domain event phát ra khi lịch hẹn bị hủy.
/// </summary>
public record AppointmentCancelledDomainEvent(Appointment Appointment, string Reason) : INotification;
