public async Task <ActionResult> SubmitRequestScan(RepairRequestScanViewModel scanRequest) { // Create Scan Request. if (ModelState.IsValid) { var newRequestId = await RepairLib.CreateScanRequest(scanRequest); if (newRequestId > 0) { // Scan Created. TempData["RepairNotice"] = "Scan Request Created!"; // Update Technician Dashboard. await new ClientHubMessenger().ScanRequestCreated(newRequestId) .ConfigureAwait(continueOnCapturedContext: false); var messenger = new ScanRequestHubMessenger(); await messenger.NotifyScanCreated(newRequestId); // Send to Dashboard. return(RedirectToAction("Dashboard")); } } // Not Created. TempData["RepairNotice"] = "Scan Request NOT Created! (Do you have an open scan request?)"; PopulateRequestScanActionViewBag(scanRequest.OrderId); return(View("RequestScan", scanRequest)); }
private async Task <int> QuickRequestSave(IQuickRequest quickRequest, RepairRequestScanViewModel repairRequest) { var requestId = 0; try { // Check Vehicle Entry. if (quickRequest.VehicleMakeId > 0) { // Create Vehicle Model. var vehicle = new VehicleViewModel { VehicleVIN = quickRequest.VehicleVIN, VehicleMakeId = quickRequest.VehicleMakeId, VehicleModel = quickRequest.VehicleModel, VehicleYear = quickRequest.VehicleYear, VehicleTransmission = quickRequest.VehicleTransmission }; // Update Vehicle. Factory.Save((IVehicleDto)vehicle); } // Check Repair. OrderEntityModel repair; var repairs = Db.RepairOrders.Where(o => o.ShopGuid == quickRequest.ShopGuid && o.VehicleVIN == quickRequest.VehicleVIN && o.Status == RepairStatuses.Active).ToList(); if (repairs.Count == 1) { // Load Repair. repair = repairs.First(); await RepairLib.UpdateRepairOrder(new RepairEditViewModel { ShopGuid = quickRequest.ShopGuid, RepairOrderID = repair.OrderId, ShopReferenceNumber = quickRequest.ShopReferenceNumber, InsuranceCompany = new InsuranceCompanyEntityModel { InsuranceCompanyId = quickRequest.InsuranceCompanyId }, InsuranceCompanyOther = quickRequest.InsuranceCompanyOther, Odometer = quickRequest.Odometer, AirBagsDeployed = quickRequest.AirBagsDeployed, AirBagsVisualDeployments = quickRequest.AirBagsVisualDeployments, DrivableInd = quickRequest.DrivableInd, ImpactPoints = quickRequest.ImpactPoints }); } else { // Create Repair. repair = new OrderEntityModel { ShopGuid = quickRequest.ShopGuid, VehicleVIN = quickRequest.VehicleVIN, ShopReferenceNumber = quickRequest.ShopReferenceNumber, InsuranceCompanyId = quickRequest.InsuranceCompanyId, InsuranceCompanyOther = quickRequest.InsuranceCompanyOther, Odometer = quickRequest.Odometer, AirBagsDeployed = quickRequest.AirBagsDeployed, AirBagsVisualDeployments = quickRequest.AirBagsVisualDeployments, DrivableInd = quickRequest.DrivableInd, ImpactPoints = quickRequest.ImpactPoints }; await RepairLib.CreateRepairOrder(repair); } // Update Request. repairRequest.OrderId = repair.OrderId; repairRequest.ContactOtherFirstName = quickRequest.ContactOtherFirstName; repairRequest.ContactOtherLastName = quickRequest.ContactOtherLastName; repairRequest.ContactOtherPhone = quickRequest.ContactOtherPhone; repairRequest.ContactUserGuid = quickRequest.ContactUserGuid; if (repairRequest.RequestTypeID == 0) { repairRequest.RequestTypeID = 6; // Self Scan if Null. } if (repairRequest.RequestTypeCategoryId == 0) { repairRequest.RequestTypeCategoryId = 1; // Pre Request if Null. } // Save Request. requestId = await RepairLib.CreateScanRequest(repairRequest); // Check Result Id. if (quickRequest.DiagnosticResultId.HasValue) { // Load Diagnostic. var diag = Factory.GetById <IDiagnosticResultDto>(quickRequest.DiagnosticResultId.Value.ToString()); // Create Update. diag.RequestId = requestId; // Save Update. Factory.Save(diag); } else { // Upload File. if (Request?.Files[0] != null) { // Parse Upload File. var diag = DiagnosticFileParser.ParseFile(Request.Files[0].InputStream, DiagnosticTool.AutoEnginuity, DiagnosticFileType.XML); // Assign Request. diag.RequestId = requestId; // Save Result. diag = Factory.Save(diag); // Update Result Id. quickRequest.DiagnosticResultId = diag.ResultId; } } } catch (Exception e) { Logger.LogException(e, new { quickRequest, repairRequest }); } return(requestId); }