Exemplo n.º 1
0
        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)));
        }