public async Task <IActionResult> GetPagedDepartments([FromQuery] DepartmentParams departmentParams) { /* * fill UserId Params untuk filtering department by UserId * var currentUserId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value); * * var userFromRepo = await _repo.GetUser(currentUserId); * * departmentParams.UserId = currentUserId; */ var departments = await departmentRepository.GetPagedDepartments(departmentParams); var result = mapper.Map <IEnumerable <ViewDepartmentResource> >(departments); Response.AddPagination(departments.CurrentPage, departments.PageSize , departments.TotalCount, departments.TotalPages); return(Ok(result)); }
public async Task <PagedList <Department> > GetPagedDepartments(DepartmentParams departmentParams) { var departments = context.Department.AsQueryable(); // perlu user id untuk membatasi if (!string.IsNullOrEmpty(departmentParams.Name)) { departments = departments.Where(d => d.Name.Contains(departmentParams.Name, StringComparison.OrdinalIgnoreCase)); } if (!string.IsNullOrEmpty(departmentParams.Code)) { departments = departments.Where(d => d.Code.Contains(departmentParams.Code, StringComparison.OrdinalIgnoreCase)); } //name,sort if (departmentParams.isDescending) { if (!string.IsNullOrEmpty(departmentParams.OrderBy)) { switch (departmentParams.OrderBy.ToLower()) { case "code": departments = departments.OrderByDescending(d => d.Code); break; case "name": departments = departments.OrderByDescending(d => d.Name); break; default: departments = departments.OrderByDescending(d => d.Code); break; } } else { departments = departments.OrderByDescending(d => d.Code); } } else { if (!string.IsNullOrEmpty(departmentParams.OrderBy)) { switch (departmentParams.OrderBy.ToLower()) { case "code": departments = departments.OrderBy(d => d.Code); break; case "name": departments = departments.OrderBy(d => d.Name); break; default: departments = departments.OrderBy(d => d.Code); break; } } else { departments = departments.OrderBy(d => d.Code); } } return(await PagedList <Department> .CreateAsync(departments, departmentParams.PageNumber, departmentParams.PageSize)); }