Untitled

 avatar
unknown
plain_text
2 years ago
3.4 kB
8
Indexable
namespace FlFi.Membership.API.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class GenresController : ControllerBase
    {
        private readonly IDbService _db;
        public GenresController(IDbService db) => _db = db;

        [HttpGet]
        public async Task<IResult> Get()
        {
            try
            {
                List<GenreDTO>? Genre = await _db.GetAsync<Genre, GenreDTO>();

                return Results.Ok(Genre);

            }
            catch (Exception ex)
            {

            }
            return Results.NotFound();
        }

        // GET api/<GenresController>/5
        [HttpGet("{id}")]
        public async Task<IResult> Get(int id)
        {
            try
            {

                var genre = await _db.SingleAsync<Genre, GenreDTO>(f => f.Id.Equals(id));
                if (genre is null) return Results.NotFound();  //Fråga detta

                return Results.Ok(genre);
            }
            catch (Exception ex)
            {
            }
            return Results.NotFound();
        }



        // POST api/<GenresController>
        [HttpPost]
        public async Task<IResult> Post([FromBody] GenreDTO dto)
        {
            try
            {
                if (dto == null) return Results.BadRequest();

                var genre = await _db.AddAsync<Genre, GenreDTO>(dto);

                var success = await _db.SaveChangesAsync();

                if (!success) return Results.BadRequest();

                return Results.Created(_db.GetURI<Genre>(genre), genre);
            }

            catch (Exception ex)
            {

            }
            return Results.BadRequest();
        }

        // PUT api/<GenresController>/5
        [HttpPut("{id}")]
        public async Task<IResult> Put(int id, [FromBody] GenreDTO dto)
        {
            try
            {
                if (dto == null) return Results.BadRequest("No entity provided");
                if (!id.Equals(dto.Id)) return Results.BadRequest("Differing ids");

                var exists = await _db.AnyAsync<Genre>(d => d.Id.Equals(id));  
                if (!exists) return Results.NotFound("Could not find related entity");

                exists = await _db.AnyAsync<Genre>(d => d.Id.Equals(id));
                if (!exists) return Results.NotFound("Could not find entity");

                _db.Update<Genre, GenreDTO>(dto.Id, dto);

                var success = await _db.SaveChangesAsync();

                if (!success) return Results.BadRequest();

                return Results.NoContent();
            }
            catch (Exception ex)
            {
            }
            return Results.BadRequest("Unable to update the entity");
        }

        // DELETE api/<GenresController>/5
        [HttpDelete("{id}")]
        public async Task<IResult> Delete(int id)
        {
            try
            {
                var success = await _db.DeleteAsync<Genre>(id);

                if (!success) return Results.NotFound();

                success = await _db.SaveChangesAsync();

                if (!success) return Results.BadRequest();

                return Results.NoContent();
            }
            catch
            {
            }

            return Results.BadRequest();
        }
    }
Editor is loading...