public void SaveStoreGradeSize(StoreGradeSizeDTO storeGradeSizeDTO) { double sizeQuantity = 0; var result = this.UnitOfWork.Get <StoreGradeSize>().AsQueryable() .FirstOrDefault(e => e.StoreId == storeGradeSizeDTO.StoreId && e.GradeId == storeGradeSizeDTO.GradeId && e.SizeId == storeGradeSizeDTO.SizeId); if (result == null) { var storeGradeSize = new StoreGradeSize() { GradeId = storeGradeSizeDTO.GradeId, SizeId = storeGradeSizeDTO.SizeId, StoreId = storeGradeSizeDTO.StoreId, Quantity = storeGradeSizeDTO.Quantity, TimeStamp = DateTime.Now }; this.UnitOfWork.Get <StoreGradeSize>().AddNew(storeGradeSize); this.UnitOfWork.SaveChanges(); } else { sizeQuantity = result.Quantity + storeGradeSizeDTO.Quantity; result.StoreId = storeGradeSizeDTO.StoreId; result.SizeId = storeGradeSizeDTO.SizeId; result.GradeId = storeGradeSizeDTO.GradeId; result.Quantity = sizeQuantity; result.TimeStamp = DateTime.Now; this.UnitOfWork.Get <StoreGradeSize>().Update(result); this.UnitOfWork.SaveChanges(); } }
public long SaveStock(Stock stock, string userId) { //saves stock object into stock table var stockDTO = new DTO.StockDTO() { InOrOut = stock.InOrOut, ProductId = stock.ProductId, BatchId = stock.BatchId, BranchId = stock.BranchId, SectorId = stock.SectorId, Deleted = stock.Deleted, StoreId = stock.StoreId, CreatedBy = stock.CreatedBy, CreatedOn = stock.CreatedOn, ProductOutPut = stock.ProductOutPut, }; var stockId = this._dataService.SaveStock(stockDTO, userId); if (stock.StockGradeSize != null) { List <StockGradeSize> stockGradeSizeList = new List <StockGradeSize>(); foreach (var stockGradeSize in stock.StockGradeSize) { var stockGrade_Size = new StockGradeSize() { StockId = stockId, GradeId = stockGradeSize.GradeId, SizeId = stockGradeSize.SizeId, Quantity = stockGradeSize.Quantity, }; stockGradeSizeList.Add(stockGrade_Size); //Method that adds flour output into storeGradeSize table(store flour stock) var storeGradeSize = new StoreGradeSizeDTO() { StoreId = stock.StoreId, GradeId = stockGradeSize.GradeId, SizeId = stockGradeSize.SizeId, Quantity = stockGradeSize.Quantity, }; this._dataService.SaveStoreGradeSize(storeGradeSize); } this._dataService.PurgeStockGradeSize(stockId); this.SaveStockGradeSizeList(stockGradeSizeList); } //save stock and productId into stockproduct table var stockProductDTO = new StockProductDTO() { StockId = stockId, ProductId = stockDTO.ProductId, Quantity = stockDTO.ProductOutPut, }; this._dataService.PurgeStockProduct(stockId); this._dataService.SaveStockProduct(stockProductDTO); var storeStock = new StoreStock() { StoreId = stock.StoreId, ProductId = stock.ProductId, BranchId = stock.BranchId, StockId = stockId, Quantity = stock.ProductOutPut, SectorId = stock.SectorId, }; SaveStoreStock(storeStock, stock.InOrOut); return(stockId); }
private MakeDelivery MakeFlourDeliveryRecord(long storeId, Delivery delivery, string userId) { var soldOut = false; var stockReduced = false; double balance = 0, totalBalance = 0; List <long> orderGradeIds = new List <long>(); List <long> stockGradeIds = new List <long>(); List <StoreGradeSize> storeGradeSizes = new List <StoreGradeSize>(); List <OrderGradeSize> orderGradeSizes = new List <OrderGradeSize>(); var makeDelivery = new MakeDelivery(); var storeStock = _stockService.GetStockForAParticularStoreForDelivery(storeId, delivery.ProductId, delivery.BatchId); var order = _orderService.GetOrder(delivery.OrderId); if (storeStock != null) { if (delivery.Grades != null) { foreach (var grade in delivery.Grades) { orderGradeIds.Add(grade.GradeId); } foreach (var stockGrade in storeStock.Stock.Grades) { stockGradeIds.Add(stockGrade.GradeId); } foreach (var orderGradeId in orderGradeIds) { if (CheckIfStockHasOrderGrade(orderGradeId, stockGradeIds)) { storeGradeSizes = _stockService.GetStoreGradeSizeForParticularGradeAtAStore(orderGradeId, storeStock.StoreId).ToList(); orderGradeSizes = GetOrderGradeSizes(order, orderGradeId); if (orderGradeSizes.Any()) { foreach (var orderGradeSize in orderGradeSizes) { if (storeGradeSizes.Any()) { foreach (var storeGradeSize in storeGradeSizes) { if (orderGradeSize.SizeId == storeGradeSize.SizeId) { balance = storeGradeSize.Quantity - orderGradeSize.Quantity; if (balance < 0) { //store doesn't have enough stock to cover this denomination } else { var storeGradeSizeDTO = new StoreGradeSizeDTO() { GradeId = storeGradeSize.GradeId, StoreId = storeGradeSize.StoreId, SizeId = storeGradeSize.SizeId, Quantity = orderGradeSize.Quantity, }; _stockDataService.SaveStoreGradeSize(storeGradeSizeDTO, false); } } } } else { //store doesn't have that Grade } } } stockReduced = true; makeDelivery = new MakeDelivery() { StockId = storeStock.StockId, StockReduced = stockReduced, OrderQuantityBalance = totalBalance, }; } } return(makeDelivery); } else { return(makeDelivery); } } else { return(makeDelivery); } return(makeDelivery); }