public async Task <IActionResult> CreateWithWorkSet(PowderForPartViewModel vm) { var checkedBoxes = vm.CheckBoxes.Where(c => c.IsChecked).ToList(); await SetViewData(); if (checkedBoxes.Count == 0) { ViewBag.NoCheckBoxSelect = "true"; return(RedirectToAction("CreateWithWorkSet", new { workItemId = vm.WorkItemId, workId = vm.WorkId, selectedCheckboxes = false, powderWeightUsed = vm.PowderWeightUsed, dateUsed = vm.DateUsed })); } // find the bottle of powder associated with powderForParts var powder = await _repo.GetPowderBottleForPowderForPart(vm.PowderBottleId); // make sure there is enough powder to perform putting powder to part if (powder.Weight < vm.PowderWeightUsed) { ViewBag.HasEnoughPowder = "false"; ViewBag.PowderLeft = string.Format("{0:0.0000}", powder.Weight); return(RedirectToAction("CreateWithWorkSet", new { workItemId = vm.WorkItemId, workId = vm.WorkId, hasEnoughPowder = false, powderLeft = powder.Weight, selectedCheckboxes = true, powderWeightUsed = vm.PowderWeightUsed, dateUsed = vm.DateUsed })); } powder.Weight -= vm.PowderWeightUsed; // if below threshold after subtracting weight, zero out weight if (powder.Weight <= WEIGHT_THRESHOLD) { powder.Weight = 0.0f; SetUIDs(); await _repo.UpdatePowderBottle(powder); } var weightPerPart = vm.PowderWeightUsed / vm.CheckBoxes.Where(c => c.IsChecked).Count(); foreach (CheckBoxInfo box in vm.CheckBoxes) { if (box.IsChecked) { var powderForPart = new PowderForPart { PartForWorkId = box.PartForWorkId, PowderBottleId = vm.PowderBottleId, PowderForPartId = Guid.NewGuid(), PowderWeightUsed = weightPerPart, DateUsed = vm.DateUsed, }; SetUIDs(); await _repo.AddPowderForPart(powderForPart); } } return(RedirectToAction(nameof(Index))); }