public async Task <IActionResult> Create(WorkType workType, [Bind("WorkId,QuoteId,EndlasNumber,WorkDescription,Status,PurchaseOrderNum,NumWorkItems,DueDate,StartDate,PoDate,CompleteDate,UserId,CustomerId,SystemConfigurationPdfFile")] Work work) { ViewBag.WorkType = workType; var vm = new WorkViewModel(); var workList = await _repo.GetWorkWithEndlasNumber(work.EndlasNumber); var quotes = await _repo.GetQuotesWithEndlasNumber(work.EndlasNumber); if (workList.Any() || quotes.Count() > 1) { ViewBag.EndlasNumberConflict = true; ViewData["CustomerId"] = new SelectList(await _repo.GetAllCustomers(), "CustomerId", "CustomerName"); return(View(work)); } if (ModelState.IsValid) { if (work.QuoteId == null && workType == WorkType.Job) { ViewBag.NoQuoteWarning = true; return(View(work)); } work.WorkId = Guid.NewGuid(); if (work.SystemConfigurationPdfFile != null) { work.SystemConfigurationPdfBytes = await FileURL.GetFileBytes(work.SystemConfigurationPdfFile); } SetUIDs(); if (workType == WorkType.Job) { var quote = await _repo.GetQuote((Guid)work.QuoteId); work.EndlasNumber = quote.EndlasNumber; await _repo.AddJob(Job.CastWorkToJob(work)); } else if (workType == WorkType.WorkOrder) { await _repo.AddWorkOrder(WorkOrder.CastWorkToWorkOrder(work)); } for (int i = 0; i < work.NumWorkItems; i++) { WorkItem workItem = new WorkItem { WorkItemId = Guid.NewGuid(), WorkId = work.WorkId }; await _repo.AddWorkItem(workItem); } return(RedirectToAction(nameof(Index), new { workType = workType })); } await SetViewData(); vm = new WorkViewModel(work, workType); return(View(vm)); }
public async Task <IActionResult> Edit(Guid id, WorkType workType, [Bind("WorkId,QuoteId,EndlasNumber,WorkDescription,Status,PurchaseOrderNum,NumWorkItems,DueDate,StartDate,PoDate,CompleteDate,UserId,CustomerId,SystemConfigurationPdfFile")] Work work) { ViewBag.WorkType = workType; if (id != work.WorkId) { return(NotFound()); } ViewBag.WorkType = workType; var workList = await _repo.GetWorkWithEndlasNumber(work.EndlasNumber); var quotes = await _repo.GetQuotesWithEndlasNumber(work.EndlasNumber); if (workList.Any() || (workType == WorkType.Job && quotes.Count() > 1)) { ViewBag.EndlasNumberConflict = "true"; return(View(work)); } if (ModelState.IsValid) { try { if (work.SystemConfigurationPdfFile != null) { work.SystemConfigurationPdfBytes = await FileURL.GetFileBytes(work.SystemConfigurationPdfFile); } if (work.ClearPdf) { work.SystemConfigurationPdfBytes = null; } SetUIDs(); switch (workType) { case WorkType.Job: var quote = await _repo.GetQuote((Guid)work.QuoteId); work.EndlasNumber = quote.EndlasNumber; await _repo.UpdateJob(Job.CastWorkToJob(work)); break; case WorkType.WorkOrder: await _repo.UpdateWorkOrder(WorkOrder.CastWorkToWorkOrder(work)); break; case WorkType.Work: await _repo.UpdateWork(work); break; default: break; } } catch (DbUpdateConcurrencyException) { if (!(await JobExists(work.WorkId))) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index), new { workType = workType })); } await SetViewData(Job.CastWorkToJob(work)); return(View(work)); }