private Vacancy GetOlderVersionSameVacancy(HeadHunterVacancy headHunterVacancy, HeadHunterSnippet headHunterSnippet) { var vacancy = GetVacancy(headHunterVacancy, headHunterSnippet); vacancy.SourceUpdatedDate = vacancy.SourceUpdatedDate.AddDays(-1); return(vacancy); }
private Vacancy GetVacancy(HeadHunterVacancy headHunterVacancy, HeadHunterSnippet headHunterSnippet) { var vacancy = GetRandomVacancy(); vacancy.SourceId = headHunterVacancy.Id; vacancy.SourceUpdatedDate = headHunterSnippet.UpdateDate; vacancy.IsArchived = false; return(vacancy); }
private async Task <Vacancy> CreateVacancyAsync(SourceType sourceType, HeadHunterSnippet snippet, HeadHunterVacancy headHunterVacancy) { var currencyName = headHunterVacancy.Salary?.Currency?.Trim(); var vacancy = CreateVacancy(snippet, headHunterVacancy); vacancy.EmployerId = (await GetOrCreateEmployerAsync(sourceType, headHunterVacancy)).Id; vacancy.AreaId = (await GetOrCreateAreaAsync(sourceType, headHunterVacancy))?.Id; vacancy.CurrencyId = currencyName == null ? null : (await GetOrCreateCurrencyAsync(currencyName)).Id; vacancy.SourceTypeId = sourceType.Id; vacancy.ScheduleId = (await GetOrCreateScheduleAsync(headHunterVacancy))?.Id; vacancy.EmploymentId = (await GetOrCreateEmploymentAsync(headHunterVacancy))?.Id; vacancy.IsRemote = headHunterVacancy.Schedule?.Id == "remote"; return(vacancy); }
public async IAsyncEnumerable <HeadHunterSnippet> GetSnippets( HeadHunterSubscriptionParameters subscriptionParameters) { //var queryParameters = GetQueryParameters(subscriptionParameters, DateTime.Now.AddDays(-7), DateTime.Now); var queryParameters = GetQueryParameters(subscriptionParameters); var pagesCount = 1; var currentPage = 0; do { var snippets = await _headHunterApi.GetVacanciesSnippets(queryParameters); if (currentPage == 0) { _logger.LogInformation("Total number vacancies {totalVacanciesCount}, pages {totalPagesCount}", snippets.Found, snippets.Pages); pagesCount = snippets.Pages; } _logger.LogInformation("Processing page {CurrentPageNumber}", currentPage + 1); foreach (var data in snippets.Items) { if (data == null) { continue; } var snippet = JObject.Parse(data.ToString() ?? string.Empty); var vacancy = new HeadHunterSnippet { Id = (string)snippet["id"], Name = (string)snippet["name"], CreatedDate = (DateTimeOffset)snippet["created_at"], UpdateDate = (DateTimeOffset)snippet["published_at"], Responsibility = (string)snippet["snippet"]?["responsibility"] }; yield return(vacancy); await Task.Delay(_timeOut); } currentPage++; queryParameters.PageNumber++; } while (currentPage < pagesCount); }
private static Vacancy CreateVacancy(HeadHunterSnippet snippet, HeadHunterVacancy headHunterVacancy) { var vacancy = new Vacancy { SourceId = headHunterVacancy.Id, Title = headHunterVacancy.Name, Descriptions = headHunterVacancy.Description, Responsibilities = snippet.Responsibility, SalaryFrom = headHunterVacancy.Salary?.From, SalaryTo = headHunterVacancy.Salary?.To, IsSalaryGross = headHunterVacancy.Salary?.IsGross, Url = headHunterVacancy.Url, RawData = headHunterVacancy.RawData, IsArchived = snippet.Archived, SourceCreatedDate = headHunterVacancy.CreatedDate, SourceUpdatedDate = headHunterVacancy.UpdateDate, ContentUpdatedDate = headHunterVacancy.UpdateDate }; return(vacancy); }