Ejemplo n.º 1
0
        public static async void InitDb()
        {
            var db = new VacancyContext();

            var vacanciesRequestResult = await HhApiHelper.GetVacancies("", 0, 50);

            if (vacanciesRequestResult != null)
            {
                foreach (var vacancy in vacanciesRequestResult.Vacancies)
                {
                    var vacancyInDb = db.Vacancies.Find(vacancy.Id);
                    if (vacancyInDb == null)
                    {
                        db.Vacancies.Add(vacancy);
                    }
                    else
                    {
                        vacancyInDb.Salary       = vacancy.Salary;
                        vacancyInDb.Title        = vacancy.Title;
                        vacancyInDb.Url          = vacancy.Url;
                        vacancyInDb.Description  = vacancy.Description;
                        vacancyInDb.EmployerName = vacancy.EmployerName;
                    }
                }

                await db.SaveChangesAsync();
            }
        }
Ejemplo n.º 2
0
        public async Task <VacanciesRequestResult> GetVacancies(string searchText = "", int startPage = 0)
        {
            if (startPage < 0)
            {
                startPage = 0;
            }

            var vacanciesRequestResult = await HhApiHelper.GetVacancies(searchText, startPage, vacancyPerPage);

            if (vacanciesRequestResult == null)
            {
                var vacanciesFromDb = db.Vacancies.Select(t => t);

                if (!String.IsNullOrEmpty(searchText))
                {
                    vacanciesFromDb = vacanciesFromDb
                                      .Where(t => t.Description.Contains(searchText) || t.Title.Contains(searchText));
                }

                int pagesTotal = (int)Math.Ceiling(vacanciesFromDb.Count() / (double)vacancyPerPage);

                vacanciesFromDb = vacanciesFromDb
                                  .OrderBy(t => t.Id)
                                  .Skip(vacancyPerPage * startPage)
                                  .Take(vacancyPerPage);

                return(new VacanciesRequestResult
                {
                    Vacancies = vacanciesFromDb.ToArray(),
                    HasMorePages = startPage < pagesTotal - 1
                });
            }
            else
            {
                return(vacanciesRequestResult);
            }
        }