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