using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Backend.Models
{
    public enum UserStatusEnum : byte
    {
        Suspend = 0, //停權
        Normal = 1, //正常
    }

    public class UserInfo : Actor
    {
        public string Userinfo_guid { get; set; }
        public byte Deleted { get; set; } //是否刪除
        public byte Status { get; set; } //狀態
        public string StatusText //狀態文字
        {
            get
            {
                Dictionary<int, string> pairs = new Dictionary<int, string>()
                {
                    { 0, "停權"},
                    { 1, "正常"},
                };

                return pairs[Status];
            }
        }
        public string Role_guid { get; set; } //角色guid
        public string Full_name { get; set; } //姓名
        public string Account { get; set; } //帳號
        public string Password { get; set; } //密碼
        public string Tel { get; set; } //市話
        public string Phone { get; set; } //手機
        public string Email { get; set; } //信箱
    }

    public class UserManagerList : Actor
    {
        public string Userinfo_guid { get; set; }
        public string Full_name { get; set; } //姓名
        public string Role_full_name { get; set; } //角色名稱
        public string Email { get; set; } //信箱
        public string Phone { get; set; } //手機
        public string Account { get; set; }
        public byte Layer { get; set; }
    }

    public class RoleManagerList : Actor
    {
        public string Role_guid { get; set; }
        public string Full_name { get; set; } //姓名
        public byte Layer { get; set; }
    }

    public class SaveUserManager
    {
        public string Id { get; set; }
        public string Name { get; set; } //姓名
        public string Email { get; set; } //信箱
        public string Account { get; set; } //帳號
        public string Phone { get; set; } //手機號碼
        public string RoleId { get; set; } //角色GUID
    }

    public class SimpleUser
    {
        public string Full_name { get; set; } //姓名
        public string Account { get; set; } //帳號
        public string Email { get; set; } //信箱
        public string Phone { get; set; } //手機
        public string Role_guid { get; set; } //角色GUID
    }

    public class PostRole
    {
        public string Id { get; set; }
        public string Name { get; set; }
    }

    public class SimpleRole
    {
        public string Full_name { get; set; } //姓名
    }

    public class RoleAuthList : Actor
    {
        public string Role_guid { get; set; } //角色GUID
        public string AuthCode { get; set; } //權限代碼
        public string Role_full_name { get; set; } //角色名稱
        public int AuthType { get; set; } //角色類型 1:前台 2:後台
        public string AuthTypeText //角色類型文字
        {
            get {
                Dictionary<int, string> pairs = new Dictionary<int, string>()
                {
                    { 1, "前台"},
                    { 2, "後台"},
                };

                return pairs[AuthType];
            }
        }
        public string MainName { get; set; } //大項名稱
        public string SubName { get; set; } //功能名稱
        public string Building_full_name { get; set; } //區域名稱
    }

    public class PostRoleAuthFilter
    {
        public string SelectedRoleId { get; set; }
        public string SelectedAuthType { get; set; }
        public string SelectedBuild { get; set; }
    }

    public class AuthPage
    {
        public string AuthCode { get; set; }
        public string MainName { get; set; }
        public string SubName { get; set; }
    }

    public class PostSaveRoleAuth
    {
        public string SelectedRoleId { get; set; }
        public List<string> SaveCheckAuth { get; set; }
        //public FrontEndCheckAuth BackEndCheckAuth { get; set; }
    }

    public class PostDeleteRoleAuth
    {
        public string RoleId { get; set; }
        public string AuthCode { get; set; }
    }

    //public class FrontEndCheckAuth
    //{
    //    public string Building { get; set; }
    //    public List<string> SelectedAuth { get; set; }
    //}
    public class Auth_page
    {
        public string AuthCode { get; set; }
        public byte AuthType { get; set; }
        public string MainName { get; set; }
        public string SubName { get; set; }
        public string building_guid { get; set; }
        public string ShowView { get; set; }
        public string created_at { get; set; }
    }
    public class JwtLogin
    {
        public string userinfo_guid { get; set; }
        public string account { get; set; }
        public string full_name { get; set; }
        public string email { get; set; }
    }
    public class JwtGet : JwtLogin
    {
        public int nbf { get; set; }
        public int exp { get; set; }
    }
}