Exemple #1
0
        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.Выполняется;
        }
Exemple #4
0
        public async Task <IActionResult> Post([FromBody] PurchaseOrderBindingModel model)
        {
            var createdPurchaseOrder = await _purchaseOrderService.AddPurchaseOrder(_mapper.Map <PurchaseOrder>(model));

            return(Ok(_mapper.Map <PurchaseOrderBindingModel>(createdPurchaseOrder)));
        }