public async Task <ActionResult> Add(WebUser user, PayingItemModel pItem, int typeOfFlow)
        {
            if (ModelState.IsValid)
            {
                if (pItem.PayingItem.Date.Month > DateTime.Today.Date.Month ||
                    pItem.PayingItem.Date.Year > DateTime.Today.Year)
                {
                    pItem.PayingItem.Date = DateTime.Today.Date;
                }
                try
                {
                    if (pItem.Products == null)
                    {
                        await _payingItemService.CreateAsync(pItem.PayingItem);
                    }
                    else
                    {
                        var summ = pItem.Products.Sum(x => x.Price);
                        if (summ != 0)
                        {
                            pItem.PayingItem.Summ = summ;
                        }
                        _payingItemHelper.CreateCommentWhileAdd(pItem);
                        await _payingItemService.CreateAsync(pItem.PayingItem);

                        await _pItemProductHelper.CreatePayingItemProduct(pItem);
                    }
                }
                catch (ServiceException e)
                {
                    throw new WebUiException(
                              $"Ошибка в контроллере {nameof(PayingItemController)} в методе {nameof(Add)}", e);
                }
                catch (WebUiHelperException e)
                {
                    throw new WebUiException(
                              $"Ошибка в контроллере {nameof(PayingItemController)} в методе {nameof(Add)}", e);
                }
                catch (Exception e)
                {
                    throw new WebUiException(
                              $"Ошибка в контроллере {nameof(PayingItemController)} в методе {nameof(Add)}", e);
                }
                return(RedirectToAction("List"));
            }
            await FillViewBag(user, typeOfFlow);

            return(PartialView(pItem));
        }
        public async Task <PayingItem> CreateAsync(PayingItem item)
        {
            var insertedItem = await _payingItemService.CreateAsync(item);

            await _serviceTrigger.Insert(insertedItem);

            return(insertedItem);
        }
Exemple #3
0
        public async Task <PayingItem> CreatePayingItemFromViewModel(PayingItemModel model)
        {
            if (model is null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            try
            {
                if (model.PayingItem.Date.Month > DateTime.Today.Date.Month ||
                    model.PayingItem.Date.Year > DateTime.Today.Year)
                {
                    model.PayingItem.Date = DateTime.Today.Date;
                }

                if (model.Products != null)
                {
                    var sum = model.Products.Sum(x => x.Price);
                    if (sum != 0)
                    {
                        model.PayingItem.Summ = sum;
                    }

                    CreateCommentWhileAdd(model);

                    var itemsToAdd = model.Products.Where(x => x.ProductID != 0)
                                     .Select(product => new PayingItemProduct()
                    {
                        PayingItemId = model.PayingItem.ItemID,
                        ProductId    = product.ProductID,
                        Price        = product.Price
                    });

                    foreach (var item in itemsToAdd)
                    {
                        model.PayingItem.PayingItemProducts.Add(item);
                    }
                }

                return(await _payingItemService.CreateAsync(model.PayingItem));
            }
            catch (ServiceException e)
            {
                throw new WebUiException($"Ошибка в типе {nameof(PayingItemCreator)} в методе {nameof(CreatePayingItemFromViewModel)}", e);
            }
            catch (Exception e)
            {
                throw new WebUiException($"Ошибка в типе {nameof(PayingItemCreator)} в методе {nameof(CreatePayingItemFromViewModel)}", e);
            }
        }