using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;

namespace Strata.Code.DataAccess.Models;

[Table("DepartmentConfig", Schema = "fp")]
[Index("DepartmentId", Name = "NCNU_DepartmentConfig_DepartmentID")]
[Index("EntityGroupConfigGuid", Name = "NCNU_DepartmentConfig_EntityGroupConfigGUID")]
[Index("DepartmentId", "EntityGroupConfigGuid", Name = "UC_FP_DepartmentConfig_DeptID_EGC", IsUnique = true)]
public partial class DepartmentConfig
{
    [Key]
    [Column("DepartmentConfigGUID")]
    public Guid DepartmentConfigGuid { get; set; }

    [Column("DepartmentID")]
    public int DepartmentId { get; set; }

    [Column(TypeName = "datetime")]
    public DateTime UpdatedDate { get; set; }

    [Column("EntityGroupConfigGUID")]
    public Guid EntityGroupConfigGuid { get; set; }

    public bool HasStatistics { get; set; }

    public bool HasRevenueAndDeductions { get; set; }

    public bool HasOtherRevenue { get; set; }

    public bool HasRoster { get; set; }

    public bool HasStaffing { get; set; }

    public bool HasBenefits { get; set; }

    public bool HasNonStaffingExpenses { get; set; }

    public bool HasZeroBasedExpenses { get; set; }

    [ForeignKey("DepartmentId")]
    [InverseProperty("DepartmentConfigs")]
    public virtual DimDepartment Department { get; set; } = null!;

    [ForeignKey("EntityGroupConfigGuid")]
    [InverseProperty("DepartmentConfigs")]
    public virtual EntityGroupConfig EntityGroupConfig { get; set; } = null!;
}
