using Microsoft.AspNetCore.Http.HttpResults; using Microsoft.EntityFrameworkCore; using WebAPIWithEF.Data; using WebAPIWithEF.Models; namespace WebAPIWithEF.Services { public class PizzaService { private readonly PizzaContext _context; public PizzaService(PizzaContext context) { _context = context; } public IEnumerable GetAll() { return _context.Pizzas .AsNoTracking() // just read service (not track changes of the entity) .ToList(); } public Pizza? GetById(int id) { return _context.Pizzas .Include(p => p.Toppings) .Include(p => p.Sauce) .AsNoTracking() .SingleOrDefault(p => p.Id == id); } public Pizza? Create(Pizza newPizza) { _context.Pizzas.Add(newPizza); _context.SaveChanges(); return newPizza; } public void AddTopping(int PizzaId, int ToppingId) { var pizzaToUpdate = _context.Pizzas.Include(p => p.Toppings).SingleOrDefault(p => p.Id == PizzaId); var toppingToAdd = _context.Toppings.Find(ToppingId); if (pizzaToUpdate is null || toppingToAdd is null) throw new InvalidOperationException("Pizza or topping does not exist"); if (pizzaToUpdate.Toppings is null) pizzaToUpdate.Toppings = new List(); pizzaToUpdate.Toppings.Add(toppingToAdd); _context.SaveChanges(); } public void UpdateSauce(int PizzaId, int SauceId) { var pizzaToUpdate = _context.Pizzas.Find(PizzaId); var sauceToUpdate = _context.Sauces.Find(SauceId); if (pizzaToUpdate is null || sauceToUpdate is null) throw new InvalidOperationException("Pizza or sauce does not exist"); pizzaToUpdate.Sauce = sauceToUpdate; _context.SaveChanges(); } public void DeleteById(int id) { var pizzaToDelete = _context.Pizzas.Find(id); if (pizzaToDelete is null) return; _context.Pizzas.Remove(pizzaToDelete); _context.SaveChanges(); } } }