public async Task <int> RefreshAllCommunityInfo() { SeashellContext context = new SeashellContext(); List <AdministrativeDistrict> districts = context.AdministrativeDistrict.ToList(); List <Community> communities = new List <Community>(); foreach (AdministrativeDistrict district in districts) { List <Community> communitiesByDistrict = await ReadAllCommunities(district.CommunityMainPageURL); communities = communities.Concat(communitiesByDistrict).ToList(); } communities = await ReadCommunityDetailInfo(communities); CommunityRepository repo = new CommunityRepository(context); repo.AddOrUpdate(communities); repo.Save(); return(communities.Count()); }
//The url will be like 'https://xa.ke.com/xiaoqu/pg1/' which the number is the page number public static async Task <List <Community> > ReadCommunityListData(string url) { IDocument document = await WebPageReader.GetPageAsync(url); var communityItemList = document.QuerySelectorAll("ul.listContent li.xiaoquListItem"); List <Community> communities = new List <Community>(); foreach (var communityItem in communityItemList) { string communityName = communityItem.QuerySelector("div.info div.title a").InnerHtml; string districtName = communityItem.QuerySelector("div.info div.positionInfo a.district").InnerHtml; string neighborhood = communityItem.QuerySelector("div.info div.positionInfo a.bizcircle").InnerHtml; string listingPrice = communityItem.QuerySelector("div.xiaoquListItemRight div.xiaoquListItemPrice div.totalPrice span").InnerHtml; string listingUnits = communityItem.QuerySelector("div.xiaoquListItemRight div.xiaoquListItemSellCount a.totalSellCount span").InnerHtml; string seashellId = communityItem.GetAttribute("data-id"); string seashellURL = communityItem.QuerySelector("div.info div.title a").GetAttribute("href"); SeashellContext context = new SeashellContext(); AdministrativeDistrict administrativeDistrict = new AdministrativeDistrictRepository(context).GetByName(districtName); Community communityToAdd = new Community() { CommunityName = communityName, AdministrativeDistrictId = administrativeDistrict.AdministrativeDistrictId, Neighborhood = neighborhood, External_id = seashellId, SeashellURL = seashellURL, CommunityHistoryInfo = new List <CommunityHistoryInfo>().Append(new CommunityHistoryInfo() { CommunityListingPrice = decimal.TryParse(listingPrice, out decimal price) ? price : 0, CommunityListingUnits = int.TryParse(listingUnits, out int units) ? units : 0, DataTime = DateTime.Now.Date }).ToList()
public async Task TestDatabaseConnection() { SeashellContext context = new SeashellContext(); AdministrativeDistrict district = context.AdministrativeDistrict.FirstOrDefault(); Assert.IsNotNull(district); }
public async Task <int> GetHistoryInfoForAllCommunities() { SeashellContext context = new SeashellContext(); List <Community> communities = context.Communities.ToList(); communities = await ReadCommunityDetailInfo(communities); CommunityRepository repo = new CommunityRepository(context); repo.AddOrUpdate(communities); repo.Save(); return(communities.Count()); }
public CommunityHistoryInfoRepository(SeashellContext context) : base(context) { this.context = context; }
public BaseRepository(SeashellContext context) { this.context = context; }
public AdministrativeDistrictRepository(SeashellContext context) : base(context) { this.context = context; }