public async override void GetRealEstateOffers()
        {
            foreach (var propType in PropertyType.Values)
            {
                if (propType != PropertyType.ELSE && propType != PropertyType.INVALID)
                {
                    foreach (var prov in Province.PROVINCES)
                    {
                        RealEstateOfferRequestModel offerModel = new RealEstateOfferRequestModel(prov, City.ALL, propType,
                                                                                                 AdvertisementType.ALL);
                        string request       = FormatRequestString(offerModel);
                        string offersWebsite = ReadWebsite(request);
                        if (offersWebsite != null)
                        {
                            await ParseOffersFromHtml(offersWebsite);

                            string offerTotalPages = offersWebsite.Substring(offersWebsite.LastIndexOf("<input type=\"text\" value=\"1\" min=\"1\" max=\"")
                                                                             + "<input type=\"text\" value=\"1\" min=\"1\" max=\"".Length);
                            offerTotalPages = offerTotalPages.Remove(offerTotalPages.IndexOf('"'));
                            int count = Int32.Parse(offerTotalPages);
                            for (int i = 2; i < count; i++)
                            {
                                offerModel.PageNumber++;
                                request       = FormatRequestString(offerModel);
                                offersWebsite = ReadWebsite(request);
                                await ParseOffersFromHtml(offersWebsite);
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public ActionResult Search(string city = "all", string propType = "all", string province = "all", string advType = "all", int page = 1)
        {
            List <RealEstateOfferModel> list = null;

            try
            {
                if (city == "")
                {
                    city = "all";
                }
                RealEstateOfferRequestModel requestModel = new RealEstateOfferRequestModel(Province.FromString(province), City.FromString(city), PropertyType.FromString(propType), AdvertisementType.FromString(advType));
                list = WebsitesManagement.GetFilteredOffers(requestModel);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
                TempData["Error"] = ex.Message;
            }
            ViewBag.cityFilter          = city;
            ViewBag.propertyFilter      = propType;
            ViewBag.provinceFilter      = province;
            ViewBag.advertisementFilter = advType;
            ViewBag.cities    = DataManagement.getCities();
            ViewBag.provinces = DataManagement.getProvinces();
            if (list == null)
            {
                return(RedirectToAction("Index"));
            }
            else
            {
                return(View(list.ToPagedList(page, 10)));
            }
        }
        public static List <RealEstateOfferModel> GetFilteredOffers(RealEstateOfferRequestModel a_offer)
        {
            List <RealEstateOfferModel> offers = new List <RealEstateOfferModel>();

            lock (RealEstateOffers)
            {
                offers = RealEstateOffers.Where(m => m.IsMatch(a_offer)).ToList();
            }
            return(offers);
        }
        protected override string FormatRequestString(RealEstateOfferRequestModel a_offerModel)
        {
            string formattedRequest = websiteAdressBegin + Adress + RequestLinkSchema;

            formattedRequest = formattedRequest.Replace(propertyType, PropertyTypeIdMap[a_offerModel.PropertyType]);
            formattedRequest = formattedRequest.Replace(advertisementType, AdvertisementTypeIdMap[a_offerModel.AdvertisementType]);
            formattedRequest = formattedRequest.Replace(province, ProvinceIdMap[a_offerModel.Province]);
            formattedRequest = formattedRequest.Replace(pageNumber, a_offerModel.PageNumber.ToString());

            return(formattedRequest);
        }
Ejemplo n.º 5
0
        protected override string FormatRequestString(RealEstateOfferRequestModel a_offerModel)
        {
            string formattedRequest = websiteAdressBegin + Adress + RequestLinkSchema;

            try
            {
                formattedRequest = formattedRequest.Replace("{" + pageNumber + "}", a_offerModel.PageNumber.ToString());
                formattedRequest = formattedRequest.Replace("{" + propertyType + "}", PropertyTypeIdMap[a_offerModel.PropertyType]);
                formattedRequest = formattedRequest.Replace("{" + advertisementType + "}", AdvertisementTypeIdMap[a_offerModel.AdvertisementType]);
                formattedRequest = formattedRequest.Replace("{" + province + "}", ProvinceIdMap[a_offerModel.Province]);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
                formattedRequest = null;
            }
            return(formattedRequest);
        }
Ejemplo n.º 6
0
        public async override void GetRealEstateOffers()
        {
            foreach (var propType in Enums.PropertyType.Values)
            {
                foreach (var province in Province.PROVINCES)
                {
                    try
                    {
                        RealEstateOfferRequestModel model = new RealEstateOfferRequestModel(Province.FromString(province.Name), City.ALL,
                                                                                            Enums.PropertyType.FromString(propType.Name), Enums.AdvertisementType.ALL);
                        string request       = FormatRequestString(model);
                        string offersWebsite = ReadWebsite(request);
                        if (offersWebsite != null)
                        {
                            //Parse offers from first page
                            await ParseOffersFromHtml(offersWebsite);

                            //Get number of pages left to check
                            string offerTotalPages = offersWebsite.Substring(offersWebsite.LastIndexOf("golink('/oferta/search/")
                                                                             + "golink('/oferta/search/".Length);
                            offerTotalPages = offerTotalPages.Remove(offerTotalPages.IndexOf(".html"));
                            int count = Int32.Parse(offerTotalPages);
                            for (int i = 2; i < count; i++)
                            {
                                //Parse offers from rest of pages
                                model.PageNumber++;
                                request       = FormatRequestString(model);
                                offersWebsite = ReadWebsite(request);
                                await ParseOffersFromHtml(offersWebsite);
                            }
                        }
                        else
                        {
                            //Invalid html
                        }
                    }
                    catch (Exception ex)
                    {
                        Debug.WriteLine(ex);
                    }
                }
            }
        }
 protected abstract string FormatRequestString(RealEstateOfferRequestModel a_offerModel);