Пример #1
0
 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
     }));
 }
Пример #2
0
        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));
        }
Пример #3
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)));
        }