예제 #1
0
        public async Task Put(
            int id,
            AlbumDefinition modifyRequest)
        {
            MediaAlbum album = await DbContext.MediaAlbums.SingleOrDefaultAsync(
                a => a.MediaAlbumId == id);

            if (album == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }
            if (album.UserId != UserId)
            {
                throw new HttpResponseException(HttpStatusCode.Forbidden);
            }

            UserInfo user = await GetUserInfoAsync();

            HttpStatusCode result = await AlbumOperations.ChangeAlbumAsync(
                DbContext,
                user,
                id,
                modifyRequest);

            if (result != HttpStatusCode.OK)
            {
                throw new HttpResponseException(result);
            }
        }
예제 #2
0
        public async Task PostImage(int albumId, AddImageToAlbum createRequest)
        {
            MediaAlbum albumEntity = await DbContext.MediaAlbums
                                     .SingleOrDefaultAsync(a => a.MediaAlbumId == albumId);

            if (albumEntity == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }
            if (albumEntity.UserId != UserId)
            {
                throw new HttpResponseException(HttpStatusCode.Forbidden);
            }


            UserMedia mediaEntity = await DbContext.UserMedias
                                    .SingleOrDefaultAsync(um => um.UserMediaId == createRequest.MediaId);

            if (mediaEntity == null)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }
            if (mediaEntity.UserId != UserId)
            {
                throw new HttpResponseException(HttpStatusCode.Forbidden);
            }

            await AlbumOperations.AddMediaToAlbumAsync(DbContext, albumEntity, mediaEntity, createRequest);
        }
예제 #3
0
        public async Task <IList <AlbumSummary> > Get(string userId)
        {
            UserInfo user = await GetUserInfoAsync(userId);

            return(await AlbumOperations.GetAlbumSummariesAsync(
                       DbContext, user));
        }
예제 #4
0
        public async Task PostComment(int albumId, CommentRequest commentRequest)
        {
            HttpStatusCode result = await AlbumOperations.AddAlbumCommentAsync(
                DbContext, UserId, albumId, commentRequest);

            result.ThrowHttpResponseExceptionIfNotSuccessful();
        }
예제 #5
0
        public async Task PostLikeAlbum(int albumId, LikeRequest likeRequest)
        {
            HttpStatusCode result = await AlbumOperations.AddOrRemoveAlbumLikeAsync(
                DbContext, UserId, albumId, likeRequest);

            result.ThrowHttpResponseExceptionIfNotSuccessful();
        }
예제 #6
0
        public async Task <AlbumDetail> Get(int albumId)
        {
            var result = await AlbumOperations.GetAlbumAsync(DbContext, albumId);

            if (result == null)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }
            return(result);
        }
예제 #7
0
        public async Task <AlbumSummary> Post(
            AlbumDefinition createRequest)
        {
            UserInfo user = await GetUserInfoAsync();

            AlbumSummary result = await AlbumOperations.CreateAlbumAsync(
                DbContext, user, createRequest);

            if (result == null)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }

            return(result);
        }
예제 #8
0
        public async Task <ActionResult> Index(string userId = null)
        {
            UserInfo albumUser = await GetUserInfoAsync(userId);

            if (albumUser == null)
            {
                return(HttpNotFound());
            }

            var vm = new AlbumsViewModel
            {
                UserId                = UserId,
                AlbumOwnerId          = userId,
                FullName              = albumUser.Name,
                PosessiveInformalName = UserOperations.GetInformalPosessiveName(albumUser),
                AvatarUrl             = UserOperations.GetAvatarUrl(albumUser),
                Albums                = await AlbumOperations.GetAlbumSummariesAsync(DbContext, albumUser)
            };

            return(View("Index", vm));
        }
예제 #9
0
        public async Task <ActionResult> Index(int albumId)
        {
            AlbumDetail albumDetail = await AlbumOperations.GetAlbumAsync(DbContext, albumId);

            if (albumDetail == null)
            {
                return(HttpNotFound());
            }

            UserInfo albumUser = await GetUserInfoAsync(albumDetail.UserId);

            AlbumViewModel vm = await SetVmEditorInfo(new AlbumViewModel
            {
                AlbumId  = albumId,
                FullName = albumUser.Name,
                PosessiveInformalName = UserOperations.GetInformalPosessiveName(albumUser),
                AvatarUrl             = UserOperations.GetAvatarUrl(albumUser),
                Detail = albumDetail
            });

            return(View(albumDetail.UserId == UserId ? "OwnedAlbum" : "Album", vm));
        }