using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text.Json; using System.Threading.Tasks; using AutoMapper; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using ThuisApi.Data; using ThuisApi.Models; namespace ThuisApi.Controllers { [Route("api/[controller]")] [ApiController] public class FreezerItemController : ControllerBase { private readonly ThuisDbContext _context; private readonly IMapper _mapper; public FreezerItemController(ThuisDbContext context, IMapper mapper) { _context = context; _mapper = mapper; } // GET: api/FreezerItem [HttpGet] public async Task>> GetFreezerItem() { return Ok(_mapper.Map>(await _context.FreezerItem.ToArrayAsync())); } // GET: api/FreezerItem/InFreezer/2 [HttpGet("InFreezer/{id}")] public async Task>> GetFreezerItemsInFreezer(int id) { if (!_context.Freezer.Any(a => a.FreezerId == id)) { return NotFound(); } return Ok(_mapper.Map>(await _context.FreezerItem .Where(a => a.FreezerId == id) .ToArrayAsync())); } // GET: api/FreezerItem/5 [HttpGet("{id}")] public async Task> GetFreezerItem(int id) { var freezerItem = await _context.FreezerItem.FindAsync(id); if (freezerItem == null) { return NotFound(); } return Ok(_mapper.Map(freezerItem)); } // PUT: api/FreezerItem/5 // To protect from overposting attacks, see https://go.microsoft.com/fwlink/?linkid=2123754 [HttpPut("{id}")] public async Task PutFreezerItem(int id, FreezerItemDto freezerItem) { if (id != freezerItem.FreezerItemId) { return BadRequest(); } _context.Entry(_mapper.Map(freezerItem)).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!FreezerItemExists(id)) { return NotFound(); } else { throw; } } return NoContent(); } // POST: api/FreezerItem // To protect from overposting attacks, see https://go.microsoft.com/fwlink/?linkid=2123754 [HttpPost] public async Task> PostFreezerItem(FreezerItemDto freezerItemDto) { var mappedItem = _mapper.Map(freezerItemDto); if (mappedItem.DatePlacedInFreezer.ToString(CultureInfo.CurrentCulture).Equals("")) { mappedItem.DatePlacedInFreezer = DateTime.Now; } mappedItem.Freezer = await _context.Freezer.SingleAsync(freezer => freezer.FreezerId == mappedItem.FreezerId); _context.FreezerItem.Add(mappedItem); await _context.SaveChangesAsync(); return CreatedAtAction("GetFreezerItem", new { id = mappedItem.FreezerItemId }, _mapper.Map(mappedItem)); } // DELETE: api/FreezerItem/5 [HttpDelete("{id}")] public async Task DeleteFreezerItem(int id) { var freezerItem = await _context.FreezerItem.FindAsync(id); if (freezerItem == null) { return NotFound(); } _context.FreezerItem.Remove(freezerItem); await _context.SaveChangesAsync(); return NoContent(); } private bool FreezerItemExists(int id) { return _context.FreezerItem.Any(e => e.FreezerItemId == id); } } }