예제 #1
0
        public IActionResult GetSchools([FromQuery] SchoolQueryFilter filters)
        {
            // Console.Write("al api");
            //var schools = await _schoolService.GetSchools();
            //var schoolDtos = _mapper.Map<IEnumerable<SchoolDto>>(schools);
            //var response = new ApiResponse<IEnumerable<SchoolDto>>(schoolDto/s);
            //var schoolDto = _mapper.Map<IEquatable<SchoolDto>>(school);
            //var schoolDto = school.AsQueryable<School>().Select( x => new SchoolDto
            //{
            //    Id = x.Id,
            //    Name = x.Name,
            //    Description = x.Description,
            //    Logo = x.Logo,
            //    Status = x.Status
            //});
            //await Task.Delay(1);
            var schools    = _schoolService.GetSchools(filters);
            var schoolDtos = _mapper.Map <IEnumerable <SchoolDto> >(schools);

            var metadata = new Metadata
            {
                TotalCount      = schools.TotalCount,
                PageSize        = schools.PageSize,
                CurrentPage     = schools.CurrentPage,
                TotalPages      = schools.TotalPages,
                HasNextPage     = schools.HasNextPage,
                HasPreviousPage = schools.HasPreviousPage,
                NextPageUrl     = _uriService.GetPostPaginationUri(filters, Url.RouteUrl(nameof(GetSchools))).ToString(),
                PreviousPageUrl = _uriService.GetPostPaginationUri(filters, Url.RouteUrl(nameof(GetSchools))).ToString()
            };

            var response = new ApiResponse <IEnumerable <SchoolDto> >(schoolDtos)
            {
                Meta = metadata
            };

            Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata));

            //var response = new ApiResponse<IEnumerable<SchoolDto>>(schoolDtos);
            return(Ok(response));
        }
예제 #2
0
        public PagedList <School> GetSchools(SchoolQueryFilter filters)
        {
            filters.PageNumber = filters.PageNumber == 0 ? _paginationOptions.DefaultPageNumber : filters.PageNumber;
            filters.PageSize   = filters.PageSize == 0 ? _paginationOptions.DefaultPageSize : filters.PageSize;

            //return _schoolRepository.GetAll(); //.GetSchools();
            var schools = _schoolRepository.SchoolRepository.GetAll().ToList();

            //filtros
            if (!String.IsNullOrEmpty(filters.Id))
            {
                schools = schools.Where(x => x.Id.ToLower().Contains(filters.Id)).ToList();
            }
            if (!String.IsNullOrEmpty(filters.Name))
            {
                schools = schools.Where(x => x.Name.ToLower().Contains(filters.Name)).ToList();
            }

            //paginacion

            var pageSchools = PagedList <School> .Create(schools, filters.PageNumber, filters.PageSize);

            return(pageSchools);
        }
예제 #3
0
        public Uri GetPostPaginationUri(SchoolQueryFilter filter, string actionUrl)
        {
            string baseUrl = $"{_baseUri}{actionUrl}";

            return(new Uri(baseUrl));
        }