private async Task QuickRequestSearch(Guid shopGuid, IQuickRequest quickRequest, string vin) { // Lookup Vehicle. var vehicle = Mapper.Map <VehicleViewModel>(await Factory.GetByIdAsync <IVehicleDto>(vin)); // Check Vehicle. if (vehicle != null) { quickRequest.VehicleFound = !vehicle.ManualEntryInd; quickRequest.VehicleVIN = vehicle.VehicleVIN; quickRequest.VehicleMakeId = vehicle.VehicleMakeId; quickRequest.VehicleModel = vehicle.VehicleModel; quickRequest.VehicleYear = vehicle.VehicleYear; quickRequest.VehicleTransmission = vehicle.VehicleTransmission; quickRequest.VehicleSelectList = GetVehicleMakeSelectList(); } // Check Repair. var repairs = Db.RepairOrders.Where(o => o.ShopGuid == shopGuid && o.VehicleVIN == vin && o.Status == RepairStatuses.Active).ToList(); if (repairs.Count != 1) { return; } var repair = repairs[0]; quickRequest.RepairFound = true; quickRequest.CccSourceInd = repairs.Any(d => d.CCCDocumentGuid.HasValue); quickRequest.RepairOrderId = repair.OrderId; quickRequest.ShopReferenceNumber = repair.ShopReferenceNumber; quickRequest.InsuranceCompanyId = repair.InsuranceCompanyId; quickRequest.InsuranceCompanyOther = repair.InsuranceCompanyOther; quickRequest.Odometer = repair.Odometer; quickRequest.AirBagsDeployed = repair.AirBagsDeployed; quickRequest.AirBagsVisualDeployments = repair.AirBagsVisualDeployments; quickRequest.DrivableInd = repair.DrivableInd; quickRequest.ImpactPoints = repair.PointsOfImpact.Select(d => d.PointOfImpactId).ToList(); var scanRequest = repair.ScanRequests.OrderByDescending(x => x.RequestId).FirstOrDefault(); if (scanRequest == null) { return; } quickRequest.ContactOther = scanRequest.Contact; quickRequest.ContactUserGuid = scanRequest.ContactUserGuid?.ToString(); }
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); }