using Api.Models; using AutoMapper; using Data; using Data.Models; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; namespace Api.Controllers { [Route("api/[controller]")] [ApiController] public class FreezerController : ControllerBase { private readonly ThuisDbContext _context; private readonly IMapper _mapper; public FreezerController(ThuisDbContext context, IMapper mapper) { _context = context; _mapper = mapper; } // GET: api/Freezer [HttpGet] public async Task>> GetFreezer() { return Ok(new { freezers = _context.Freezer.Select(freezer => new FreezerDto { FreezerId = freezer.FreezerId, Name = freezer.Name, AmountInFreezer = _context.FreezerItem.Count(fi => fi.FreezerId == freezer.FreezerId) })}); } // GET: api/Freezer/5 [HttpGet("{id}")] public async Task> GetFreezer(int id) { var freezer = await _context.Freezer.FindAsync(id); if (freezer == null) { return NotFound(); } return Ok(_mapper.Map(freezer)); } // PUT: api/Freezer/5 // To protect from overposting attacks, see https://go.microsoft.com/fwlink/?linkid=2123754 [HttpPut("{id}")] public async Task PutFreezer(int id, FreezerDto freezer) { if (id != freezer.FreezerId) { return BadRequest(); } _context.Entry(_mapper.Map(freezer)).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!FreezerExists(id)) { return NotFound(); } else { throw; } } return NoContent(); } // POST: api/Freezer // To protect from overposting attacks, see https://go.microsoft.com/fwlink/?linkid=2123754 [HttpPost] public async Task> PostFreezer(FreezerDto freezerDto) { var mappedFreezer = _mapper.Map(freezerDto); var newFreezer = new Freezer { Name = mappedFreezer.Name }; _context.Freezer.Add(newFreezer); await _context.SaveChangesAsync(); return CreatedAtAction("GetFreezer", new { id = newFreezer.FreezerId }, _mapper.Map(newFreezer)); } // DELETE: api/Freezer/5 [HttpDelete("{id}")] public async Task DeleteFreezer(int id) { var freezer = await _context.Freezer.FindAsync(id); if (freezer == null) { return NotFound(); } _context.Freezer.Remove(freezer); await _context.SaveChangesAsync(); return NoContent(); } private bool FreezerExists(int id) { return _context.Freezer.Any(e => e.FreezerId == id); } } }