// EN: Staff schedule entity for availability management.
// VI: Entity StaffSchedule cho quản lý lịch trống.

using BookingService.Domain.SeedWork;

namespace BookingService.Domain.AggregatesModel.StaffAggregate;

/// <summary>
/// EN: Staff schedule entity - defines staff working hours.
/// VI: Entity StaffSchedule - định nghĩa giờ làm việc của nhân viên.
/// </summary>
public class StaffSchedule : Entity
{
    private Guid _staffId;
    private Guid _shopId;
    private int _dayOfWeek; // 0 = Sunday, 6 = Saturday
    private TimeOnly _startTime;
    private TimeOnly _endTime;

    public Guid StaffId => _staffId;
    public Guid ShopId => _shopId;
    public int DayOfWeek => _dayOfWeek;
    public TimeOnly StartTime => _startTime;
    public TimeOnly EndTime => _endTime;

    protected StaffSchedule()
    {
    }

    public StaffSchedule(Guid staffId, Guid shopId, int dayOfWeek, TimeOnly startTime, TimeOnly endTime)
    {
        Id = Guid.NewGuid();
        _staffId = staffId;
        _shopId = shopId;
        _dayOfWeek = dayOfWeek;
        _startTime = startTime;
        _endTime = endTime;
    }
}
