Example #1
0
        public async Task <IActionResult> Add()
        {
            var form = new CreateLayingForm();

            await InitLotsList(form);

            return(View(form));
        }
Example #2
0
        public async Task <IActionResult> Add(CreateLayingForm form)
        {
            if (!ModelState.IsValid)
            {
                await InitLotsList(form);

                return(View(form));
            }

            var res = await _laying.Create(form);

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

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

            return(View(form));
        }
Example #3
0
        public async Task <HbResult <HbLaying> > Create(CreateLayingForm form)
        {
            var lotExist = await _dc.Lots.Where(u => !u.IsDeleted && u.Id == form.LotId).AnyAsync();

            if (!lotExist)
            {
                return(new HbResult <HbLaying>(ErrorCodes.LotNotFound));
            }

            var incubatorExist = await _dc.Incubators.AnyAsync(u => !u.IsDeleted && u.Id == form.IncubatorId);

            if (!incubatorExist)
            {
                return(new HbResult <HbLaying>(ErrorCodes.IncubatorNotFound));
            }

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

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

            if (purchasesEggs - existLayings < form.Count)
            {
                return(new HbResult <HbLaying>(ErrorCodes.LayingCountMoreThanPurchasesCount));
            }

            var laying = _dc.Layings.Add(new HbLayings
            {
                Count        = form.Count,
                LayingDate   = form.LayingDate,
                LotId        = form.LotId,
                IncubatorId  = form.IncubatorId,
                CreationDate = DateTimeOffset.UtcNow
            });

            await _dc.SaveChangesAsync();

            await _lots.RecalculateLot(form.LotId);

            return(new HbResult <HbLaying>(_mapper.Map <HbLaying>(laying.Entity)));
        }
Example #4
0
        private async Task InitLotsList(CreateLayingForm form)
        {
            form.Lots = await _lots.GetList(new PagedLotsForm());

            form.Incubators = await _incub.GetList();
        }