예제 #1
0
        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();
        }
예제 #2
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);
        }