public PagedList <Band> GetBands(BandsResourceParameters bandsResourceParameters) { if (bandsResourceParameters == null) { throw new ArgumentNullException(nameof(bandsResourceParameters)); } var collection = _context.Bands as IQueryable <Band>; if (!string.IsNullOrWhiteSpace(bandsResourceParameters.MainGenre)) { var mainGenre = bandsResourceParameters.MainGenre.Trim(); collection = collection.Where(b => b.MainGenre == mainGenre); } if (!string.IsNullOrWhiteSpace(bandsResourceParameters.SearchQuery)) { var searchQuery = bandsResourceParameters.SearchQuery.Trim(); collection = collection.Where(b => b.Name.Contains(searchQuery)); } return(PagedList <Band> .Create(collection, bandsResourceParameters.PageNumber, bandsResourceParameters.PageSize)); }
public ActionResult <IEnumerable <BandDto> > GetBands([FromQuery] BandsResourceParameters parameters) { var bands = _repository.GetBands(parameters); var bandsDto = _mapper.Map <IEnumerable <BandDto> >(bands); return(Ok(bandsDto)); }
public IEnumerable <Band> GetBands(BandsResourceParameters bandsResourceParameters) { if (bandsResourceParameters == null) { throw new ArgumentNullException(nameof(bandsResourceParameters)); } if (string.IsNullOrWhiteSpace(bandsResourceParameters.MainGenre) && string.IsNullOrWhiteSpace(bandsResourceParameters.SearchQuery)) { return(GetBands()); } var collection = _context.Bands as IQueryable <Band>; if (!string.IsNullOrWhiteSpace(bandsResourceParameters.MainGenre)) { var mainGenre = bandsResourceParameters.MainGenre.Trim(); collection = collection.Where(b => b.MainGenre == mainGenre); } if (!string.IsNullOrWhiteSpace(bandsResourceParameters.SearchQuery)) { var searchQuery = bandsResourceParameters.SearchQuery.Trim(); collection = collection.Where(b => b.Name.Contains(searchQuery)); } return(collection.ToList()); }
public PagedList <Band> GetBands(BandsResourceParameters parameters) { if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } IQueryable <Band> collection = _context.Bands as IQueryable <Band>; if (!string.IsNullOrWhiteSpace(parameters.MainGenre)) { string mainGenre = parameters.MainGenre.Trim(); collection = collection.Where(b => b.MainGenre == mainGenre); } if (!string.IsNullOrWhiteSpace(parameters.SearchQuery)) { string searchQuery = parameters.SearchQuery.Trim(); collection = collection.Where(b => b.Name.ToLower().Contains(searchQuery)); } if (!string.IsNullOrWhiteSpace(parameters.OrderBy)) { Dictionary <string, PropertyMappingValue> bandPropertyMappingDictionary = _propertyMappingService.GetPropertyMapping <BandDto, Band>(); collection = collection.ApplySort(parameters.OrderBy, bandPropertyMappingDictionary); } return(PagedList <Band> .Create(collection, parameters.PageNumber, parameters.PageSize)); }
public IEnumerable <Band> GetAllBands(//string Genre, string Search BandsResourceParameters bandsResourceParameters) { if (bandsResourceParameters == null) { throw new ArgumentNullException(nameof(bandsResourceParameters)); } if (string.IsNullOrWhiteSpace(bandsResourceParameters.Genre) && string.IsNullOrWhiteSpace(bandsResourceParameters.Search)) { GetAllBands(); } //Saving all bands in this var so changes can be done in this var and not whole database set. var collectionOfAllBands = _db.Bands as IQueryable <Band>; //Filter according to Genre. if (!string.IsNullOrWhiteSpace(bandsResourceParameters.Genre)) { var Genre1 = bandsResourceParameters.Genre.Trim(); //Remove whitespaces and format the string to make search/filter easy. collectionOfAllBands = collectionOfAllBands.Where( c => c.Genre == Genre1); } //Search according to Search query provided. //Whatever band has the characters provided in Search string will be returned. if (!string.IsNullOrWhiteSpace(bandsResourceParameters.Search)) { var Search1 = bandsResourceParameters.Search.Trim(); collectionOfAllBands = collectionOfAllBands.Where( c => c.Name.Contains(Search1)); } return(collectionOfAllBands.ToList()); }
public IActionResult GetBands([FromQuery] BandsResourceParameters parameters) { if (!_propertyMappingService.ValidMappingExists <BandDto, Band>(parameters.OrderBy)) { return(BadRequest()); } if (!_propertyValidationService.HasValidProperties <BandDto>(parameters.Fields)) { return(BadRequest()); } PagedList <Band> bands = _bandAlbumRepository.GetBands(parameters); string previousPageLink = bands.HasPrevious ? CreateBandsUri(parameters, UriType.PreviousPage) : null; string nextPageLink = bands.hasNext ? CreateBandsUri(parameters, UriType.NextPage) : null; var metaData = new { totalCount = bands.TotalCount, pageSize = bands.PageSize, currentPage = bands.CurrentPage, totalPages = bands.TotalPages, previousPageLink, nextPageLink }; Response.Headers.Add("Pagination", JsonSerializer.Serialize(metaData)); return(Ok(_mapper.Map <IEnumerable <BandDto> >(bands).ShapeData(parameters.Fields))); }
public ActionResult <IEnumerable <BandDto> > GetBands([FromQuery] BandsResourceParameters bandsResourceParameters) { var bandsFromRepo = _bandAlbumRepository.GetBands(bandsResourceParameters); var previousPageLink = bandsFromRepo.HasPrevious ? CreateBandsUri(bandsResourceParameters, UriType.PreviousPage) : null; var nextPageLink = bandsFromRepo.HasNext ? CreateBandsUri(bandsResourceParameters, UriType.NextPage) : null; var metaData = new { totalCount = bandsFromRepo.TotalCount, pageSize = bandsFromRepo.PageSize, currentPage = bandsFromRepo.CurrentPage, totalPages = bandsFromRepo.TotalPages, previousPageLink = previousPageLink, nextPageLink = nextPageLink }; Response.Headers.Add("Pagination", JsonSerializer.Serialize(metaData)); return(Ok(_mapper.Map <IEnumerable <BandDto> >(bandsFromRepo))); }
private string CreateBandsUri(BandsResourceParameters bandsResourceParameters, UriType uriType) { switch (uriType) { case UriType.PreviousPage: return(Url.Link("GetBands", new { pageNumber = bandsResourceParameters.PageNumber - 1, pageSize = bandsResourceParameters.PageSize, mainGenre = bandsResourceParameters.MainGenre, searchQuery = bandsResourceParameters.SearchQuery })); case UriType.NextPage: return(Url.Link("GetBands", new { pageNumber = bandsResourceParameters.PageNumber + 1, pageSize = bandsResourceParameters.PageSize, mainGenre = bandsResourceParameters.MainGenre, searchQuery = bandsResourceParameters.SearchQuery })); default: return(Url.Link("GetBands", new { pageNumber = bandsResourceParameters.PageNumber + 1, pageSize = bandsResourceParameters.PageSize, mainGenre = bandsResourceParameters.MainGenre, searchQuery = bandsResourceParameters.SearchQuery })); } }
private IEnumerable <LinkDto> CreateLinksForBands(BandsResourceParameters bandsResourceParameters, bool hasNext, bool hasPrevious) { var links = new List <LinkDto>(); links.Add( new LinkDto(CreateBandsUri(bandsResourceParameters, UriType.Current), "self", "GET")); if (hasNext) { links.Add( new LinkDto(CreateBandsUri(bandsResourceParameters, UriType.NextPage), "nextPage", "GET")); } if (hasPrevious) { links.Add( new LinkDto(CreateBandsUri(bandsResourceParameters, UriType.PreviousPage), "previousPage", "GET")); } return(links); }
public PagedList <Band> GetBands(BandsResourceParameters bandsResourceParameters) { if (bandsResourceParameters == null) { throw new ArgumentNullException(nameof(bandsResourceParameters)); } var collection = _context.Bands as IQueryable <Band>; if (!string.IsNullOrWhiteSpace(bandsResourceParameters.MainGenre)) { var mainGenre = bandsResourceParameters.MainGenre.Trim(); collection = collection.Where(b => b.MainGenre == mainGenre); } if (!string.IsNullOrWhiteSpace(bandsResourceParameters.SearchQuery)) { var searchQuery = bandsResourceParameters.SearchQuery.Trim(); collection = collection.Where(b => b.Name.Contains(searchQuery)); } if (!string.IsNullOrWhiteSpace(bandsResourceParameters.OrderBy)) { var bandPropertyMappingDictionary = _propertyMappingService.GetPropertyMapping <Models.BandDto, Entities.Band>(); collection = collection.ApplySort(bandsResourceParameters.OrderBy, bandPropertyMappingDictionary); } return(PagedList <Band> .Create(collection, bandsResourceParameters.PageNumber, bandsResourceParameters.PageSize)); }
public ActionResult <IEnumerable <BandDto> > GetBands([FromQuery] BandsResourceParameters bandsResourceParameters) { var bandRepo = _bandAlbumRepository.GetBands(bandsResourceParameters); var bandsDto = new List <BandDto>(); return(Ok(_mapper.Map <IEnumerable <BandDto> >(bandRepo))); }
[HttpHead] //Displays information that might be useful for the user. //[FromQuery] is necessary to be mentioned when passing arguments that will come from a query //String and other basic types are automatically understood by application but complex types //Like objects aren't and FromQuery should be mentioned necessarily otherwise program will assume that the //argument will be passed from the body. public ActionResult <IEnumerable <BandDTO> > GetAllBands( //[FromQuery]string Genre, [FromQuery]string Search [FromQuery] BandsResourceParameters bandsResourceParameters) { var bandsFromRepo = _bandAlbumRepository.GetAllBands(bandsResourceParameters); return(Ok(_mapper.Map <IEnumerable <BandDTO> >(bandsFromRepo))); }
public IActionResult GetBands( [FromQuery] BandsResourceParameters bandsResourceParameters) { if (!_propertyMappingService.ValidMappingExists <BandDto, Entities.Band> (bandsResourceParameters.OrderBy)) { return(BadRequest()); } if (!_propertyValidationService.HasValidProperties <BandDto> (bandsResourceParameters.Fields)) { return(BadRequest()); } var bandsFromRepo = _bandAlbumRepository.GetBands(bandsResourceParameters); var metaData = new { totalCount = bandsFromRepo.TotalCount, pageSize = bandsFromRepo.PageSize, currentPage = bandsFromRepo.CurrentPage, totalPages = bandsFromRepo.TotalPages }; Response.Headers.Add("Pagination", JsonSerializer.Serialize(metaData)); var links = CreateLinksForBands(bandsResourceParameters, bandsFromRepo.HasNext, bandsFromRepo.HasPrevious); var shapedBands = _mapper.Map <IEnumerable <BandDto> >(bandsFromRepo) .ShapeData(bandsResourceParameters.Fields); var shapedBandsWithLinks = shapedBands.Select(band => { var bandAsDictionary = band as IDictionary <string, object>; var bandLinks = CreateLinksForBand((Guid)bandAsDictionary["Id"], null); bandAsDictionary.Add("links", bandLinks); return(bandAsDictionary); }); var linkedCollectionResource = new { value = shapedBandsWithLinks, links }; return(Ok(linkedCollectionResource)); }
public IEnumerable <Band> GetBands(BandsResourceParameters bandsResourceParameters) { if (string.IsNullOrWhiteSpace(bandsResourceParameters.MainGenre) && string.IsNullOrWhiteSpace(bandsResourceParameters.SearchQuery)) { return(GetBands()); } var collection = _context.Bands as IQueryable <Band>; if (!string.IsNullOrWhiteSpace(bandsResourceParameters.MainGenre)) { collection = collection.Where(b => b.MainGenre == bandsResourceParameters.MainGenre.Trim()); } if (!string.IsNullOrWhiteSpace(bandsResourceParameters.SearchQuery)) { collection = collection.Where(b => b.Name.Contains(bandsResourceParameters.SearchQuery)); } return(collection.ToList()); }
public ActionResult <IEnumerable <BandDTO> > GetBands([FromQuery] BandsResourceParameters bandsResourceParameters) { var bandsFromRepo = _bandAlbumRepository.GetBands(bandsResourceParameters); return(Ok(_mapper.Map <IEnumerable <BandDTO> >(bandsFromRepo))); //throw new Exception("testing exceptions"); //var bandsDTO = new List<BandDTO>(); //foreach(var band in bandsFromRepo) //{ // bandsDTO.Add(new BandDTO() // { // Id = band.Id, // Name = band.Name, // MainGenre = band.MainGenre, // FoundedYearsAgo = $"{band.Founded.ToString("yyyy")} ({band.Founded.GetYearsAgo()} years ago)" // }); //} //return Ok(BandDTO); }
public ActionResult <IEnumerable <Band_Dto> > GetBands([FromQuery] BandsResourceParameters bandsResourceParameters) { var bandsFromRepo = _bandAlbumRepository.GetBands(bandsResourceParameters); //var bandsDto = new List<Band_Dto>(); //foreach (var b in bandsFromRepo) //{ // bandsDto.Add(new Band_Dto() // { // Id = b.Id, // Name = b.Name, // MainGenre = b.MainGenre, // FoundedYearsAgo = $"{b.Founded.ToString("yyyy")} ({b.Founded.GetYearsAgo()} years ago)" // }); //} //return new JsonResult(bandsFromRepo); //return new JsonResult(bandsDto); return(Ok(_mapper.Map <IEnumerable <Band_Dto> >(bandsFromRepo))); }
public PagedList <Band> GetBands(BandsResourceParameters bandsResourceParameter) { if (bandsResourceParameter == null) { throw new ArgumentException(nameof(bandsResourceParameter)); } var mainGenre = bandsResourceParameter.MainGenre; var searchQuery = bandsResourceParameter.SearchQuery; int pageNumber = bandsResourceParameter.PageNumber; int pageSize = bandsResourceParameter.PageSize; var collection = _context.Bands as IQueryable <Band>; if (!string.IsNullOrWhiteSpace(mainGenre)) { mainGenre = mainGenre.Trim(); collection = collection.Where(b => b.MainGenre.ToUpper() == mainGenre.ToUpper()); } if (!string.IsNullOrWhiteSpace(searchQuery)) { searchQuery = searchQuery.Trim(); collection = collection.Where(b => b.Name.Contains(searchQuery)); } return(PagedList <Band> .Create(collection, pageNumber, pageSize)); }