Beispiel #1
0
        public virtual async Task <ActionResult> Index(ImportMobileDe importMobileDe)
        {
            if (!String.IsNullOrEmpty(importMobileDe.Url) && !importMobileDe.Url.Contains("suchen.mobile.de/auto-inserat"))
            {
                this.ModelState.AddModelError("Url", "URL ni iz portala mobile.de");
            }

            if (!this.ModelState.IsValid)
            {
                return(View(importMobileDe));
            }

            DmvCalculationResult dmvCalculationResult = null;

            try
            {
                dmvCalculationResult = await ServiceLocator.Instance.Resolve <IMobileDeManager>().ImportCarData(importMobileDe);
            }
            catch (BusinessValidationException businessValidationException)
            {
                this.ModelState.AddModelError(String.Empty, "Napaka pri uvozu. Manjkajoči podatki v avto oglasu. Poizkusite z drugim avto oglasom.");

                foreach (ValidationResult validationResult in businessValidationException.ValidationResultList)
                {
                    this.ModelState.AddModelError(String.Empty, validationResult.Message);//TODO add it into ifra
                }

                return(View(importMobileDe));
            }

            return(RedirectToAction(MVC.Dmv.DmvCalculationResult(dmvCalculationResult.DmvCalculation.Id)));
        }
        /// <summary>
        /// Puts the specified identifier.
        /// </summary>
        /// <param name="id">The identifier.</param>
        /// <param name="importMobileDe">The import mobile de.</param>
        /// <returns></returns>
        public async Task <HttpResponseMessage> Put(int id, ImportMobileDe importMobileDe)
        {
            DmvCalculationResult dmvCalculationResult = await _mobileDeManager.ImportCarData(importMobileDe);

            HttpResponseMessage httpResponseMessage = base.GetHttpResponseMessage(dmvCalculationResult);

            return(httpResponseMessage);
        }
        public async void ImportCarFromMobileDeCcm()
        {
            // arrange
            IMobileDeProcessor mobileDeProcessor = ServiceLocator.Instance.Resolve <IMobileDeProcessor>();
            ImportMobileDe     importMobileDe    = new ImportMobileDe()
            {
                Url = _testCarUrlOK1, VehicleTypeId = VehicleTypeEnum.Car
            };

            // act
            MobileDeCar mobileDeCar = await mobileDeProcessor.ImportCarFromMobileDe(importMobileDe);

            //assert
            Assert.IsTrue(mobileDeCar.DmvCalculation.EngineDisplacementCcm > 0);
        }
        public async void ImportCarFromMobileDeFuel(string url)
        {
            // arrange
            IMobileDeProcessor mobileDeProcessor = ServiceLocator.Instance.Resolve <IMobileDeProcessor>();
            ImportMobileDe     importMobileDe    = new ImportMobileDe()
            {
                Url = url, VehicleTypeId = VehicleTypeEnum.Car
            };

            // act
            MobileDeCar mobileDeCar = await mobileDeProcessor.ImportCarFromMobileDe(importMobileDe);

            //assert
            Assert.IsTrue(mobileDeCar.DmvCalculation.FuelTypeId == FuelTypeEnum.PetrolRest);
        }
        public async void ImportCarFromMobileDeEuro(string url, EuroExhaustTypeEnum expected)
        {
            // arrange
            IMobileDeProcessor mobileDeProcessor = ServiceLocator.Instance.Resolve <IMobileDeProcessor>();
            ImportMobileDe     importMobileDe    = new ImportMobileDe()
            {
                Url = url, VehicleTypeId = VehicleTypeEnum.Car
            };

            // act
            MobileDeCar mobileDeCar = await mobileDeProcessor.ImportCarFromMobileDe(importMobileDe);

            //assert
            Assert.IsTrue(mobileDeCar.DmvCalculation.EuroExhaustTypeId == expected);
        }
        public async void ParseGetCo2_GivenWebPageSample_GetValueImportCarFromMobileDeTestCo2(string url, int result)
        {
            // arrange
            IMobileDeProcessor mobileDeProcessor = ServiceLocator.Instance.Resolve <IMobileDeProcessor>();
            ImportMobileDe     importMobileDe    = new ImportMobileDe()
            {
                Url = url, VehicleTypeId = VehicleTypeEnum.Car
            };

            // act
            MobileDeCar mobileDeCar = await mobileDeProcessor.ImportCarFromMobileDe(importMobileDe);

            //assert
            Assert.IsTrue(mobileDeCar.DmvCalculation.Co2EmissionsValue == result);
        }
