Beispiel #1
0
        public async Task <IActionResult> Update(int id, [FromBody] CharacterToAddOrUpdateDto characterToUpdate)
        {
            var character = await _repository.Get(id, includeRelated : true);

            if (character == null)
            {
                return(NotFound());
            }

            if (characterToUpdate.FriendsIds.Contains((character.Id)))
            {
                throw new Exception("Character can not be friend to himself");
            }

            _mapper.Map <CharacterToAddOrUpdateDto, Character>(characterToUpdate, character);

            character = this.ChangeCharacterFriends(character, characterToUpdate.FriendsIds);
            character = this.ChangeCharacterEpisodes(character, characterToUpdate.EpisodesIds);

            if (await _repository.SaveAll())
            {
                var updatedCharacter = await _repository.Get(character.Id);

                var characterToReturn = _mapper.Map <Character, CharacterDto>(updatedCharacter);

                return(Ok(characterToReturn));
            }

            throw new Exception($"Failed to update character {id}");
        }
Beispiel #2
0
        public async Task <IActionResult> Add([FromBody] CharacterToAddOrUpdateDto characterToAddDto)
        {
            var character = _mapper.Map <CharacterToAddOrUpdateDto, Character>(characterToAddDto);

            character = this.ChangeCharacterFriends(character, characterToAddDto.FriendsIds);
            character = this.ChangeCharacterEpisodes(character, characterToAddDto.EpisodesIds);

            _repository.Add(character);

            if (await _repository.SaveAll())
            {
                var newCharacter = await _repository.Get(character.Id);

                var characterToReturn = _mapper.Map <Character, CharacterDto>(newCharacter);

                //Or we can simply return NoContent()
                return(Ok(characterToReturn));
            }

            throw new Exception("Failed to add new character");
        }