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. }