using System;
using System.Collections.Generic;
using ZeroD.Util;

namespace LifePayment.Application.Contracts
{
    public class CreateBackClientUserInput
    {
        /// <summary>
        /// 名称
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// 手机号
        /// </summary>
        public string PhoneNumber { get; set; }
        public string Password { get; set; }

        /// <summary>
        /// 账户
        /// </summary>
        public string UserName { get; set; }

        public string Remark { get; set; }

        /// <summary>
        /// 角色
        /// </summary>
        public string[] RoleNames { get; set; }

        /// <summary>
        /// 渠道列表
        /// </summary>
        public string[] ChannlesId { get; set; }

        /// <summary>
        /// 组织架构公司id
        /// </summary>
        public Guid? CompanyOrgId { get; set; }

        /// <summary>
        /// 组织架构部门id
        /// </summary>
        public Guid? DepartmentOrgId { get; set; }
    }

    public class CreateOrUpdateRoleInput : CreateBaseRoleInput
    {
        /// <summary>
        /// 角色Id
        /// </summary>
        public Guid Id { get; set; }
    }

    public class CreateBaseRoleInput
    {
        /// <summary>
        /// 名称
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// 排序
        /// </summary>
        public int Sequence { get; set; }

        /// <summary>
        /// 部门Id
        /// </summary>
        public int DepartmentId { get; set; }

        /// <summary>
        /// 数据范围 全部数据100 个人数据 10
        /// </summary>
        public int DataRange { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        public string Remark { get; set; }
    }

    /// <summary>
    /// 重置密码基础输入参数
    /// </summary>
    public class ResetPasswordBaseInput
    {
        public Guid UserId { get; set; }

        public string? Password { get; set; }
    }

    public class UpdateBackClientUserInput : CreateBackClientUserInput
    {
        /// <summary>
        /// 用户Id
        /// </summary>
        public Guid Id { get; set; }
    }

    public class RoleEnableOrForbidInput
    {
        /// <summary>
        /// 角色Id
        /// </summary>
        public Guid Id { get; set; }

        /// <summary>
        /// 启用:true,禁用:false
        /// </summary>
        public bool IsEnable { get; set; }

        [System.Text.Json.Serialization.JsonIgnore]
        public string Name { get; set; } = "Name";
    }

    public class UserDto
    {
        /// <summary>
        /// 用户Id
        /// </summary>
        public Guid Id { get; set; }

        /// <summary>
        /// 登录用户名(账号)
        /// </summary>
        public string UserName { get; set; }

        /// <summary>
        /// 名称
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// 用户手机号
        /// </summary>
        public string PhoneNumber { get; set; }

        /// <summary>
        /// 账户是否锁住(是否禁用)
        /// </summary>
        public bool IsLocked { get; set; }

        /// <summary>
        /// 角色信息
        /// </summary>
        public IEnumerable<RoleDto> Roles { get; set; }


        /// <summary>
        /// 角色信息
        /// </summary>
        public IEnumerable<UserChannleDto> Channles { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        public string Remark { get; set; }

        /// <summary>
        /// 组织架构公司id
        /// </summary>
        public Guid? CompanyOrgId { get; set; }

        /// <summary>
        /// 组织架构部门id
        /// </summary>
        public Guid? DepartmentOrgId { get; set; }
    }

    public class GetBackClientUsersInput : PageInput
    {
        /// <summary>
        /// 账户是否锁住(是否禁用)
        /// </summary>
        public bool? IsLocked { get; set; }

        /// <summary>
        /// 查询条件:名称/账号
        /// </summary>
        public string QueryCondition { get; set; }
    }

    public class RoleDto
    {
        /// <summary>
        /// 角色Id
        /// </summary>
        public Guid Id { get; set; }

        /// <summary>
        /// 角色名
        /// </summary>
        public string Name { get; set; }
    }

    public class RoleInfo
    {
        /// <summary>
        /// 角色Id
        /// </summary>
        public Guid Id { get; set; }

        /// <summary>
        /// 名称
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// 排序
        /// </summary>
        public int Sequence { get; set; }

        /// <summary>
        /// 是否可用
        /// </summary>
        public bool IsEnable { get; set; } = true;

        /// <summary>
        /// 部门Id
        /// </summary>
        public int DepartmentId { get; set; }

        /// <summary>
        /// 数据范围 全部数据:100   个人数据:10
        /// </summary>
        public int DataRange { get; set; }
        /// <summary>
        /// 账号数量
        /// </summary>
        public int UserCount { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        public string Remark { get; set; }
    }

    public class UserChannleDto
    {
        /// <summary>
        /// 渠道Id
        /// </summary>
        public string Id { get; set; }

        /// <summary>
        /// 渠道名
        /// </summary>
        public string Name { get; set; }
    }

    public class GetRolesInput : PageInput
    {
        /// <summary>
        /// 查询条件:角色名称
        /// </summary>
        public string QueryCondition { get; set; }
    }
}