using System.Security.Claims;

namespace Brizco.Common.Models.Claims;
public static class ApplicationClaims
{
    public static ClaimDto ManageComplexes { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ManageComplexes,
        Title = "دسترسی کامل به مجموعه ها",
        Detail = "دسترسی به افزودن و مدیریت مجموعه های سیستم"
    };
    public static ClaimDto ViewComplexes { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ViewComplexes,
        Title = "مشاهده مجموعه ها",
        Detail = "دسترسی به مشاهده مجموعه ها"
    };

    public static ClaimDto ManageStaffs { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ManageStaffs,
        Title = "دسترسی کامل به کارکنان",
        Detail = "دسترسی به افزودن و مدیریت کارکنان مجموعه"
    };
    public static ClaimDto ViewStaffs { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ViewStaffs,
        Title = "مشاهده کارکنان",
        Detail = "دسترسی به مشاهده کارکنان مجموعه"
    };

    public static ClaimDto ManageShifts { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ManageShifts,
        Title = "دسترسی کامل به شیفت ها",
        Detail = "دسترسی به افزودن و مدیریت شیفت ها فروشگاه شما"
    };
    public static ClaimDto ViewShifts { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ViewShifts,
        Title = "دسترسی مشاهده به شیفت ها",
        Detail = "قابلیت مشاهده شیفت های مجموعه"
    };
    public static ClaimDto ManageShiftPlans { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ManageShiftPlans,
        Title = "دسترسی کامل به شیفت بندی ها",
        Detail = "دسترسی به افزودن و مدیریت شیفت بندی فروشگاه شما"
    };
    public static ClaimDto ViewShiftPlans { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ViewShiftPlans,
        Title = "مشاهده کامل به شیفت بندی ها",
        Detail = "دسترسی به افزودن و مدیریت شیفت بندی فروشگاه شما"
    };

    public static ClaimDto ManageTasks { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ManageTasks,
        Title = "دسترسی کامل به وظایف",
        Detail = "دسترسی به افزودن و مدیریت وظایف فروشگاه شما"
    };
    public static ClaimDto ViewTasks { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ViewTasks,
        Title = "دسترسی مشاهده وظایف",
        Detail = "دسترسی مشاهده وظایف مجموعه شما"
    };
    public static ClaimDto ManageActivities { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ManageActivities,
        Title = "دسترسی کامل به فعالیت ها",
        Detail = "دسترسی به افزودن و مدیریت فعالیت ها فروشگاه شما"
    };
    public static ClaimDto ViewActivities { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ViewActivities,
        Title = "مشاهده فعالیت ها",
        Detail = "دسترسی به مشاهده فعالیت ها فروشگاه شما"
    };


    public static ClaimDto ManageRoutines { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ManageRoutines,
        Title = "دسترسی کامل به روتین ها",
        Detail = "دسترسی به افزودن و مدیریت فعالیت ها فروشگاه شما"
    };
    public static ClaimDto ViewRoutines { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ViewRoutines,
        Title = "مشاهده روتین ها",
        Detail = "دسترسی به مشاهده فعالیت ها فروشگاه شما"
    };


    public static ClaimDto ManagePositions { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ManagePositions,
        Title = "دسترسی کامل به پوزیشن ها",
        Detail = "دسترسی به افزودن و مدیریت فعالیت ها فروشگاه شما"
    };
    public static ClaimDto ViewPositions { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ViewPositions,
        Title = "مشاهده پوزیشن ها",
        Detail = "دسترسی به مشاهده فعالیت ها فروشگاه شما"
    };


    public static ClaimDto ManageSections { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ManageSections,
        Title = "دسترسی کامل به سکشن ها",
        Detail = "دسترسی به افزودن و مدیریت فعالیت ها فروشگاه شما"
    };
    public static ClaimDto ViewSections { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ViewSections,
        Title = "مشاهده سکشن ها",
        Detail = "دسترسی به مشاهده فعالیت ها فروشگاه شما"
    };



    public static ClaimDto ViewDashboard { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ViewDashboard,
        Title = "دسترسی کامل به داشبورد ها",
        Detail = "دسترسی به داشبورد ها فروشگاه شما"
    };
    public static ClaimDto ViewComplexSettings { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ViewComplexSettings,
        Title = "مشاهده تنظیمات ها",
        Detail = "دسترسی به مشاهده تنظیمات ها فروشگاه شما"
    };

    public static List<ClaimDto> AllClaimDtos = new List<ClaimDto>
    {
        ManageActivities,
        ViewTasks,
        ManageTasks,

        ManageShiftPlans,
        ViewShifts,
        ManageShifts,

        ViewComplexes,
        ManageComplexes,

        ViewActivities,

        ManageRoutines,
        ViewRoutines,

        ManagePositions,
        ViewPositions,

        ManageSections,
        ViewSections,

        ViewComplexSettings,
        ViewDashboard
    };

    public static List<Claim> AllClaims = new List<Claim>
    {
        ManageStaffs.GetClaim,
        ViewStaffs.GetClaim,

        ViewTasks.GetClaim,
        ManageTasks.GetClaim,

        ManageShiftPlans.GetClaim,
        ViewShifts.GetClaim,
        ManageShifts.GetClaim,

        ViewComplexes.GetClaim,
        ManageComplexes.GetClaim,

        ManageActivities.GetClaim,
        ViewActivities.GetClaim,

        ManageRoutines.GetClaim,
        ViewRoutines.GetClaim,

        ManagePositions.GetClaim,
        ViewPositions.GetClaim,

        ManageSections.GetClaim,
        ViewSections.GetClaim,

        ViewDashboard.GetClaim,
        ViewComplexSettings.GetClaim
    };

    public static List<Claim> ManagerClaims = new List<Claim>
    {
        ManageStaffs.GetClaim,
        ViewStaffs.GetClaim,

        ManageActivities.GetClaim,
        ViewActivities.GetClaim,

        ViewTasks.GetClaim,
        ManageTasks.GetClaim,

        ManageShiftPlans.GetClaim,
        ViewShiftPlans.GetClaim,

        ViewShifts.GetClaim,
        ManageShifts.GetClaim,

        ManageRoutines.GetClaim,
        ViewRoutines.GetClaim,

        ManagePositions.GetClaim,
        ViewPositions.GetClaim,

        ManageSections.GetClaim,
        ViewSections.GetClaim,

        ViewDashboard.GetClaim,
        ViewComplexSettings.GetClaim
    };

    public static List<Claim> ViewerOwnerClaims = new List<Claim>
    {
        ViewStaffs.GetClaim,

        ViewActivities.GetClaim,

        ViewTasks.GetClaim,

        ViewShiftPlans.GetClaim,

        ViewShifts.GetClaim,

        ViewRoutines.GetClaim,

        ViewPositions.GetClaim,

        ViewSections.GetClaim,

        ViewDashboard.GetClaim,
        ViewComplexSettings.GetClaim
    };

    public static List<Claim> SuperVisorClaims = new List<Claim>
    {
        ManageActivities.GetClaim,
        ViewActivities.GetClaim,

        ViewTasks.GetClaim,
        ManageTasks.GetClaim,

        ManageShiftPlans.GetClaim,
        ViewShiftPlans.GetClaim,

        ViewShifts.GetClaim,
        ManageShifts.GetClaim,

        ViewDashboard.GetClaim
    };

    public static List<Claim> StaffClaims = new List<Claim>
    {
        ManageActivities.GetClaim,
        ViewActivities.GetClaim,

        ViewTasks.GetClaim,

        ViewDashboard.GetClaim
    };
}
