public IActionResult History(bool?filter, string filterText, int pageNumber = 1) { var user = HttpContext.User; var id = user.Claims.Where(claim => claim.Type == ClaimTypes.NameIdentifier).First().Value; var attorney = _attorneysRepo.Attorneys.Where(x => x.UserId == Convert.ToInt32(id)).FirstOrDefault(); Func <VacationsRequest, bool> filterFunction = c => c.IsApproved == filter; Func <VacationsRequest, bool> filterFunctionText = c => String.IsNullOrEmpty(filterText) || c.Reason.CaseInsensitiveContains(filterText) || c.StartDate.ToString("dd/MM/yyyy").Contains(filterText); VacationsRequestListViewModel viewModel = new VacationsRequestListViewModel(); viewModel.CurrentFilter = filter; viewModel.CurrentFilterText = filterText; viewModel.VacationsRequests = _vacationsRequestRepo.GetVacationsRequests(attorney.Id) .Where(filterFunction) .Where(filterFunctionText) .Skip((pageNumber - 1) * PageSize) .Take(PageSize); viewModel.PagingInfo = new PagingInfo { CurrentPage = pageNumber, ItemsPerPage = PageSize, TotalItems = _vacationsRequestRepo.GetVacationsRequests(attorney.Id).Count(filterFunction) }; return(View(viewModel)); }
public IActionResult Admin(bool?filter, string filterText, int pageNumber = 1) { int currentUserId = Convert.ToInt32(HttpContext.User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value); Func <VacationsRequest, bool> filterFunction = r => (r.IsApproved == filter && filter == null && r.VacationsRequestAnswers.Any(vra => vra.ApproverId == currentUserId && vra.IsApproved == null)) || (r.IsApproved == filter && filter != null); Func <VacationsRequest, bool> filterFunctionText = c => String.IsNullOrEmpty(filterText) || c.Attorney.Name.CaseInsensitiveContains(filterText) || c.StartDate.ToString("dd/MM/yyyy").Contains(filterText); VacationsRequestListViewModel viewModel = new VacationsRequestListViewModel(); viewModel.CurrentFilter = filter; viewModel.CurrentFilterText = filterText; viewModel.VacationsRequests = _vacationsRequestRepo.VacationsRequests() .Include(v => v.Attorney) .Where(filterFunction) .Where(filterFunctionText) .Skip((pageNumber - 1) * PageSize) .Take(PageSize); viewModel.PagingInfo = new PagingInfo { CurrentPage = pageNumber, ItemsPerPage = PageSize, TotalItems = _vacationsRequestRepo.VacationsRequests().Count(filterFunction) }; ViewBag.Answered = TempData["answered"]; ViewBag.Message = TempData["message"]; return(View(viewModel)); }