using OASystem.Domain.Entities.PersonnelModule;
using OASystem.Domain.Enums;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OASystem.Domain.ViewModels.PersonnelModule
{
    /// <summary>
    /// 物品详细信息 View
    /// </summary>
    public class GoodsInfoView:Pm_GoodsInfo
    {
    }

    /// <summary>
    /// 物品类型View
    /// </summary>
    [SugarTable("Sys_SetDataType")]
    public class GoodsTypeView
    {
        /// <summary>
        /// 物品类型Id
        /// </summary>
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
        public int Id { get; set; }

        public string Name { get; set; }

        [Navigate(NavigateType.OneToMany, nameof(GoodsSubTypeView.STid))]
        public List<GoodsSubTypeView> SubTypeItems { get; set; }

        public string Remark { get; set; }
        
        public int IsDel { get; set; }
    }

    /// <summary>
    /// 物品Sub类型
    /// View
    /// </summary>
    [SugarTable("Sys_SetData")]
    public class GoodsSubTypeView
    {
        /// <summary>
        /// 物品类型Id
        /// </summary>
        [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
        public int Id { get; set; }

        public int STid { get; set; }

        public string Name { get; set; }

        public int IsDel { get; set; }
    }

    public class GoodsReceiveView
    {

        public int Id { get; set; }
        public int GroupId { get; set; }
        public int GoodsId { get; set; }
        public string GoodsName { get; set; }
        public decimal Quantity { get; set; }
        public string Reason { get; set; }
        public string Remark { get; set; }
        public GoodsAuditEnum AuditStatus { get; set; }
        public string AuditStatusText { get { return AuditStatus.GetEnumDescription(); } }
        public int AuditUserId { get; set; }
        public string AuditUserName { get; set; }
        public DateTime AuditTime { get; set; }
        public string CreateUserName { get; set; }
        public DateTime CreateTime { get; set; }
    }
    /// <summary>
    /// 
    /// </summary>
    public class GoodsReceiveListView: GoodsReceiveView
    {
        public string GoodsType { get; set; }
    }
    /// <summary>
    /// 
    /// </summary>
    public class GoodsReceiveInfoView : GoodsReceiveView
    {
        public string GoodsStorageInfo { get; set; }
        public object? QuantityInfos { get; set; }
        public object? GoodsStorageInfoStr { get; set; }

        public string GoodsType { get; set; }
    }

    /// <summary>
    /// 
    /// </summary>
    public class GoodsReceiveLinkStorageView
    {
        public int StorageId { get; set; }
        public decimal Quantity { get; set; }
    }
}