Beispiel #1
0
        public async Task <ActionResult <string> > CreateGroupAlbumAsync(GroupAlbumUploadModel groupAlbumUploadModel)
        {
            try
            {
                if (await IsUserValidAsync())
                {
                    var newGroupAlbumIdentifier = await GroupAlbumModel.CreateNewGroupAlbumAsync(
                        groupAlbumUploadModel,
                        ExtractUserIdFromToken(),
                        RepositoryManager,
                        GetMapper(),
                        _spotifyAPICredentials);

                    return(Ok(newGroupAlbumIdentifier));
                }
                else
                {
                    return(Unauthorized());
                }
            }
            catch (InvalidTokenException err)
            {
                return(BadRequest(new InvalidTokenException(err.InvalidTokenType, err.ErrorMessage)));
            }
            catch (UserNotGroupMemberException)
            {
                return(Forbid());
            }
            catch (Exception err)
            {
                LogException(err);

                return(Problem());
            }
        }
Beispiel #2
0
        public static async Task <string> CreateNewGroupAlbumAsync(
            GroupAlbumUploadModel groupAlbumUploadModel,
            Guid userId,
            IRepositoryManager repositoryManager,
            IMapper mapper,
            SpotifyAPICredentials spotifyAPICredentials)
        {
            var groupIdentifier = groupAlbumUploadModel.GroupIdentifier.ToUpperInvariant();

            try
            {
                var group = await repositoryManager.GroupRepository.GetByIdentifierAsync(groupIdentifier);

                if (group != null)
                {
                    var isUserMemberOfGroup = await GroupMemberModel.CheckGroupMemberExistsAsync(
                        groupAlbumUploadModel.GroupIdentifier,
                        userId,
                        repositoryManager);

                    if (isUserMemberOfGroup)
                    {
                        var newGroupAlbumIdentifier = await GenerateNewGroupAlbumIdentifierAsync(
                            group.Id,
                            repositoryManager.GroupAlbumRepository).ConfigureAwait(false);

                        var newGroupAlbum = new GroupAlbum
                        {
                            GroupId       = group.Id,
                            Identifier    = newGroupAlbumIdentifier,
                            IsRandom      = groupAlbumUploadModel.IsRandom,
                            CreatedOn     = DateTime.Now,
                            CreatedBy     = userId,
                            LastUpdatedOn = DateTime.Now,
                            LastUpdatedBy = userId
                        };

                        var existingAlbum = await repositoryManager.AlbumRepository.CheckExistsBySpotifyIdAsync(
                            groupAlbumUploadModel.AlbumIdentifier);

                        if (existingAlbum != null)
                        {
                            newGroupAlbum.AlbumId = existingAlbum.Id;
                        }
                        else
                        {
                            var newAlbum = await AlbumModel.IndexNewAlbumAsync(
                                groupAlbumUploadModel.AlbumIdentifier,
                                repositoryManager,
                                mapper,
                                spotifyAPICredentials);

                            newGroupAlbum.AlbumId = newAlbum.Id;
                        }

                        await repositoryManager.GroupAlbumRepository.AddAsync(newGroupAlbum);

                        return(newGroupAlbumIdentifier);
                    }
                    else
                    {
                        throw new UserNotGroupMemberException(
                                  "You are not able to perform this action",
                                  "You are not able to perform this action");
                    }
                }
                else
                {
                    throw new InvalidTokenException(InvalidTokenType.TokenNotFound, "The requested Group was not found");
                }
            }
            catch (Exception)
            {
                throw;
            }
        }