public PartsRequestViewModel BuildPartsViewModel(JobPlanViewModel formData) { var manufacturerPart = _context.ManufacturerParts .Include(m => m.Manufacturer) .ToList(); ManufacturerPart part = null; var manufacturers = _context.Manufacturers.ToList(); List <StockRoomRequestLine> requestLines = null; if (formData != null && formData.PartsIdList != null) { part = new ManufacturerPart(); requestLines = new List <StockRoomRequestLine>(); string[] tokens = formData.PartsIdList.Split(';'); int[] partIds = Array.ConvertAll <string, int>(tokens, int.Parse); int partIdsLen = partIds.Length / 2; StockRoomRequestLine requestLine; for (int i = 0; i < partIdsLen; i++) { part = manufacturerPart.Single(m => m.Id == partIds[i]); if (part != null) { requestLine = new StockRoomRequestLine(); requestLine.ManufacturerPart = part; requestLine.Number = partIds[i + partIdsLen]; requestLine.Description = "Test" + part.Name; requestLine.Id = i; requestLines.Add(requestLine); } } } var viewModel = new PartsRequestViewModel() { RequestLines = requestLines, ManufacturerParts = manufacturerPart, Manufacturers = manufacturers, WorkOrderNumber = null, JobPlanNumber = null }; if (formData == null || formData.JobPlanId == null || formData.WorkOrderNumber == null) { return(viewModel); } viewModel.WorkOrderNumber = (int)formData.WorkOrderNumber; viewModel.Lines = formData.PartsIdList; viewModel.Notes = formData.PartNotesList; viewModel.JobPlanNumber = (int)formData.JobPlanId; return(viewModel); }
public ActionResult PartsRequest(JobPlanViewModel formData) { var manufacturerPart = _context.ManufacturerParts .Include(m => m.Manufacturer) .ToList(); ManufacturerPart part = new ManufacturerPart(); var manufacturers = _context.Manufacturers.ToList(); List <StockRoomRequestLine> requestLines = new List <StockRoomRequestLine>(); StockRoomRequestLine requestLine; string[] tokens = formData.PartsIdList.Split(';'); int[] partIds = Array.ConvertAll <string, int>(tokens, int.Parse); int planId = formData.JobPlanId; int partIdsLen = partIds.Length / 2; for (int i = 0; i < partIdsLen; i++) { part = manufacturerPart.Single(m => m.Id == partIds[i]); if (part != null) { requestLine = new StockRoomRequestLine(); requestLine.ManufacturerPart = part; requestLine.Number = partIds[i + partIdsLen]; requestLine.Description = "Test" + part.Name; requestLine.Id = i; requestLines.Add(requestLine); } } var viewModel = new PartsRequestViewModel() { RequestLines = requestLines, ManufacturerParts = manufacturerPart, WorkOrderNumber = formData.WorkOrderNumber, Manufacturers = manufacturers, Lines = formData.PartsIdList, Notes = formData.PartNotesList, JobPlanNumber = formData.JobPlanId }; return(View(viewModel)); }
public ActionResult MakeRequest(PartsRequestViewModel formData) { //get information from form here: string value; int keyNumber; string[] keySplit; bool refresh = false; List <RequestLineStruct> requestLines = new List <RequestLineStruct>(); RequestLineStruct requestLine = new RequestLineStruct() { Number = 0, Note = "", PartId = 0 }; foreach (var key in Request.Form.AllKeys) { value = Request.Form.Get(key); if (key == "refresh") { refresh = true; System.Diagnostics.Debug.WriteLine("Refresh"); } else if (key == "place") { System.Diagnostics.Debug.WriteLine("Place"); } else if ((key.StartsWith("RequestLine.") && (value != "0")) || (key.StartsWith("Note.") && (requestLine.Note == null)) || (key.StartsWith("Part.") && (value != "0")) || (key.StartsWith("PartId."))) { keySplit = key.Split('.'); keyNumber = Int32.Parse(keySplit[1]); if (keySplit[0] == "RequestLine") // Take advantage of always having the order of requestLine, Note and PartId in same order... { if (value != "0") { requestLine.Number = Int32.Parse(value); requestLine.PartId = null; requestLine.Note = null; } else { requestLine.Number = 0; requestLine.PartId = 0; requestLine.Note = ""; } } else if (keySplit[0] == "Note" && requestLine.Note == null) { requestLine.Note = value ?? ""; } else if (keySplit[0] == "PartId" && requestLine.PartId == null) { requestLine.PartId = Int32.Parse(value); requestLines.Add(requestLine); } else if (keySplit[0] == "Part" && value != "0") { requestLine.PartId = keyNumber; requestLine.Number = Int32.Parse(value); requestLine.Note = ""; requestLines.Add(requestLine); } } } List <int> partIdList = new List <int>(); List <int> numberList = new List <int>(); List <string> noteList = new List <string>(); List <StockRoomRequestLine> requestLineList = new List <StockRoomRequestLine>(); StockRoomRequestLine requestLineLine; var manufacturerPart = _context.ManufacturerParts.ToList(); object stockRoomRequest = null; if (formData != null && formData.PartRequestNumber != null) { stockRoomRequest = _context.StockRoomRequests.Single(r => r.Id == (int)formData.PartRequestNumber); } for (int i = 0; i < requestLines.Count; i++) { requestLine = requestLines[i]; requestLineLine = new StockRoomRequestLine(); requestLineLine.ManufacturerPart = manufacturerPart.Single(p => p.Id == requestLine.PartId); requestLineLine.ManufacturerPartId = requestLineLine.ManufacturerPart.Id; requestLineLine.Description = requestLine.Note; requestLineLine.Number = requestLine.Number; requestLineLine.Id = i; if (stockRoomRequest != null) { requestLineLine.StockRoomRequest = (StockRoomRequest)stockRoomRequest; requestLineLine.StockRoomRequestId = requestLineLine.StockRoomRequest.Id; } requestLineList.Add(requestLineLine); } if (refresh) { JobPlanViewModel buildModel = new JobPlanViewModel() { WorkOrderNumber = formData.WorkOrderNumber, JobPlanId = formData.JobPlanNumber, }; var viewModel = BuildPartsViewModel(buildModel); viewModel.RequestLines = requestLineList; if (formData.PartRequestNumber != null) { viewModel.PartRequestNumber = formData.PartRequestNumber; } return(View("PartsRequest", viewModel)); } else { if (formData != null && formData.PartRequestNumber != null) // save changed record { int requestId = (int)formData.PartRequestNumber; var stockRoomRequestLines = _context.StockroomRequestLines; var requestRecords = stockRoomRequestLines.Where(r => r.StockRoomRequestId == requestId).ToList(); StockRoomRequestLine record; foreach (var line in requestLineList) // Change or add first { record = requestRecords.SingleOrDefault(r => r.ManufacturerPartId == line.ManufacturerPartId); if (record != null) { record.Description = line.Description; record.Number = line.Number; } else { stockRoomRequestLines.Add(line); } } _context.SaveChanges(); bool done = false; while (!done) { requestRecords = stockRoomRequestLines.Where(r => r.StockRoomRequestId == requestId).ToList(); bool doDelete; foreach (var line in requestRecords) // Delete ones no longer needed { doDelete = true; done = true; foreach (var request in requestLineList) { if (request.ManufacturerPartId == line.ManufacturerPartId) { doDelete = false; break; } } if (doDelete) { var itemToRemove = _context.StockroomRequestLines.SingleOrDefault(x => x.Id == line.Id); if (itemToRemove != null) { _context.StockroomRequestLines.Remove(itemToRemove); _context.SaveChanges(); } System.Diagnostics.Debug.WriteLine("Delete Record"); done = false; break; } } } } else // new record { // create a request first and get the id for it. int workOrderNumber; MaintenanceWorkOrder workOrder = null; Worker worker = null; var workers = _context.Workers.ToList(); StockRoomRequest newStockRoomRequest = new StockRoomRequest() { StockRoomRequestStatus = _context.StockRoomRequestStatuses.Single(i => i.Id == 0), Requested = DateTime.Now, Required = DateTime.Now.AddDays(14), Approval = false }; newStockRoomRequest.StockRoomRequestStatusId = newStockRoomRequest.Id; if (formData != null && formData.WorkOrderNumber != null) { workOrderNumber = (int)formData.WorkOrderNumber; workOrder = _context.MaintenanceWorkOrders.Single(id => id.Id == workOrderNumber); if (workOrder.LeadWorkerId != null) { worker = workers.Single(i => i.Id == workOrder.LeadWorker.Id); newStockRoomRequest.Worker = worker; newStockRoomRequest.WorkerId = worker.Id; } newStockRoomRequest.MaintenanceWorkOrder = workOrder; newStockRoomRequest.MaintenanceWorkOrderId = workOrder.Id; } else { // Will be replaced when logins are possible Random rand = new Random(); Worker rndWorker = workers.ElementAt(rand.Next(_context.Workers.Count())); newStockRoomRequest.Worker = rndWorker; newStockRoomRequest.WorkerId = newStockRoomRequest.Worker.Id; } _context.StockRoomRequests.Add(newStockRoomRequest); _context.SaveChanges(); int requestId = newStockRoomRequest.Id; // Id of new request StockRoomRequest tempStockRoomRequest = _context.StockRoomRequests.Single(i => i.Id == requestId); foreach (var line in requestLineList) { line.StockRoomRequest = tempStockRoomRequest; line.StockRoomRequestId = tempStockRoomRequest.Id; _context.StockroomRequestLines.Add(line); } _context.SaveChanges(); } } return(RedirectToAction("Index", "Maintenance")); }
public ActionResult PartsRequest(JobPlanViewModel formData) { var viewModel = BuildPartsViewModel(formData); return(View(viewModel)); }
public ActionResult JobPlan(int id) { var workOrder = _context.MaintenanceWorkOrders.Single(wo => wo.Id == id); if (workOrder == null) { return(Index()); } if (workOrder.JobPlanId == null) { return(EditWorkOrder(id, "No Work Plan attached to work order!")); } var jobPlan = _context.JobPlans.Single(w => w.Id == workOrder.JobPlanId); if (jobPlan == null) { return(EditWorkOrder(id, "No such Work Plan found on system!")); } var jobPlanDocument = _context.JobPlanDocuments.Single(d => d.JobPlanId == jobPlan.Id); if (jobPlanDocument == null) { return(EditWorkOrder(id, "No Work Plan Document found!")); } var manufacturerParts = _context.ManufacturerParts.ToList(); var jobPlanParts = _context.JobPlanParts.Where(p => p.JobPlanId == jobPlan.Id); List <ManufacturerPart> parts = new List <ManufacturerPart>(); List <int> partIds = new List <int>(); List <int> partNums = new List <int>(); List <string> partNotes = new List <string>(); foreach (JobPlanPart item in jobPlanParts) { partIds.Add(item.ManufacturerPartId); partNums.Add(item.Number > 0 ? item.Number : 1); partNotes.Add(""); } foreach (ManufacturerPart item in manufacturerParts) { if (partIds.Find(x => x.Equals(item.Id)) != 0) { parts.Add(item); } } var viewModel = new JobPlanViewModel { JobPlan = jobPlan, JobPlanDocument = jobPlanDocument, JobPlanId = jobPlan.Id, WorkOrderNumber = id }; if (parts.Any()) { viewModel.ManufacturerParts = parts; string partsList = string.Join(";", parts.Select(x => x.Id.ToString()).ToArray()); partsList += ";" + string.Join <int>(";", partNums); viewModel.PartsIdList = partsList; viewModel.PartNotesList = string.Join(";", partNotes); } return(View("JobPlan", viewModel)); }
public ActionResult MakeRequest(PartsRequestViewModel formData) { //get information from form here: string[] tokens = formData.Lines.Split(';'); int[] partIds = Array.ConvertAll <string, int>(tokens, int.Parse); string value; int keyNumber; string[] keySplit; bool refresh = false; List <RequestLineStruct> requestLines = new List <RequestLineStruct>(); RequestLineStruct requestLine = new RequestLineStruct(); foreach (var key in Request.Form.AllKeys) { value = Request.Form.Get(key); if (key == "refresh") { refresh = true; System.Diagnostics.Debug.WriteLine("Refresh"); } else if (key == "place") { System.Diagnostics.Debug.WriteLine("Place"); } else if ((key.StartsWith("RequestLine.") && (value != "0")) || (key.StartsWith("Note.") && (requestLine.Note == null)) || (key.StartsWith("Part.") && (value != "0"))) { keySplit = key.Split('.'); keyNumber = Int32.Parse(keySplit[1]); if (keySplit[0] == "RequestLine") { if (value != "0") { requestLine.Number = Int32.Parse(value); requestLine.PartId = partIds[keyNumber]; requestLine.Note = null; } } else if (keySplit[0] == "Note" && requestLine.Note == null) { requestLine.Note = value; requestLines.Add(requestLine); } else if (keySplit[0] == "Part" && value != "0") { requestLine.PartId = keyNumber; requestLine.Number = Int32.Parse(value); requestLine.Note = ""; requestLines.Add(requestLine); } } } List <int> partIdList = new List <int>(); List <int> numberList = new List <int>(); List <string> noteList = new List <string>(); foreach (var line in requestLines) { partIdList.Add(line.PartId); numberList.Add(line.Number); noteList.Add(line.Note); } string partString = string.Join <int>(";", partIdList) + ";" + string.Join <int>(";", numberList); string noteString = string.Join(";", noteList); if (refresh) { JobPlanViewModel viewModel = new JobPlanViewModel() { WorkOrderNumber = formData.WorkOrderNumber, PartsIdList = partString, PartNotesList = noteString, JobPlanId = formData.JobPlanNumber }; //return RedirectToAction("PartsRequest", "Maintenance", viewModel); } else { //save code goes here } return(RedirectToAction("Index", "Maintenance")); }