public IActionResult completeOneContract(CompleteContractDTO completeContractDTO)
        {
            ContractManager contractManager = new ContractManager();
            bool            flag            = contractManager.completeOneContract(completeContractDTO);

            if (flag == true)
            {
                return(Ok(new JsonCreate()
                {
                    message = Utils.ConstMessage.UPDATE_SUCCESS, data = true
                }));
            }
            else
            {
                return(Conflict(new JsonCreate()
                {
                    message = Utils.ConstMessage.UPDATE_FAIL, data = false
                }));
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="completeContractDTO"></param>
        public bool completeOneContract(CompleteContractDTO completeContractDTO)
        {
            try
            {
                Db.Ado.BeginTran();
                CONTRACT contract = Db.Queryable <CONTRACT>().InSingle(completeContractDTO._contract_id);
                contract.CONTRACT_STATUS = 2;
                Db.Updateable(contract).ExecuteCommand();

                var length = Db.Queryable <CONTRACT_ITEM>().Where((it) => it.CONTRACT_ID == completeContractDTO._contract_id)
                             .Select(it => SqlFunc.AggregateCount(it.MEDICINE_ID)).Single();
                if (length != completeContractDTO.stockInDTOs.Count)
                {
                    throw new Exception();
                }
                foreach (StockInDTO stockInDTO in completeContractDTO.stockInDTOs)
                {
                    CONTRACT_ITEM contractItem = Db.Queryable <CONTRACT_ITEM>().
                                                 Where((it) => it.MEDICINE_ID == stockInDTO._medicine_id &&
                                                       it.CONTRACT_ID == completeContractDTO._contract_id).Single();
                    if (contractItem.MEDICINE_STATUS == 2)
                    {
                        continue;
                    }
                    contractItem.MEDICINE_STATUS = 2;
                    Db.Updateable(contractItem).ExecuteCommand();

                    MEDICINE_INSTANCE medicineInstance = new MEDICINE_INSTANCE
                    {
                        MEDICINE_ID     = stockInDTO._medicine_id,
                        BATCH_ID        = stockInDTO._batch_id,
                        PRODUCTION_DATE = stockInDTO._production_date,
                        VALIDITY_DATE   = stockInDTO._validity_date,
                        PURCHASE_PRICE  = contractItem.MEDICINE_MONEY,
                        SALE_PRICE      = stockInDTO._sale_price
                    };
                    Db.Insertable(medicineInstance).ExecuteCommand();

                    MEDICINE_STOCK medicineStock = new MEDICINE_STOCK
                    {
                        MEDICINE_ID = stockInDTO._medicine_id,
                        BATCH_ID    = stockInDTO._batch_id,
                        AMOUNT      = stockInDTO._in_num
                    };

                    Db.Insertable(medicineStock).IgnoreColumns(it => new { it.STOCK_ID }).ExecuteCommand();
                    var id = Db.Ado.SqlQuery <int>("select ISEQ$$_84079.currval from dual").Single();

                    STOCK_IN stockIn = new STOCK_IN
                    {
                        STOCK_ID    = id,
                        CONTRACT_ID = completeContractDTO._contract_id,
                        IN_NUM      = stockInDTO._in_num,
                        IN_TIME     = stockInDTO._in_time
                    };

                    Db.Insertable(stockIn).ExecuteCommand();
                }

                Db.Ado.CommitTran();
                return(true);
            }
            catch (Exception e)
            {
                Db.Ado.RollbackTran();
                return(false);
            }


            //stock_in.IN_NUM=contract.
        }