PokemonSleepTools/PokemonSleepAPI/Controllers/PokemonController.cs

109 lines
3.0 KiB
C#

using AutoMapper;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using PokemonSleepAPI.Data;
using PokemonSleepAPI.Models;
using PokemonSleepAPI.Models.Dto;
using System;
namespace PokemonSleepAPI.Controllers
{
[Route("api/pokemon")]
[ApiController]
public class PokemonController : ControllerBase
{
private readonly PokemonDbContext _db;
private ResponseDto _response;
private IMapper _mapper;
public PokemonController(PokemonDbContext db, IMapper mapper)
{
_db = db;
_mapper = mapper;
_response = new ResponseDto();
}
/* Get all Pokemon */
[HttpGet]
public ResponseDto GetAllPokemon()
{
try
{
IEnumerable<Pokemon> objList = _db.Pokemons.ToList();
_response.Message = "Pokemons found.";
_response.Result = _mapper.Map<IEnumerable<PokemonDto>>(objList);
}
catch (Exception ex)
{
_response.IsSuccess = false;
_response.Message = ex.Message;
}
return _response;
}
/* Get Pokemon by Id */
[HttpGet]
[Route("{id:int}")]
public ResponseDto GetPokemonById(int id)
{
try
{
Pokemon pokemon = _db.Pokemons.FirstOrDefault(p => p.Id == id);
if (pokemon == null)
{
_response.IsSuccess = false;
_response.Message = "Pokemon not found.";
return _response;
}
_response.Message = $"{pokemon.Name} found.";
_response.Result = _mapper.Map<PokemonDto>(pokemon);
}
catch (Exception ex)
{
_response.IsSuccess = false;
_response.Message = ex.Message;
}
return _response;
}
/* Add a Pokemon */
[HttpPost]
public ResponseDto PostPokemon([FromBody] PokemonDto pokemonDto) {
try
{
Pokemon pokemon = _mapper.Map<Pokemon>(pokemonDto);
_db.Pokemons.Add(pokemon);
_db.SaveChanges();
_response.Message = $"{pokemon.Name} added to Database.";
_response.Result = _mapper.Map<PokemonDto>(pokemon);
}
catch (Exception ex)
{
_response.IsSuccess = false;
_response.Message = ex.Message;
}
return _response;
}
[HttpDelete]
public ResponseDto DeletePokemon(int id)
{
try
{
Pokemon pokemon = _db.Pokemons.First(p => p.Id == id);
_db.Pokemons.Remove(pokemon);
_db.SaveChanges();
}
catch (Exception ex)
{
_response.IsSuccess = false;
_response.Message = ex.Message;
}
return _response;
}
}
}