public async Task <IActionResult> Add() { var form = new CreateBroodForm(); await InitLotsList(form); return(View(form)); }
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))); }
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)); }
private async Task InitLotsList(CreateBroodForm form) { form.Lots = await _lots.GetList(new PagedLotsForm()); }