public async Task <IActionResult> Put([FromBody] PurchaseOrderBindingModel model) { await _purchaseOrderService.ThrowErrorIfPurchaseOrderPrinted(model.Id); var updatedPurchaseOrder = await _purchaseOrderService.UpdatePurchaseOrder(_mapper.Map <PurchaseOrder>(model)); return(Ok(_mapper.Map <PurchaseOrderBindingModel>(updatedPurchaseOrder))); }
public void CreatePurchaseOrder(PurchaseOrderBindingModel model) { int maxId = source.PurchaseOrders.Count > 0 ? source.PurchaseOrders.Max(rec => rec.Id) : 0; source.PurchaseOrders.Add(new PurchaseOrder { Id = maxId + 1, CustomerId = model.CustomerId, CandyId = model.CandyId, DateCreate = DateTime.Now, Count = model.Count, Sum = model.Sum, Status = PurchaseOrderStatus.Принят }); }
public void TakePurchaseOrderInWork(PurchaseOrderBindingModel model) { PurchaseOrder element = source.PurchaseOrders.FirstOrDefault(rec => rec.Id == model.Id); if (element == null) { throw new Exception("Элемент не найден"); } var candyIngredients = source.CandyIngredients.Where(rec => rec.CandyId == element.CandyId); foreach (var candyIngredient in candyIngredients) { int countOnWarehouses = source.WarehouseIngredients .Where(rec => rec.IngredientId == candyIngredient.IngredientId) .Sum(rec => rec.Count); if (countOnWarehouses < candyIngredient.Count * element.Count) { var ingredientName = source.Ingredients .FirstOrDefault(rec => rec.Id == candyIngredient.IngredientId); throw new Exception("Недостаточно ингредиентов " + ingredientName?.IngredientName + " требуется " + candyIngredient.Count + ", в наличии " + countOnWarehouses); } } foreach (var candyIngredient in candyIngredients) { int countOnWarehouses = candyIngredient.Count * element.Count; var warehouseIngredients = source.WarehouseIngredients .Where(rec => rec.IngredientId == candyIngredient.IngredientId); foreach (var warehouseIngredient in warehouseIngredients) { if (warehouseIngredient.Count >= countOnWarehouses) { warehouseIngredient.Count -= countOnWarehouses; break; } else { countOnWarehouses -= warehouseIngredient.Count; warehouseIngredient.Count = 0; } } } element.ConfectionerId = model.ConfectionerId; element.DateImplement = DateTime.Now; element.Status = PurchaseOrderStatus.Выполняется; }
public async Task <IActionResult> Post([FromBody] PurchaseOrderBindingModel model) { var createdPurchaseOrder = await _purchaseOrderService.AddPurchaseOrder(_mapper.Map <PurchaseOrder>(model)); return(Ok(_mapper.Map <PurchaseOrderBindingModel>(createdPurchaseOrder))); }