Untitled
unknown
plain_text
2 years ago
4.4 kB
4
Indexable
using FlFi.Common.DTOs; using FlFI.Membership.Database.Entities; // For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860 namespace FlFi.Membership.API.Controllers { [Route("api/[controller]")] [ApiController] public class FilmsController : ControllerBase { private readonly IDbService _db; public FilmsController(IDbService db) => _db = db; [HttpGet] public async Task<IResult> Get() { try { _db.Include<Director>(); //The Include method in this method appears to be a custom method //that includes related entities in the query to retrieve data from a database, //in this case the entity Director is being included. The result is then used //to populate a list of FilmDTO objects. List<FilmDTO>? films = await _db.GetAsync<Film, FilmDTO>(); //List<FilmDTO>? films = freeOnly ? //await _db.GetAsync<Film, FilmDTO>(f => f.Free.Equals(freeOnly)) : //await _db.GetAsync<Film, FilmDTO>(); return Results.Ok(films); } catch (Exception ex) { } return Results.NotFound(); } // GET api/<FilmsController>/5 [HttpGet("{id}")] public async Task<IResult> Get(int id) { try { _db.Include<Director>(); _db.Include<Genre>(); var film = await _db.SingleAsync<Film, FilmDTO>(f => f.Id.Equals(id)); return Results.Ok(film); } catch (Exception ex) { } return Results.NotFound(); } // POST api/<FilmsController> [HttpPost] public async Task<IResult> Post([FromBody] FilmEditDTO dto) { try { if (dto == null) return Results.BadRequest(); var film = await _db.AddAsync<Film, FilmCreateDTO>(dto); var success = await _db.SaveChangesAsync(); if (!success) return Results.BadRequest(); return Results.Created(_db.GetURI<Film>(film), film); } catch (Exception ex) { } return Results.BadRequest(); } // PUT api/<FilmsController>/5 [HttpPut("{id}")] public async Task<IResult> Put(int id, [FromBody] FilmEditDTO 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<Director>(i => i.Id.Equals(dto.DirectorId)); //Fråga JOnas om varför director här och director på Directorcontroller if (!exists) return Results.NotFound("Could not find related entity"); exists = await _db.AnyAsync<Film>(c => c.Id.Equals(id)); if (!exists) return Results.NotFound("Could not find entity"); _db.Update<Film, FilmEditDTO>(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/<FilmsController>/5 [HttpDelete("{id}")] public async Task<IResult> Delete(int id) { try { var success = await _db.DeleteAsync<Film>(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...