public async Task <IEnumerable <Product> > Search( [FromServices] IRepository <Models.Store, int> storeRepository, [FromServices] IMultiEntityScraper <Models.Product> productsScraper, string keywords) { var keywordList = keywords.Split(',', ';').Select(s => s.Trim()).Where(s => !string.IsNullOrWhiteSpace(s)) .ToList(); var products = new List <Product>(); foreach (var storedStore in storeRepository.All()) { if (storedStore.IsEnabled) { foreach (var keyword in keywordList) { var url = storedStore.Url.Replace( "/Products?depPid=0", $"/Search.aspx?keywords={keyword}&depPid=0"); await foreach (var product in productsScraper.GetAsync(url, true)) { products.Add(product.ToDataTransferObject(false, false)); } } } } return(products); }
public async Task <IEnumerable <Department> > GetDepartments( [FromServices] IRepository <Models.Store, int> storeRepository, [FromServices] IRepository <Models.Department, int> productRepository, [FromServices] IMultiEntityScraper <Models.Department> departmentScraper, int id) { var departments = new List <Department>(); var storedDepartment = storeRepository.Find(department => department.Id == id).FirstOrDefault(); if (storedDepartment != null) { var scrappedDepartments = departmentScraper.GetAsync(storedDepartment.Url); await foreach (var department in scrappedDepartments) { var productUrl = department.Url; var stored = productRepository.Contains(p => p.Url == productUrl); departments.Add(department.ToDataTransferObject(stored: stored)); } } return(departments); }