using Prism.Commands;
using Prism.Mvvm;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DM_Weight.Models
{
    [SugarTable("channel_list")]
    public class ChannelList : BindableBase
    {
        /// 
        ///  
        ///
        [SugarColumn(ColumnName = "chnguid", IsPrimaryKey = true)]
        //[SugarColumn(ColumnName = "id", IsPrimaryKey = true)]
        public string Id { get; set; }
        /// 
        ///  
        /// 默认值: NULL
        ///
        [SugarColumn(ColumnName = "machine_id")]
        public string MachineId { get; set; }
        /// 
        ///  
        /// 默认值: NULL
        ///
        [SugarColumn(ColumnName = "row_no")]
        public int DrawerNo { get; set; }
        /// 
        ///  
        /// 默认值: NULL
        ///
        [SugarColumn(ColumnName = "col_no")]
        public int ColNo { get; set; }
        /// 
        ///  
        /// 默认值: NULL
        ///
        [SugarColumn(ColumnName = "pos_no")]
        public int PosNo { get; set; }
        /// 
        ///  
        /// 默认值: NULL
        ///
        [SugarColumn(ColumnName = "drug_id")]
        public string DrugId { get; set; }
        ///// 
        /////  
        ///// 默认值: NULL
        /////
        //[SugarColumn(ColumnName = "manu_no")]
        //public string ManuNo { get; set; }
        ///// 
        /////  
        ///// 默认值: NULL
        /////
        //[SugarColumn(ColumnName = "eff_date")]
        //public string EffDate { get; set; }
        ///// 
        /////  
        ///// 默认值: NULL
        /////
        //[SugarColumn(ColumnName = "quantity")]
        //public int Quantity { get; set; }
        /// 
        ///  
        /// 默认值: 1
        ///
        [SugarColumn(ColumnName = "drawer_type")]
        public int DrawerType { get; set; }
        /// 
        ///  
        /// 默认值: 1
        ///
        [SugarColumn(ColumnName = "board_type")]
        public int BoardType { get; set; }
        /// 
        ///  
        /// 默认值: 1
        ///
        [SugarColumn(ColumnName = "state")]
        public int? State { get; set; }
        [SugarColumn(IsIgnore = true)]
        public bool IsSelected { get; set; }
        [SugarColumn(IsIgnore = true)]
        public InOutInvoice Invoice { get; set; }
        [SugarColumn(IsIgnore = true)]
        public string Location
        {
            get => DrawerNo + "-" + ColNo;
        }
        //private int _addQuantity = 0;
        //[SugarColumn(IsIgnore = true)]
        //public int AddQuantity
        //{
        //    get => _addQuantity;
        //    set
        //    {
        //        SetProperty(ref _addQuantity, value);
        //    }
        //}
        //private int _takeQuantity = 0;
        //[SugarColumn(IsIgnore = true)]
        //public int TakeQuantity
        //{
        //    get => _takeQuantity;
        //    set
        //    {
        //        if (value > Quantity)
        //        {
        //            throw new ArgumentException("取药数量不能大于库存");
        //        }
        //        SetProperty(ref _takeQuantity, value);
        //    }
        //}
        //private int _returnQuantity = 0;
        //[SugarColumn(IsIgnore = true)]
        //public int ReturnQuantity
        //{
        //    get => _returnQuantity;
        //    set
        //    {
        //        SetProperty(ref _returnQuantity, value);
        //    }
        //}
        //private int _checkQuantity = 0;
        //[SugarColumn(IsIgnore = true)]
        //public int CheckQuantity
        //{
        //    get => _checkQuantity;
        //    set
        //    {
        //        if (value < 0)
        //        {
        //            throw new ArgumentException("盘点数量不能是负数");
        //        }
        //        SetProperty(ref _checkQuantity, value);
        //    }
        //}
        //[SugarColumn(IsIgnore = true)]
        //public int? CanReturnQuantity { get; set; }
        private DrugInfo? _DrugInfo;
        [Navigate(NavigateType.ManyToOne, nameof(DrugId))]
        public DrugInfo Drug { get => _DrugInfo; set => SetProperty(ref _DrugInfo, value); }
        //[SugarColumn(IsIgnore = true)]
        //public int process { get; set; } = 0;
        private DrugManuNo? _drugManuNo;
        [SugarColumn(IsIgnore = true)]
        public DrugManuNo? drugManuNo { get => _drugManuNo; set => SetProperty(ref _drugManuNo, value); }
        private List? _channelStocks;
        [Navigate(NavigateType.OneToMany, nameof(ChannelStock.Chnguid))]
        public List channelStocks { get => _channelStocks; set => SetProperty(ref _channelStocks, value); }
    }
}