Exemplo n.º 1
0
        public async Task <ActionResult> SelfScanUpload(Guid id)
        {
            // Create Response.
            var response = new SelfScanViewModel
            {
                ShopGuid          = id,
                VehicleSelectList = GetVehicleMakeSelectList()
            };

            // Check Upload Files.
            if (Request?.Files?[0] == null)
            {
                return(Json(response));
            }

            // Parse VIN Number.
            var diagnosticResult = DiagnosticFileParser.ParseFile(Request.Files[0].InputStream, DiagnosticTool.AutoEnginuity, DiagnosticFileType.XML);
            var vin = diagnosticResult?.VehicleVin;

            // Check VIN Number.
            if (string.IsNullOrEmpty(vin) || vin == "Not Reported")
            {
                return(Json(response));
            }

            response.ShowAssistedScanRecommended = NeedShowAssistedScanRecommended(diagnosticResult);

            await QuickRequestSearch(id, response, vin);

            return(Json(response));
        }
        public static async Task <HttpResponseMessage> RunProcessor([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequestMessage req, TraceWriter log)
        {
            // Get Request Body.
            var body = await req.Content.ReadAsStringAsync();

            try
            {
                // Parse Query Parameters.
                var paramValues = string.Join("&", req.GetQueryNameValuePairs()?.Select(q => $"{q.Key}={q.Value}") ?? new string[] { });

                // Save Request.
                using (var conn = new SqlConnection(ConnectionString))
                {
                    await conn.ExecuteAsync("Service.usp_SaveAutoEnginuityUpload", new { RequestQuery = paramValues, RequestBody = body }, commandType : CommandType.StoredProcedure);
                }
            }
            catch (Exception e)
            {
                // Log Error.
                Logger.LogException(e);
            }

            // Check Body.
            if (string.IsNullOrWhiteSpace(body))
            {
                return(req.CreateResponse(HttpStatusCode.OK, "Request Processed."));
            }

            try
            {
                // Parse File.
                var file = DiagnosticFileParser.ParseFile(body, DiagnosticTool.AutoEnginuity, DiagnosticFileType.JSON);

                // Save File.
                var factory = new ServiceFactory(ConnectionString, new GenericIdentity("*****@*****.**"));
                factory.Save(file);

                // Return OK.
                return(req.CreateResponse(HttpStatusCode.OK, "Request Processed."));
            }
            catch (Exception e)
            {
                // Log Error.
                Logger.LogException(e);
            }

            // Return Error.
            return(req.CreateErrorResponse(HttpStatusCode.BadRequest, "Unable to Process Request."));
        }
Exemplo n.º 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));
            }
        }
Exemplo n.º 4
0
        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);
        }