using Marco.Pms.Model.Dtos.Attendance;
using Marco.Pms.Model.Employees;
using Marco.Pms.Model.Utilities;
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
using System.ComponentModel.DataAnnotations.Schema;

namespace Marco.Pms.Model.AttendanceModule
{
    public class Attendance : TenantRelation
    {
        public Guid Id { get; set; }
        public string Comment { get; set; } = string.Empty;
        public Guid EmployeeId { get; set; }

        [ForeignKey("EmployeeId")]
        [ValidateNever]
        public Employee? Employee { get; set; }
        public DateTime Date { get; set; }
        public Guid ProjectID { get; set; }

        public DateTime AttendanceDate { get; set; }
        public DateTime? InTime { get; set; }
        public DateTime? OutTime { get; set; }
        public bool IsApproved { get; set; }
        public ATTENDANCE_MARK_TYPE Activity { get; set; }

        public Guid? ApprovedById { get; set; }

        [ForeignKey("ApprovedById")]
        [ValidateNever]
        public Employee? Approver { get; set; }
        public DateTime? RequestedAt { get; set; }
        public DateTime? ApprovedAt { get; set; }
        public Guid? RequestedById { get; set; }

        [ForeignKey("RequestedById")]
        [ValidateNever]
        public Employee? RequestedBy { get; set; }
    }
}
