using ApiRestaurant.Models; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; namespace ApiRestaurant.Controllers; [Route("api/[controller]")] [ApiController] public class RestaurantController : ControllerBase { private RestaurantContext _context; public RestaurantController(RestaurantContext context) { _context = context; } [HttpGet] public Task<List<Restaurant>> GetAll() { return _context.Restaurants.ToListAsync(); } [HttpGet("{id}")] public async Task<ActionResult<Restaurant?>> GetOne(Guid id) { var restaurant = await _context.Restaurants.FindAsync(id); if (restaurant == null) return NotFound($"Restourant with [id: '{id}'] not found"); var waiters = await WaiterApiClient.GetAllForRestaurant(id); restaurant.Waiters = waiters; return restaurant; } [HttpPost] public ActionResult<Restaurant> Create(RestaurantDTO restaurant) { var newRestaurant = new Restaurant { Name = restaurant.Name }; var res = _context.Restaurants.Add(newRestaurant); _context.SaveChanges(); return res.Entity; } [HttpPut("{id}")] public ActionResult<Restaurant> Update(Guid id, RestaurantDTO restaurant) { var oldRestaurant = _context.Restaurants.FirstOrDefault(r => r.Id == id); if (oldRestaurant == null) return NotFound(); oldRestaurant.Name = restaurant.Name; var res = _context.Restaurants.Update(oldRestaurant); _context.SaveChangesAsync(); return res.Entity; } [HttpDelete] public ActionResult Delete(Guid id) { var restaurant = _context.Restaurants.FirstOrDefault(r => r.Id == id); if (restaurant is null) return NotFound(); _context.Restaurants.Remove(restaurant); _context.SaveChangesAsync(); return Ok(); } } public record RestaurantDTO(string Name);