Beispiel #7
0
        /// <summary>
        /// Imports the car data.
        /// </summary>
        /// <param name="importMobileDe">The import mobile de.</param>
        /// <returns></returns>
        public async Task <DmvCalculationResult> ImportCarData(ImportMobileDe importMobileDe)
        {
            MobileDeCar mobileDeCar = await ServiceLocator.Instance.Resolve <IMobileDeProcessor>().ImportCarFromMobileDe(importMobileDe);

            DmvCalculationResult dmvCalculationResult = await _dmvCalculationManager.ProcessDmvTaxValueResult(mobileDeCar.DmvCalculation);

            mobileDeCar.DmvCalculationId = dmvCalculationResult.DmvCalculation.Id;
            mobileDeCar.DmvCalculation   = null;
            mobileDeCar.CreatedOn        = DateTime.UtcNow;

            base.Validate(mobileDeCar);

            mobileDeCar = await _mobileDeRepository.Save(mobileDeCar);

            dmvCalculationResult.MobileDeCar = mobileDeCar;

            dmvCalculationResult.DmvCalculation.MobileDeCarId = mobileDeCar.Id;

            dmvCalculationResult = await _dmvCalculationManager.Update(dmvCalculationResult.DmvCalculation);

            return(dmvCalculationResult);
        }
        /// <summary>
        /// Imports the car from mobile de.
        /// </summary>
        /// <param name="importMobileDe">The import mobile de.</param>
        /// <returns></returns>
        public async Task <MobileDeCar> ImportCarFromMobileDe(ImportMobileDe importMobileDe)
        {
            WebPageParser webPageParser = new WebPageParser();

            await webPageParser.ParseWebPage(importMobileDe.Url);

            MobileDeCar mobileDeCar = new MobileDeCar();

            // Default setting for car

            mobileDeCar.Url = importMobileDe.Url;
            mobileDeCar.DmvCalculation.VehicleTypeId     = importMobileDe.VehicleTypeId;
            mobileDeCar.DmvCalculation.DateOfCalculation = DateTime.UtcNow;
            mobileDeCar.DmvCalculation.EngineTypeId      = EngineTypeEnum.FourTactsRest;
            mobileDeCar.UserId = ServiceLocator.Instance.Resolve <IUserProvider>().GetCurrentUserId();

            //

            string resultNode  = null;
            string webPageNode = null;

            webPageNode = webPageParser.GetWebPageNode("co2EmissionValue");
            if (webPageNode != null)
            {
                resultNode = webPageParser.GetWebPageNodeNumericContent(webPageNode);
                mobileDeCar.DmvCalculation.Co2EmissionsValue = Convert.ToInt16(resultNode);
            }

            webPageNode = webPageParser.GetWebPageNode("kW (");
            if (webPageNode != null)
            {
                resultNode = webPageParser.GetWebPageNodeNumericContent(webPageNode);
                mobileDeCar.DmvCalculation.EnginePowerKw = Convert.ToInt16(resultNode);
            }

            webPageNode = webPageParser.GetWebPageNode("\nEuro");
            if (webPageNode != null)
            {
                resultNode = webPageParser.GetWebPageNodeStringContent(webPageNode);
                mobileDeCar.DmvCalculation.EuroExhaustTypeId = EnumHelper.GetEnumValue <EuroExhaustTypeEnum>(resultNode);
            }
            else
            {
                // Defaut EURO
                mobileDeCar.DmvCalculation.EuroExhaustTypeId = EuroExhaustTypeEnum.Euro1;
            }

            //By law every EURO5+ have to have DPF filter, most of them had for the EURO4
            if ((int)mobileDeCar.DmvCalculation.EuroExhaustTypeId < 4)
            {
                mobileDeCar.DmvCalculation.DieselParticlesAbove005Limit = true;
            }

            // Set default and handlig of the FuelType
            mobileDeCar.DmvCalculation.FuelTypeId = FuelTypeEnum.PetrolRest;
            webPageNode = webPageParser.GetWebPageNode("p>\nPetrol");
            webPageNode = webPageNode ?? webPageParser.GetWebPageNode("p>\nBenzin");
            webPageNode = webPageNode ?? webPageParser.GetWebPageNode("p>\nHybrid (Benzin");
            if (webPageNode != null)
            {
                resultNode = webPageParser.GetWebPageNodeStringContent(webPageNode);
                mobileDeCar.DmvCalculation.FuelTypeId = FuelTypeEnum.PetrolRest;
            }

            webPageNode = webPageParser.GetWebPageNode("p>\nDiesel");
            webPageNode = webPageNode ?? webPageParser.GetWebPageNode("p>\nHybrid (Diesel");
            if (webPageNode != null)
            {
                resultNode = webPageParser.GetWebPageNodeStringContent(webPageNode);
                mobileDeCar.DmvCalculation.FuelTypeId = FuelTypeEnum.Diesel;
            }

            webPageNode = webPageParser.GetWebPageNode(" cm³");
            if (webPageNode != null)
            {
                resultNode = webPageParser.GetWebPageNodeNumericContent(webPageNode);
                mobileDeCar.DmvCalculation.EngineDisplacementCcm = Convert.ToInt32(resultNode);
            }

            webPageNode = webPageParser.GetWebPageNode("pricePrimaryCountryOfSale priceGross");
            if (webPageNode != null)
            {
                resultNode = webPageParser.GetWebPageNodeNumericContent(webPageNode);
                mobileDeCar.DmvCalculation.VehicleValue = Convert.ToInt32(resultNode);
            }

            webPageNode = webPageParser.GetWebPageNode("h1>\n");
            if (webPageNode != null)
            {
                mobileDeCar.Model = "Not known";
                mobileDeCar.Maker = "Not known";

                resultNode        = webPageParser.GetWebPageNodeStringContent(webPageNode);
                mobileDeCar.Model = resultNode;
                mobileDeCar.Maker = resultNode.Split(' ').FirstOrDefault();
            }

            webPageNode = webPageParser.GetWebPageNode("img class=\"currentImage\" src");
            if (webPageNode != null)
            {
                resultNode           = webPageParser.GetWebPageAttributeStringContent(webPageNode, "src");
                mobileDeCar.ImageUrl = resultNode;
            }

            return(mobileDeCar);
        }
Beispiel #9
0
        /// <summary>
        /// Indexes this instance.
        /// </summary>
        /// <returns></returns>
        public virtual ActionResult Index()
        {
            ImportMobileDe importMobileDe = new ImportMobileDe();

            return(View(importMobileDe));
        }