예제 #1
0
        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));
        }
예제 #2
0
        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();
        }
예제 #3
0
        /// <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));
        }