public async Task <ActionResult> ScanAnalysisCreate(ScanAnalysisViewModel scanAnalysis) { try { // Create Request. var request = new RepairRequestScanViewModel { RequestTypeID = 7, RequestTypeCategoryId = 1, ProblemDescription = "Scan Analysis" }; // Create. var newRequestId = await QuickRequestSave(scanAnalysis, request); // Update Scan Queue. var messenger = new ScanRequestHubMessenger(); await messenger.NotifyScanCreated(newRequestId); } catch (Exception e) { Logger.LogException(e); return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, e.Message)); } return(new HttpStatusCodeResult(HttpStatusCode.OK)); }
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)); }
public async Task <ActionResult> RequestScan(int?id) { var repair = PopulateRequestScanActionViewBag(id.Value); if (repair == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } if (repair.Status != RepairStatuses.Active) { return(View("RepairClosed")); } // Load Position Statements. var args = new ServiceArgs { { "UploadTypeId", (int)UploadType.VehicleMakes }, { "UploadKey", repair.Vehicle.VehicleMakeId } }; var positionStatements = Factory.GetDisplayList <IUploadDto>(args); var request = new RepairRequestScanViewModel { OrderId = id.Value, PositionStatementLinks = positionStatements.ToList() }; PopulateToolId(request); ViewBag.RequestTypesInstructions = (await Factory.GetAllAsync <IRequestTypeDto>()) .Select(t => new { RequestTypeId = t.RequestTypeId.ToString(), t.Instructions }).ToList(); return(View("RequestScan", request)); }
private void PopulateToolId(RepairRequestScanViewModel request) { var airProTools = ((IEnumerable <KeyValuePair <string, string> >)ViewBag.AirProTools); if (airProTools.Count() == 1) { request.ToolId = int.Parse(airProTools.FirstOrDefault().Key); } }
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); }
public async Task <ActionResult> SelfScanCreate(SelfScanViewModel selfScan) { try { // Create Request. var request = new RepairRequestScanViewModel { RequestTypeID = 6, ProblemDescription = "Self Scan", RequestTypeCategoryId = selfScan.CategoryId, SeatRemovedInd = selfScan.SeatRemovedInd }; // Create Request. var requestId = await QuickRequestSave(selfScan, request); // Load Report. var report = Factory.GetById <IReportDto>(requestId.ToString()); // Generate Report Html. if (report != null && selfScan.DiagnosticResultId.HasValue) { // Set Diagnostic. report.DiagnosticResultSelections = new List <IReportDiagnosticResultSelectionItemDto> { new ReportDiagnosticResultSelectionItemViewModel { ResultId = selfScan.DiagnosticResultId.Value, AssignedToRequestInd = true, SelectedForReportInd = true } }; // Set User. report.ResponsibleTechUserId = Factory.User.UserGuid; // Set Header. report.ReportHeaderHTML = "Self Scan Report<br/>"; if (selfScan.IsAssistedScanRecommended) { report.ReportHeaderHTML += "<b style='color:red;'>All modules were not read on this Vehicle, recommend an Assisted Scan be performed.</b><br/>"; } // Complete Report. report.CompleteReport = true; // Save Report. Factory.Save(report); // Create Notification Tasks. var notifications = new List <Task>(); // Generate Notifications. using (var queue = new MessageQueue()) { notifications.Add(queue.AddNotificationQueueMessageAsync(NotificationTemplate.ShopReportEmail, report.RequestId, Factory.User.UserGuid)); notifications.Add(queue.AddMitchellReportQueueMessageAsync(report.RequestId, Factory.User.UserGuid)); } // Open Connection. using (var conn = new SqlConnection(MvcApplication.ConnectionString)) { // Get Repair Id. var repairId = await conn.QueryFirstOrDefaultAsync <int>("Repair.usp_CloseRepairByRequestId", new { report.RequestId }, null, null, CommandType.StoredProcedure); // Check Repair. if (repairId > 0) { // Close Repair. if (await Factory.DeleteAsync <IRepairDto>(repairId.ToString())) { // Send Notifications. var clientMessenger = new ClientHubMessenger(); notifications.Add(clientMessenger.RepairCompleted()); } } } // Execute Notifications. await Task.WhenAll(notifications.ToArray()); } } catch (Exception e) { Logger.LogException(e); return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, e.Message)); } return(new HttpStatusCodeResult(HttpStatusCode.OK)); }