public async Task <IActionResult> Get([FromQuery] LoverPhotoParameters parameters) { PaginatedList <LoverPhoto> photos = await _repository.GetLoverPhotosAsync(this.GetUserId(), parameters); IQueryable <LoverPhoto> sortedPhotos = photos.AsQueryable() .ApplySort( parameters.OrderBy, _propertyMappingContainer.Resolve <LoverPhotoResource, LoverPhoto>()); IEnumerable <LoverPhotoResource> loverPhotoResources = _mapper.Map <IEnumerable <LoverPhotoResource> >(sortedPhotos); IEnumerable <ExpandoObject> shapedLoverPhotoResources = loverPhotoResources.ToDynamicObject(parameters.Fields) .AddLinks(this, parameters.Fields, "photo", "GetPhoto", "DeleteLoverPhoto", "PartiallyUpdateLoverPhoto"); this.AddPaginationHeaderToResponse(photos); var result = new { value = shapedLoverPhotoResources, links = this.CreatePaginationLinks( "GetLoverPhotoResources", parameters, photos.HasPrevious, photos.HasNext) }; return(Ok(result)); }
public async Task <IActionResult> Get([FromQuery] LoverAnniversaryParameters parameters) { PaginatedList <LoverAnniversary> anniversaries = await _anniversaryRepository.GetAsync(this.GetUserId(), parameters); IQueryable <LoverAnniversary> sortedAnniversaries = anniversaries.AsQueryable() .ApplySort( parameters.OrderBy, _propertyMappingContainer.Resolve <LoverAnniversaryResource, LoverAnniversary>()); IEnumerable <LoverAnniversaryResource> loverAnniversaryResources = _mapper.Map <IEnumerable <LoverAnniversaryResource> >(sortedAnniversaries); IEnumerable <ExpandoObject> shapedAnniversaryResource = loverAnniversaryResources.ToDynamicObject(parameters.Fields) .Select(x => { var dict = x as IDictionary <string, object>; dict.Add("links", CreateLinksForAnniversary(dict["Id"] as string, parameters.Fields)); return(x); }); this.AddPaginationHeaderToResponse(anniversaries); var result = new { value = shapedAnniversaryResource, links = this.CreatePaginationLinks("GetLoverAnniversaries", parameters, anniversaries.HasPrevious, anniversaries.HasNext) }; return(Ok(result)); }
public async Task <IActionResult> Get([FromQuery] MenstruationLogParameters parameters) { string userId = this.GetUserId(); PaginatedList <MenstruationLog> mlogs = await _mlogRepository.GetAsync(userId, parameters); IEnumerable <MenstruationLog> sortedMlogs = mlogs.AsQueryable() .ApplySort( parameters.OrderBy, _propertyMappingContainer.Resolve <MenstruationLogResource, MenstruationLog>()); IEnumerable <ExpandoObject> shapedMlogs = sortedMlogs.ToDynamicObject(parameters.Fields) .AddLinks( this, parameters.Fields, "menstruation_log", null, "DeleteMenstruationLog", "PartiallyUpdateMenstruationLog"); var result = new { values = shapedMlogs, links = this.CreatePaginationLinks( "GetMenstruationLogs", parameters, mlogs.HasPrevious, mlogs.HasNext), }; this.AddPaginationHeaderToResponse(mlogs); return(Ok(result)); }
public async Task <IActionResult> Get([FromQuery] LoverAlbumParameters parameters) { PaginatedList <LoverAlbum> albums = await _albumRepository.GetLoverAlbumsAsync(this.GetUserId(), parameters); IQueryable <LoverAlbum> sortedAlbums = albums.AsQueryable() .ApplySort( parameters.OrderBy, _propertyMappingContainer.Resolve <LoverAlbumResource, LoverAlbum>()); IEnumerable <LoverAlbumResource> albumResources = _mapper.Map <IEnumerable <LoverAlbumResource> >(sortedAlbums); foreach (LoverAlbumResource source in albumResources) { source.PhotosCount = await _albumRepository.GetPhotosCount(source.Id); LoverPhoto converImage = await _albumRepository.GetCoverImage(source.Id); if (converImage != null) { source.CoverImageUrl = Url.LinkRelative("GetPhoto", new { id = converImage.Id }); } } IEnumerable <ExpandoObject> shapedAlbumResources = albumResources .ToDynamicObject(parameters.Fields) .AddLinks( this, parameters.Fields, "album", "GetLoverAlbum", "DeleteLoverAlbum", "PartiallyUpdateLoverAlbum"); var result = new { value = shapedAlbumResources, links = this.CreatePaginationLinks("GetLoverAlbums", parameters, albums.HasPrevious, albums.HasNext) }; this.AddPaginationHeaderToResponse(albums); return(Ok(result)); }
public async Task <IActionResult> Get([FromQuery] LoverLogParameters parameters) { string userId = this.GetUserId(); PaginatedList <LoverLog> logs = await _repository.GetLoverLogsAsync(userId, parameters); IQueryable <LoverLog> sortedLogs = logs.AsQueryable() .ApplySort( parameters.OrderBy, _propertyMappingContainer.Resolve <LoverLogResource, LoverLog>()); IEnumerable <LoverLogResource> loverLogResources = _mapper.Map <IEnumerable <LoverLogResource> >(sortedLogs) .Select(x => { Parallel.ForEach(x.LoverPhotos, photo => { photo.Url = Url.LinkRelative("GetPhoto", new { id = photo.Id }); }); return(x); }); IEnumerable <ExpandoObject> shapedLoverLogResources = loverLogResources.ToDynamicObject(parameters.Fields) .AddLinks(this, parameters.Fields, "GetLoverLog", "DeleteLoverLog", "PartiallyUpdateLoverLog"); var result = new { value = shapedLoverLogResources, links = this.CreatePaginationLinks("GetLoverLogs", parameters, logs.HasPrevious, logs.HasNext) }; this.AddPaginationHeaderToResponse(logs); return(Ok(result)); }