예제 #1
0
        /// <summary>
        /// Updates the played status.
        /// </summary>
        /// <param name="user">The user.</param>
        /// <param name="itemId">The item id.</param>
        /// <param name="wasPlayed">if set to <c>true</c> [was played].</param>
        /// <returns>Task.</returns>
        private async Task <UserItemDataDto> UpdatePlayedStatus(User user, string itemId, bool wasPlayed)
        {
            var item = DtoBuilder.GetItemByClientId(itemId, _userManager, _libraryManager, user.Id);

            await item.SetPlayedStatus(user, wasPlayed, _userDataRepository).ConfigureAwait(false);

            return(DtoBuilder.GetUserItemDataDto(_userDataRepository.GetUserData(user.Id, item.GetUserDataKey())));
        }
        /// <summary>
        /// Marks the like.
        /// </summary>
        /// <param name="userId">The user id.</param>
        /// <param name="type">The type.</param>
        /// <param name="name">The name.</param>
        /// <param name="likes">if set to <c>true</c> [likes].</param>
        /// <returns>Task.</returns>
        protected async Task <UserItemDataDto> MarkLike(Guid userId, string type, string name, bool?likes)
        {
            var item = await GetItemByName(name, type, LibraryManager).ConfigureAwait(false);

            var key = item.GetUserDataKey();

            // Get the user data for this item
            var data = UserDataRepository.GetUserData(userId, key);

            data.Likes = likes;

            await UserDataRepository.SaveUserData(userId, key, data, CancellationToken.None).ConfigureAwait(false);

            data = UserDataRepository.GetUserData(userId, key);

            return(DtoBuilder.GetUserItemDataDto(data));
        }
예제 #3
0
        private async Task <UserItemDataDto> UpdateUserItemRating(Guid userId, string itemId, bool?likes)
        {
            var user = _userManager.GetUserById(userId);

            var item = string.IsNullOrEmpty(itemId) ? user.RootFolder : DtoBuilder.GetItemByClientId(itemId, _userManager, _libraryManager, user.Id);

            var key = item.GetUserDataKey();

            // Get the user data for this item
            var data = _userDataRepository.GetUserData(user.Id, key);

            data.Likes = likes;

            await _userDataRepository.SaveUserData(user.Id, key, data, CancellationToken.None).ConfigureAwait(false);

            data = _userDataRepository.GetUserData(user.Id, key);

            return(DtoBuilder.GetUserItemDataDto(data));
        }
예제 #4
0
        /// <summary>
        /// Posts the specified request.
        /// </summary>
        /// <param name="request">The request.</param>
        public object Post(UpdateUserItemRating request)
        {
            var user = _userManager.GetUserById(request.UserId);

            var item = string.IsNullOrEmpty(request.Id) ? user.RootFolder : DtoBuilder.GetItemByClientId(request.Id, _userManager, _libraryManager, user.Id);

            var key = item.GetUserDataKey();

            // Get the user data for this item
            var data = _userDataRepository.GetUserData(user.Id, key);

            data.Likes = request.Likes;

            var task = _userDataRepository.SaveUserData(user.Id, key, data, CancellationToken.None);

            Task.WaitAll(task);

            data = _userDataRepository.GetUserData(user.Id, key);

            var dto = DtoBuilder.GetUserItemDataDto(data);

            return(ToOptimizedResult(dto));
        }