Exemple #1
0
        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));
        }
Exemple #2
0
        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));
        }
Exemple #3
0
        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));
            }
        }
Exemple #4
0
        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));
            }
        }