public async Task <CompanyData> InsertCompanyIntoDb(CompanyData company) { //Number of pages company.CompanyState = CompanyState.Processing; await _dbContext.SaveChangesAsync(); var counter = 1; var page = await _browsingContextService.OpenPageAsync(company.Url.Replace(".html", $";{counter}.html")); //Get all pages for current company while (page.Url != company.Url || counter == 1) { var products = CompanyParsingService.ParseCompanyProducts(company, page).ToArray(); company.Products.AddRange(products); await TaskQueue.QueueBackgroundWorkItemsRangeAsync(products); _logger.LogInformation($"CompanyService new products of {company.Name} company, data-chunk was added"); counter++; Thread.Sleep(5000); page = await _browsingContextService.OpenPageAsync(company.Url.Replace(".html", $";{counter}.html")); if (page != null) { continue; } company.CompanyState = CompanyState.Failed; await _dbContext.SaveChangesAsync(); return(company); } company.CompanyState = CompanyState.Success; company.SyncDate = DateTime.Now; var jsonCompanyDat = new CompanyJson { ExternalId = company.ExternalId, PortalPageUrl = company.Url, SyncDate = company.SyncDate, Name = company.Name }; var generator = new JSchemaGenerator(); var fullCategorySchema = generator.Generate(typeof(CompanyJson)).ToString(); var fullCategoryJson = JsonConvert.SerializeObject(jsonCompanyDat); company.JsonData = fullCategoryJson; company.JsonDataSchema = fullCategorySchema; await _dbContext.SaveChangesAsync(); return(company); }
public JsonResult LoadCompany() { CompanyJson company = null; var responseTask = client.GetAsync("Company"); responseTask.Wait(); var result = responseTask.Result; if (result.IsSuccessStatusCode) { var json = JsonConvert.DeserializeObject(result.Content.ReadAsStringAsync().Result).ToString(); company = JsonConvert.DeserializeObject <CompanyJson>(json); } else { ModelState.AddModelError(string.Empty, "Server Error"); } return(Json(company)); }