public IActionResult CreateWithWorkItemSet([Bind("WorkId,Work,WorkItemId,WorkItem,PowderBottleId,PowderWeightUsed,CheckBoxes")] PowderForPartViewModel vm) { return(RedirectToAction("CreateWithWorkSet", "PowderForParts", new { workItemId = vm.WorkItemId, workId = vm.WorkId, hasEnoughPowder = true, powderLeft = 0, selectedCheckboxes = true, powderWeightUsed = 0, dateUsed = DateTime.Now })); }
public async Task <IActionResult> CreateWithWorkSet(Guid workItemId, Guid workId, bool hasEnoughPowder, float powderLeft, bool selectedCheckboxes, float powderWeightUsed, DateTime dateUsed) { var work = await _repo.GetWorkForPowderForPart(workId); var workItems = work.WorkItems.FirstOrDefault(w => w.WorkItemId == workItemId); var vm = new PowderForPartViewModel { Work = work, WorkId = work.WorkId, DateUsed = dateUsed, CheckBoxes = new List <CheckBoxInfo>() }; if (!selectedCheckboxes) { ViewBag.NoCheckboxSelect = "true"; } else if (!hasEnoughPowder) { ViewBag.HasEnoughPowder = "false"; ViewBag.PowderLeft = powderLeft; } ViewBag.DrawingNumber = workItems.StaticPartInfo.DrawingNumber; foreach (PartForWork partForWork in workItems.PartsForWork) { partForWork.WorkItem.Work = await _repo.GetWorkForPowderForPart((Guid)partForWork.WorkItem.WorkId); var checkBox = new CheckBoxInfo() { Label = partForWork.Suffix, PartForWorkId = partForWork.PartForWorkId, }; vm.CheckBoxes.Add(checkBox); } // sort by suffix (aka label) vm.CheckBoxes = vm.CheckBoxes .OrderBy(c => c.Label) .AsEnumerable() .ToList(); ViewBag.WorkDescription = work.WorkDescription; await SetViewData(); vm.PowderWeightUsed = powderWeightUsed; return(View(vm)); }
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))); }