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 <JsonCamelCaseResult> UploadDiagnosticResult(HttpPostedFileBase file, int requestId, int diagnosticToolId) { try { // Check File. if (file == null || file.ContentLength <= 0) { throw new Exception("No File Found."); } DiagnosticTool diagnosticTool = (DiagnosticTool)Enum.Parse(typeof(DiagnosticTool), diagnosticToolId.ToString()); // Parse Upload File. var diag = DiagnosticFileParser.ParseFile(file.InputStream, diagnosticTool, DiagnosticFileType.XML); // Assign Request. diag.RequestId = requestId; // Save Result. var result = Factory.Save(diag); // Notify Clients. var messenger = new ScanRequestHubMessenger(); await messenger.NotifyScanUpdated(requestId); // Return Update Result. return(new JsonCamelCaseResult(result.UpdateResult)); } catch (Exception ex) { // Log Error. Logger.LogException(ex); // Prepare Result. var error = new { Success = false, Message = ex.Message }; // Return Error Result. return(new JsonCamelCaseResult(error)); } }
public async Task <JsonCamelCaseResult> SaveScanReport(ReportViewModel report) { try { // Save Report. var update = Factory.Save(Mapper.Map <IReportDto>(report)); // Check for Failure. if (update.UpdateResult?.Success != true) { return(new JsonCamelCaseResult(update)); } // Load Messengers. var clientMessenger = new ClientHubMessenger(); var requestMessenger = new ScanRequestHubMessenger(); // Notify Listeners. await(requestMessenger.NotifyScanUpdated(update.RequestId)); await(clientMessenger.ScanRequestOutDated(Factory.User.UserGuid, update.RequestId)); // Check for Completed. if (!update.CompleteReport) { return(new JsonCamelCaseResult(Mapper.Map <ReportViewModel>(update))); } // Notify Listeners. await(clientMessenger.ScanRequestCompleted()); await(requestMessenger.NotifyScanRemoved(update.RequestId)); // Load Notification Queue. var queue = new MessageQueue(); // Check for Not Cancel. if (!update.CancelReport && report.UserCompletedInd) { // Send Notifications. await(queue.AddNotificationQueueMessageAsync(NotificationTemplate.ShopReportEmail, update.RequestId, Factory.User.UserGuid)); // Send Completed Report to Mitchell. await(queue.AddMitchellReportQueueMessageAsync(update.RequestId, Factory.User.UserGuid)); // Check for Auto Close Bypass. if (!report.AutoRepairCloseBypass) { // Run Auto Close Logic. 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())) { // Update Repair Complete. update.AllowEdit = false; update.RepairComplete = true; // Send Notifications. await(clientMessenger.RepairCompleted()); } } } } } // Check for Cancelled. if (update.CancelReport) { // Look for Cancel Reason Template. var cancelReason = await Factory.GetByIdAsync <ICancelReasonTypeDto>(update.CancelReasonTypeId.ToString()); if (cancelReason?.NotificationTemplate != null) { // Send Notification. await(queue.AddNotificationQueueMessageAsync(cancelReason.NotificationTemplate.Value, report.RequestId, Factory.User.UserGuid)); } } // Return Data. return(new JsonCamelCaseResult(Mapper.Map <ReportViewModel>(update))); } catch (Exception e) { // Log Exception. Logger.LogException(e); // Create Result. report.UpdateResult = new UpdateResultViewModel(false, e.Message); // Return Data. return(new JsonCamelCaseResult(report)); } }