Untitled
unknown
plain_text
2 years ago
3.3 kB
10
Indexable
namespace MV.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>(); return Results.Ok(films); #region //List<FilmDTO>? films = freeOnly ? //await _db.GetAsync<Film, FilmDTO>(f => f.Free.Equals(freeOnly)) : //await _db.GetAsync<Film, FilmDTO>(); return Results.Ok(films); #endregion } catch (Exception ex) { } return Results.NotFound(); } // GET api/<FilmsController>/5 [HttpGet("{id}")] public async Task<IResult> Get(int id) { try { _db.Include<Genre>(); _db.Include<Director>(); 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] FilmCreateDTO 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); } 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"); //if (dto == null || dto.Id != id) //{ // return Results.BadRequest(); //} var exists = await _db.AnyAsync<Director>(d => d.Id.Equals(dto.DirectorId)); if (!exists) return Results.NotFound("Could not find related entity"); exists = await _db.AnyAsync<Film>(f => f.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(); } // 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 (Exception ex) { } return Results.BadRequest(); } } }
Editor is loading...