private async Task AddSingleProduction(AddProductionVM vm) { var productionToAdd = _utilService.GetMapper().Map <AddProductionVM, Production>(vm); var stockInToAdd = _utilService.GetMapper().Map <AddProductionVM, StockIn>(vm); var payableToAdd = _utilService.GetMapper().Map <AddProductionVM, Payable>(vm); var invoiceToAdd = _utilService.GetMapper().Map <AddProductionVM, Invoice>(vm); //string uniqueIdTask =await _repositoryWrapper.Production.GetUniqueId(); //// Todo need to aandle unique id from db //entityToAdd.UniqueId = uniqueIdTask; invoiceToAdd = _repositoryWrapper.Invoice.Create(invoiceToAdd); productionToAdd.InvoiceId = invoiceToAdd.Id; stockInToAdd.InvoiceId = invoiceToAdd.Id; payableToAdd.InvoiceId = invoiceToAdd.Id; productionToAdd = _repositoryWrapper.Production.Create(productionToAdd); stockInToAdd.ProductionId = productionToAdd.Id; payableToAdd.ProductionId = productionToAdd.Id; stockInToAdd = _repositoryWrapper.StockIn.Create(stockInToAdd); payableToAdd = _repositoryWrapper.Payable.Create(payableToAdd); Stock stockToAdd = new Stock(); IEnumerable <Stock> stockList = await _repositoryWrapper .Stock .FindByConditionAsync (x => x.FactoryId == vm.FactoryId && x.ItemId == vm.ItemId && x.ItemStatusId == vm.ItemStatusId); Stock existingStock = stockList.ToList().FirstOrDefault(); // IF NOT PRESENT ADD if (existingStock == null) { stockToAdd = _utilService.Mapper.Map <AddProductionVM, Stock>(vm); _repositoryWrapper.Stock.Create(stockToAdd); } // IF PRESENT UPDATE else { existingStock.Quantity += vm.Quantity; _repositoryWrapper.Stock.Update(existingStock); } Task <int> productionToAddT = _repositoryWrapper.Production.SaveChangesAsync(); Task <int> stockInToAddT = _repositoryWrapper.StockIn.SaveChangesAsync(); Task <int> payableToAddT = _repositoryWrapper.Payable.SaveChangesAsync(); Task <int> stockToAddT = _repositoryWrapper.Stock.SaveChangesAsync(); Task <int> incoiceToAddT = _repositoryWrapper.Invoice.SaveChangesAsync(); await Task.WhenAll(productionToAddT, stockInToAddT, payableToAddT, stockToAddT, incoiceToAddT); }
public async Task <ActionResult <WrapperProductionListVM> > DeleteProduction([FromBody] AddProductionVM itemVM) { return(await _serviceWrapper.ProductionService.Delete(itemVM)); }
// Stock -- decrease // StockIn -- deleted // Payable -- deleted // Production -- deleted public async Task <WrapperProductionListVM> Delete(AddProductionVM itemTemp) { Task <IEnumerable <Production> > productionT = _repositoryWrapper.Production.FindByConditionAsync(x => x.Id == itemTemp.Id && x.FactoryId == itemTemp.FactoryId); Task <IEnumerable <Stock> > stockT = _repositoryWrapper.Stock.FindByConditionAsync(x => x.FactoryId == itemTemp.FactoryId && x.ItemId == itemTemp.ItemId && x.ItemStatusId == itemTemp.ItemStatusId); Task <IEnumerable <Payable> > payableT = _repositoryWrapper.Payable.FindByConditionAsync(x => x.FactoryId == itemTemp.FactoryId && x.ClientId == itemTemp.StaffId && x.Amount == itemTemp.TotalAmount && x.ProductionId == itemTemp.Id); Task <IEnumerable <StockIn> > stockInT = _repositoryWrapper.StockIn.FindByConditionAsync(x => x.FactoryId == itemTemp.FactoryId && x.SupplierId == itemTemp.StaffId && x.ProductionId == itemTemp.Id); Task <IEnumerable <Invoice> > invoiceT = _repositoryWrapper.Invoice.FindByConditionAsync(x => x.FactoryId == itemTemp.FactoryId && x.Id == itemTemp.InvoiceId); await Task.WhenAll(productionT, stockT, payableT, stockInT, invoiceT); var item = productionT.Result.ToList().FirstOrDefault(); if (item == null) { return(new WrapperProductionListVM()); } _repositoryWrapper.Production.Delete(item); _repositoryWrapper.Payable.Delete(payableT.Result.ToList().FirstOrDefault()); _repositoryWrapper.StockIn.Delete(stockInT.Result.ToList().FirstOrDefault()); _repositoryWrapper.Invoice.Delete(invoiceT.Result.ToList().FirstOrDefault()); Stock existingStock = stockT.Result.ToList().FirstOrDefault(); if (existingStock == null) { } else { if (existingStock.Quantity < itemTemp.Quantity) { var dataParam1 = new GetDataListVM() { FactoryId = itemTemp.FactoryId, PageNumber = 1, PageSize = 10, TotalRows = 0 }; WrapperProductionListVM data2 = await GetListPaged(dataParam1); data2.HasMessage = true; data2.Message = "There is not enough item to remove"; return(data2); } else { existingStock.Quantity -= itemTemp.Quantity; _repositoryWrapper.Stock.Update(existingStock); } } Task <int> productionToAddT = _repositoryWrapper.Production.SaveChangesAsync(); Task <int> payableToAddT = _repositoryWrapper.Payable.SaveChangesAsync(); Task <int> stockToAddT = _repositoryWrapper.Stock.SaveChangesAsync(); Task <int> stockInToAddT = _repositoryWrapper.StockIn.SaveChangesAsync(); Task <int> invoiceToAdd = _repositoryWrapper.Invoice.SaveChangesAsync(); await Task.WhenAll(productionToAddT, payableToAddT, stockToAddT, stockInToAddT, invoiceToAdd); var dataParam = new GetDataListVM() { FactoryId = itemTemp.FactoryId, PageNumber = 1, PageSize = 10, TotalRows = 0 }; WrapperProductionListVM data = await GetListPaged(dataParam); return(data); }
public async Task <WrapperProductionListVM> Add(AddProductionVM vm) { var productionToAdd = _utilService.GetMapper().Map <AddProductionVM, Production>(vm); var stockInToAdd = _utilService.GetMapper().Map <AddProductionVM, StockIn>(vm); var payableToAdd = _utilService.GetMapper().Map <AddProductionVM, Payable>(vm); var invoiceToAdd = _utilService.GetMapper().Map <AddProductionVM, Invoice>(vm); //string uniqueIdTask =await _repositoryWrapper.Production.GetUniqueId(); //// Todo need to aandle unique id from db //entityToAdd.UniqueId = uniqueIdTask; invoiceToAdd = _repositoryWrapper.Invoice.Create(invoiceToAdd); productionToAdd.InvoiceId = invoiceToAdd.Id; stockInToAdd.InvoiceId = invoiceToAdd.Id; payableToAdd.InvoiceId = invoiceToAdd.Id; productionToAdd = _repositoryWrapper.Production.Create(productionToAdd); stockInToAdd.ProductionId = productionToAdd.Id; payableToAdd.ProductionId = productionToAdd.Id; stockInToAdd = _repositoryWrapper.StockIn.Create(stockInToAdd); payableToAdd = _repositoryWrapper.Payable.Create(payableToAdd); Stock stockToAdd = new Stock(); IEnumerable <Stock> stockList = await _repositoryWrapper.Stock.FindByConditionAsync(x => x.FactoryId == vm.FactoryId && x.ItemId == vm.ItemId); Stock existingStock = stockList.ToList().FirstOrDefault(); // IF NOT PRESENT ADD if (existingStock == null) { stockToAdd = _utilService.Mapper.Map <AddProductionVM, Stock>(vm); _repositoryWrapper.Stock.Create(stockToAdd); } // IF PRESENT UPDATE else { existingStock.Quantity += vm.Quantity; _repositoryWrapper.Stock.Update(existingStock); } Task <int> productionToAddT = _repositoryWrapper.Production.SaveChangesAsync(); Task <int> stockInToAddT = _repositoryWrapper.StockIn.SaveChangesAsync(); Task <int> payableToAddT = _repositoryWrapper.Payable.SaveChangesAsync(); Task <int> stockToAddT = _repositoryWrapper.Stock.SaveChangesAsync(); Task <int> incoiceToAddT = _repositoryWrapper.Invoice.SaveChangesAsync(); await Task.WhenAll(productionToAddT, stockInToAddT, payableToAddT, stockToAddT, incoiceToAddT); var dataParam = new GetDataListVM() { FactoryId = vm.FactoryId, PageNumber = 1, PageSize = 10, TotalRows = 0 }; WrapperProductionListVM data = await GetListPaged(dataParam); return(data); }