using System.Security.Claims;

namespace Brizco.Common.Models.Claims;
public static class ApplicationClaims
{

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

    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 ChangeActivityStatus { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ChangeActivityStatus,
        Title = "تغییر وضعیت به فعالیت ",
        Detail = "دسترسی به افزودن و مدیریت فعالیت ها فروشگاه شما"
    };
    public static ClaimDto ViewActivities { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ViewActivities,
        Title = "مشاهده فعالیت ها",
        Detail = "دسترسی به مشاهده فعالیت ها فروشگاه شما"
    };
    public static ClaimDto ViewMineActivities { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ViewMineActivities,
        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 ClaimDto ManageReports { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ManageReports,
        Title = "مشاهده گزارشات",
        Detail = "دسترسی به مشاهده گزارشات"
    };
    public static ClaimDto ManageRoles { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ManageRoles,
        Title = "مشاهده گزارشات",
        Detail = "دسترسی به مشاهده گزارشات"
    };
    public static ClaimDto ViewRoles { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ViewRoles,
        Title = "مشاهده نقش ها",
        Detail = "دسترسی به مشاهده نقش ها"
    };
    public static ClaimDto ManageUsers { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ManageUsers,
        Title = "تغییر کاربران",
        Detail = "دسترسی و تغییر در کاربران"
    };
    public static ClaimDto ViewUsers { get; } = new ClaimDto
    {
        Type = CustomClaimType.Permission,
        Value = ApplicationPermission.ViewUsers,
        Title = "مشاهده کاربران",
        Detail = "دسترسی و تغییر در کاربران"
    };

    public static List<ClaimDto> AllClaimDtos = new List<ClaimDto>
    {
        ManageRecipes,
        ViewRecipes,

        ManageActivities,
        ViewTasks,
        ManageTasks,
        ManageReports,
        ManageRoles,
        ManageShiftPlans,
        ViewShifts,
        ManageShifts,
        ViewRoles,

        ManageUsers,
        ViewUsers,

        ViewComplexes,
        ManageComplexes,

        ViewActivities,
        ViewMineActivities,

        ManageRoutines,
        ViewRoutines,

        ManagePositions,
        ViewPositions,

        ManageSections,
        ViewSections,

        ViewComplexSettings,
        ViewDashboard
    };

    public static List<Claim> AllClaims = new List<Claim>
    {
        ManageRecipes.GetClaim,
        ViewRecipes.GetClaim,

        ManageStaffs.GetClaim,
        ViewStaffs.GetClaim,
        ManageReports.GetClaim,
        ManageRoles.GetClaim,

        ViewUsers.GetClaim,
        ManageUsers.GetClaim,


        ViewRoles.GetClaim,

        ViewTasks.GetClaim,
        ManageTasks.GetClaim,

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

        ViewComplexes.GetClaim,
        ManageComplexes.GetClaim,

        ManageActivities.GetClaim,
        ViewActivities.GetClaim,
        ChangeActivityStatus.GetClaim,
        ViewMineActivities.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>
    {
        ManageRecipes.GetClaim,
        ViewRecipes.GetClaim,

        ManageStaffs.GetClaim,
        ViewStaffs.GetClaim,
        ManageReports.GetClaim,

        ManageActivities.GetClaim,
        ViewActivities.GetClaim,
        ChangeActivityStatus.GetClaim,

        ViewUsers.GetClaim,
        ManageUsers.GetClaim,

        ViewRoles.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>
    {
        ViewRecipes.GetClaim, 

        ManageReports.GetClaim,

        ViewStaffs.GetClaim,

        ViewActivities.GetClaim,

        ViewTasks.GetClaim,

        ViewShiftPlans.GetClaim,

        ViewShifts.GetClaim,

        ViewRoutines.GetClaim,

        ViewPositions.GetClaim,

        ViewSections.GetClaim,

        ViewDashboard.GetClaim,

        ViewUsers.GetClaim,

        ViewComplexSettings.GetClaim
    };

    public static List<Claim> SuperVisorClaims = new List<Claim>
    {
        ManageRecipes.GetClaim,
        ViewRecipes.GetClaim,

        ManageActivities.GetClaim,
        ChangeActivityStatus.GetClaim,
        ViewMineActivities.GetClaim,
        ManageReports.GetClaim,

        ViewTasks.GetClaim,
        ManageTasks.GetClaim,

        ManageShiftPlans.GetClaim,
        ViewShiftPlans.GetClaim,

        ViewShifts.GetClaim,
        ManageShifts.GetClaim,

        ViewDashboard.GetClaim,

        ViewRoutines.GetClaim,
        ViewPositions.GetClaim,
        ViewUsers.GetClaim,
    };

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

        ChangeActivityStatus.GetClaim,
        ViewMineActivities.GetClaim,

        ViewTasks.GetClaim,

        ViewDashboard.GetClaim
    };
}
