public ActionResult Index(Guid?candidateId, string dateFilter = null, int currentPage = 1) { // IDENTITY USER NAME HttpContext var userName = HttpContext.User.Identity.Name; var user = _userManager.Users.FirstOrDefault(i => i.Email == userName); var userId = user.Id; var allResume = db.Resumes.Include(x => x.ViewsPage) .Include(i => i.ShowsResume) .Include(r => r.Candidate).ThenInclude(c => c.AccountUser) .Include(c => c.Candidate).ThenInclude(c => c.City) .Where(resume => resume.Candidate.AccountUser.UserName == userName); var cand = db.Candidates.Include(r => r.AccountUser).Where(c => c.AccountUser.UserName == user.UserName); // var cand2 = db.Candidates.Where(c => c.AccountUser.Email == User.AddIdentity. && c.AccountUser.UserName == userName); const int skipCount = 5; Decimal decResumes = allResume.Count(); Decimal decCountPages = Math.Ceiling(decResumes / skipCount); int countPages = Decimal.ToInt32(decCountPages); int resumes = Decimal.ToInt32(decResumes); if (currentPage > countPages) { currentPage = 1; } var resumesCandidate = new List <PageResumeCandidateViewModel>(); resumesCandidate.AddRange(allResume.OrderBy(r => r.Name) .Skip(skipCount * currentPage - skipCount) .Take(skipCount) .Select(resume => new PageResumeCandidateViewModel() { Id = resume.Id, NameResum = resume.Name, Wage = resume.Salary, City = resume.Candidate.City.Name, //toDo Comment for resum Comment = "Доробити...", //todo DatePublicate DatePublication = DateTime.Now, DateChange = resume.DateChange, CountShow = resume.ShowsResume.Count, CountView = resume.ViewsPage.Count, Status = resume.IsActiveResume, })); var paginationViewModel = new CataloguePaginationViewModel() { CurrentPage = currentPage, DisplayOnPage = skipCount, TotalCount = countPages, ActionName = "Index", ControllerName = "Resume", ObjectParameter = new Dictionary <string, string> { { "userId", userId.ToString() } } }; var model = new CandidateResumesViewModel() { //UserId = userId, UserName = userName, Resumes = resumesCandidate, Pagination = paginationViewModel, CurentPage = currentPage, // CandidatId = userId }; return(View("/Arrea/Candidate/Views/Index.cshtml", model)); }
public ActionResult CompanyCatalogByActivityField(Guid fieldActivityId, int currentPage = 1, bool isShowOnlyActive = false) { //var res = this.dbset.Where(x => x.Employers.Any(empl => empl.Vacancies // .FirstOrDefault(vac => vac.FieldActivityId != fieldActivityId // || !isOnlyWithActiveVacancies || vac.IsActive == isOnlyWithActiveVacancies) != null) var companies = dbContext.Companies.Include(c => c.Employers).ThenInclude(v => v.Vacancies).ThenInclude(v => v.FieldActivity) .Where(c => c.Employers.Any(empl => empl.Vacancies .Where(vac => vac.FieldActivity.Id == fieldActivityId || vac.IsActive == isShowOnlyActive) != null) && c.Status == true); dbContext.FieldActivities.Load(); dbContext.Vacancies.Load(); // companyRepo.GetCompanyByFieldActivity(fieldActivityId, isShowOnlyActive); var fieldActivity = dbContext.FieldActivities.Include(f => f.Vacancies) .Include(f => f.Resumes).FirstOrDefault(x => x.Id == fieldActivityId); var companyVacancies = new List <CompanyByFieldActivityViewModel>(); const int skipCount = 6; Decimal decCompaniesInFieldActivityCount = companies.Count(); Decimal decCountPages = Math.Ceiling(decCompaniesInFieldActivityCount / skipCount); int countPages = Decimal.ToInt32(decCountPages); int companiesInFieldActivityCount = Decimal.ToInt32(decCompaniesInFieldActivityCount); if (currentPage > countPages) { currentPage = 1; } companyVacancies.AddRange(companies.OrderBy(x => x.Name) .Skip(skipCount * currentPage - skipCount) .Take(skipCount) .ToList() .Select(company => new CompanyByFieldActivityViewModel() { СompanyId = company.Id, CompanyName = company.Name, CompanyLogoUrl = company.CompanyLogoUrl, // Todo погано рахує VacancyCount VacancyCount = dbContext.Vacancies.Include(i => i.Employer).ThenInclude(i => i.Company) .Include(i => i.FieldActivity) .Where(v => v.FieldActivity.Id == fieldActivityId && v.Employer.Company.Id == company.Id && v.IsActive == isShowOnlyActive).Count() })); var paginationViewModel = new CataloguePaginationViewModel() { CurrentPage = currentPage, DisplayOnPage = skipCount, TotalCount = countPages, ActionName = "CompanyCatalogByActivityField", ControllerName = "CompanyHome", ObjectParameter = new Dictionary <string, string> { { "fieldActivityId", fieldActivityId.ToString() } } }; var model = new CompaniesPageByFieldActivityViewModel() { FialdActivityName = fieldActivity.Name, CompaniesByFieldActivity = companyVacancies, ActivityInCategoryCount = companiesInFieldActivityCount, Pagination = paginationViewModel, IsShowOnlyActive = isShowOnlyActive }; return(View("/Views/Home/HomeCompany/CompanyCatalogByActivityField.cshtml", model)); // return Ok(); }
/// <summary> /// Вакансии по сферам /// </summary> /// <param name="fieldActivityId"></param> /// <param name="cityId"></param> /// <param name="dateFilter"></param> /// <param name="currentPage"></param> /// <returns></returns>VacancyCatalogByActivityField public ActionResult VacancyCatalogByActivityField(Guid fieldActivityId, Guid cityId, string dateFilter = null, int currentPage = 1) { var vacanciesField = dbContext.Vacancies .Include(v => v.FieldActivity) .Include(v => v.Employer).ThenInclude(e => e.Company) .Include(v => v.City) .Where(x => x.FieldActivityId == fieldActivityId).ToList().OrderByDescending(v => v.DatePublication); var fieldActivity = dbContext.FieldActivities.Include(f => f.Vacancies) .Include(f => f.Resumes).FirstOrDefault(x => x.Id == fieldActivityId); var vacanciesByField = new List <Models.ViewModel.Home.Company.PageVacancyByFieldViewModel>(); // --------------------------- count Pages ----------------------- int skipCount = 6; IEnumerable <Vacancy> vacanciesFieldActyvity = null; if (dateFilter != null) { switch (dateFilter) { case FieldsMonth.MonthId: vacanciesFieldActyvity = vacanciesField.Where(v => v.DateCreate > DateTime.Now.AddMonths(-1) && v.DateCreate < DateTime.Now); break; case FieldsMonth.WeеkId: vacanciesFieldActyvity = vacanciesField.Where(v => v.DateCreate > DateTime.Now.AddDays(-7) && v.DateCreate < DateTime.Now); break; case FieldsMonth.DayId: vacanciesFieldActyvity = vacanciesField.Where(v => v.DateCreate > DateTime.Now.AddDays(-2) && v.DateCreate < DateTime.Now); break; default: break; } } else { vacanciesFieldActyvity = vacanciesField; } Decimal decCountVacancies = vacanciesFieldActyvity.Count(); Decimal decCountPage = Math.Ceiling(decCountVacancies / skipCount); int countPages = Decimal.ToInt32(decCountPage); int countVacancies = Decimal.ToInt32(decCountVacancies); if (currentPage > countPages) { currentPage = 1; } vacanciesFieldActyvity = vacanciesFieldActyvity.Skip(skipCount * currentPage - skipCount).Take(skipCount); vacanciesByField.AddRange(vacanciesFieldActyvity /* .Skip(skipCount * currentPage - skipCount) * .Take(skipCount)*/ .Select(vacancy => new Models.ViewModel.Home.Company.PageVacancyByFieldViewModel() { Id = vacancy.Id, VacancyName = vacancy.Name, CompanyName = vacancy.Employer?.Company?.Name, CityName = vacancy.City?.Name, Salary = vacancy.Wage, DateCriate = vacancy.DateCreate, CompanyLogoUrl = vacancy.Employer?.Company?.CompanyLogoUrl, Description = vacancy.Description, Link = Url.Action("AboutVacancy", "Vacancy", new { vacancyId = vacancy.Id }), })); var paginationViewModel = new CataloguePaginationViewModel() { CurrentPage = currentPage, DisplayOnPage = skipCount, TotalCount = countPages, ActionName = "VacancyCatalogByActivityField", ControllerName = "Vacancy", ObjectParameter = new Dictionary <string, string> { { "fieldActivityId", fieldActivityId.ToString() } } }; var model = new PageCatalogVacancyByFieldViewModel() { FialdActivityName = fieldActivity.Name, CountVacancyByFieldActivity = countVacancies, VacanciesByField = vacanciesByField, Pagination = paginationViewModel, FieldId = fieldActivityId, CurrentPage = currentPage, SelectedFilter = dateFilter, }; return(View("/Views/Home/HomeVacancy/CatalogVacancyByFieldActivity.cshtml", model)); }