Beispiel #1
0
        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));
        }
Beispiel #2
0
        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));
        }