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.")); }
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)); } }
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); }