Example #1
0
        public async Task HandleAsync(EditLyricInput input, IEditLyricOutputHandler <T> output)
        {
            var author = await _userRepository.GetByUsernameAsync(input.AuthorUsername);

            if (author == null)
            {
                output.BadRequest("The given author does not exist");
                return;
            }

            var dbLyric = await _lyricRepository.GetAsync(input.Id);

            if (dbLyric == null)
            {
                output.BadRequest("The given lyric does not exist");
                return;
            }
            if (dbLyric.AuthorId != author.Id)
            {
                output.BadRequest("The given lyric does not belong to you");
                return;
            }
            try
            {
                dbLyric.Title  = input.Title;
                dbLyric.Text   = input.Text;
                dbLyric.Singer = input.Singer;

                await _lyricRepository.UpdateAsync(dbLyric);

                output.Success(new EditLyricOutput(dbLyric.Id, dbLyric.Text, dbLyric.Title, dbLyric.Singer));
            }
            catch (Exception)
            {
                output.BadRequest("Editing lyric failed.");
            }
        }