Пример #1
0
    /// <summary>
    /// Tries to add a song director.
    /// </summary>
    /// <param name="request">The add song director request.</param>
    /// <returns>The result of the request.</returns>
    private async Task <TOutput> TryAddSongDirector(AddSongDirectorRequest request)
    {
        // Validate the new song director
        Result <SongDirector> createSongDirectorResult = SongDirector.TryCreate(
            request.FullName,
            request.EmailAddress,
            request.PhoneNumber,
            request.RankName,
            request.IsActive);

        // Validation failure
        if (createSongDirectorResult.IsFailed)
        {
            return(ValidationFailure(createSongDirectorResult));
        }

        SongDirector songDirector = createSongDirectorResult.Value;

        // Add the song director
        Result <SongDirector> addSongDirectorResult = await _songDirectorRepository
                                                      .TryAddAsync(songDirector)
                                                      .ConfigureAwait(false);

        if (addSongDirectorResult.IsFailed)
        {
            return(FailedToAddSongDirector(addSongDirectorResult));
        }

        SongDirectorUseCaseModel addedSongDirector = SongDirectorUseCaseModel
                                                     .GrandmasterView(songDirector);

        return(SongDirectorAdded(addedSongDirector));
    }
Пример #2
0
        /// <summary>
        /// Converts a song director to a model.
        /// </summary>
        /// <param name="songDirector">The song director to convert.</param>
        /// <param name="requesterId">Requester id.</param>
        /// <param name="requesterRank">Requester rank.</param>
        /// <returns><see cref="SongDirectorUseCaseModel"/>.</returns>
        public static SongDirectorUseCaseModel ConvertToUseCaseModel(
            this SongDirector songDirector, string?requesterId, Rank?requesterRank)
        {
            if (songDirector.Id == requesterId)
            {
                return(SongDirectorUseCaseModel.Self(songDirector, requesterRank));
            }

            if (requesterRank == Rank.Grandmaster)
            {
                return(SongDirectorUseCaseModel.GrandmasterView(songDirector));
            }

            return(SongDirectorUseCaseModel.ReadOnly(songDirector));
        }