Пример #1
0
        public async Task <IActionResult> Add()
        {
            var form = new CreateBroodForm();

            await InitLotsList(form);

            return(View(form));
        }
Пример #2
0
        public async Task <HbResult <HbBrood> > Create(CreateBroodForm form)
        {
            var lot = await _dc.Lots
                      .Include(u => u.Layings)
                      .Include(u => u.Overheads)
                      .Include(u => u.Purchases)
                      .FirstOrDefaultAsync(u => u.Id == form.LotId && !u.IsDeleted);

            if (lot == null)
            {
                return(new HbResult <HbBrood>(ErrorCodes.LotNotFound));
            }

            var existBroodsSum = await _dc.Broods.Where(u => u.LotId == form.LotId && !u.IsDeleted)
                                 .SumAsync(u => u.Count);

            var layingSum = lot.Layings.Where(u => !u.IsDeleted).Sum(u => u.Count);

            if (layingSum < existBroodsSum + form.Count)
            {
                return(new HbResult <HbBrood>(ErrorCodes.BroodAmountMoreThanLayingsSum));
            }

            var broodPrice = lot.Overheads.Where(u => !u.IsDeleted).Sum(u => u.Amount) + lot.Purchases.Where(u => !u.IsDeleted).Sum(u => u.Amount);

            var brood = _dc.Broods.Add(new HbBroods
            {
                CreationDate = DateTimeOffset.UtcNow,
                BroodDate    = form.BroodDate,
                Count        = form.Count,
                DeadCount    = form.DeadCount,
                EmptyCount   = form.EmptyCount,
                LotId        = form.LotId,
                DeadPercent  = Math.Round(100m * form.DeadCount / layingSum, 2),
                EmptyPercent = Math.Round(100m * form.EmptyCount / layingSum, 2),
                Percent      = Math.Round(100m * form.Count / layingSum, 2),
                PlacePrice   = Math.Round(broodPrice / form.Count, 2)
            });

            await _dc.SaveChangesAsync();

            await _lotsUnit.RecalculateLot(form.LotId);

            return(new HbResult <HbBrood>(_mapper.Map <HbBrood>(brood.Entity)));
        }
Пример #3
0
        public async Task <IActionResult> Add(CreateBroodForm form)
        {
            if (!ModelState.IsValid)
            {
                await InitLotsList(form);

                return(View(form));
            }

            var res = await _broods.Create(form);

            if (res.IsCorrect)
            {
                return(RedirectToAction(nameof(List)));
            }

            ViewData[ViewDataKeys.ErrorMessage] = res.ErrorMessage;
            await InitLotsList(form);

            return(View(form));
        }
Пример #4
0
 private async Task InitLotsList(CreateBroodForm form)
 {
     form.Lots = await _lots.GetList(new PagedLotsForm());
 }