コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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));
        }
コード例 #5
0
        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));
        }