using CanteenBusinessLogic.BusinessLogics; using CanteenContracts.BindingModels; using CanteenContracts.BusinessLogicsContracts; using CanteenContracts.SearchModel; using CanteenContracts.View; using CanteenContracts.ViewModels; using CanteenDataModels.Models; using Microsoft.AspNetCore.Mvc; namespace CanteenRestApi.Controllers { [Route("api/[controller]/[action]")] [ApiController] public class MainController : ControllerBase { private readonly ILogger _logger; private readonly ICookLogic _cook; private readonly IDishLogic _dish; private readonly IProductLogic _product; private readonly ITablewareLogic _tableware; private readonly IOrderLogic _order; private readonly ILunchLogic _lunch; private readonly IGraphicLogic _gl; public MainController(ILogger logger, ICookLogic cook, IDishLogic dish, IProductLogic product, ITablewareLogic tableware, IOrderLogic order, IGraphicLogic gl, ILunchLogic lunch) { _logger = logger; _cook = cook; _dish = dish; _product = product; _tableware = tableware; _order = order; _gl = gl; _lunch = lunch; } [HttpGet] public List? GetTablewareList(int visitorId) { try { return _tableware.ReadList(new TablewareSearchModel { VisitorId = visitorId }); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpPost] public void CreateTableware(TablewareBindingModel model) { try { _tableware.Create(model); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpPost] public void DeleteTableware(TablewareBindingModel model) { try { _tableware.Delete(model); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpPost] public void UpdateTableware(TablewareBindingModel model) { try { _tableware.Update(model); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpGet] public List? GetCookList(int managerId) { try { return _cook.ReadList(new CookSearchModel { ManagerId = managerId }); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpGet] public List? GetCookFullList() { try { return _cook.ReadList(null); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpPost] public void CookCreate(CookBindingModel model) { try { _cook.Create(model); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpPost] public void CookDelete(CookBindingModel model) { try { _cook.Delete(model); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpPost] public void CookUpdate(CookBindingModel model) { try { _cook.Update(model); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpGet] public List? GetDishList(int managerId) { try { return _dish.ReadList(new DishSearchModel { ManagerId = managerId }); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpGet] public DishViewModel? GetDish(int Id) { try { return _dish.ReadElement(new DishSearchModel { Id = Id }); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpPost] public void DishCreate(DishBindingModel model) { try { _dish.Create(model); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpPost] public void DishDelete(DishBindingModel model) { try { _dish.Delete(model); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpPost] public void DishUpdate(DishBindingModel model) { try { _dish.Update(model); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpPost] public void DishAddProducts(Tuple model) { try { _dish.AddProductsToDish(model.Item1, model.Item2, model.Item3); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpGet] public List? GetProductList(int managerId) { try { return _product.ReadList(new ProductSearchModel { ManagerId = managerId }); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpGet] public List? GetProductFullList() { try { return _product.ReadList(null); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpGet] public ProductViewModel? GetProduct(int Id) { try { return _product.ReadElement(new ProductSearchModel { Id = Id }); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpPost] public void ProductCreate(ProductBindingModel model) { try { _product.Create(model); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpPost] public void ProductDelete(ProductBindingModel model) { try { _product.Delete(model); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpPost] public void ProductUpdate(ProductBindingModel model) { try { _product.Update(model); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpPost] public void ProductAddCooks(Tuple model) { try { _product.AddCooksToProduct(model.Item1, model.Item2); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpGet] public List? GetOrderList(int visitorId) { try { return _order.ReadList(new OrderSearchModel { VisitorId = visitorId }); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpGet] public OrderViewModel? GetOrder(int Id) { try { return _order.ReadElement(new OrderSearchModel { Id = Id }); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpPost] public void CreateOrder(OrderBindingModel model) { try { _order.Create(model); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpPost] public void DeleteOrder(OrderBindingModel model) { try { _order.Delete(model); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpPost] public void UpdateOrder(OrderBindingModel model) { try { _order.Update(model); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpPost] public void OrderAddTablewares(Tuple model) { try { _order.UpdateTablewares(model.Item1, model.Item2, model.Item3); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpPost] public void OrderAddCooks(Tuple model) { try { _order.UpdateCooks(model.Item1, model.Item2); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpPost] public void CreateLunch(LunchBindingModel model) { try { _lunch.Create(model); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpPost] public void DeleteLunch(LunchBindingModel model) { try { _lunch.Delete(model); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpPost] public void UpdateLunch(LunchBindingModel model) { try { _lunch.Update(model); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpPost] public void LunchAddOrders(Tuple model) { try { _lunch.UpdateOrders(model.Item1, model.Item2); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpPost] public void LunchAddProducts(Tuple model) { try { _lunch.UpdateProducts(model.Item1, model.Item2, model.Item3); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpGet] public List? GetLunchList(int visitorId) { try { return _lunch.ReadList(new LunchSearchModel { VisitorId = visitorId }); } catch (Exception ex) { _logger.LogError(ex, "Error during loading list of bouquets"); throw; } } [HttpGet] public GraphicViewModel[] GetGraphic() { return new GraphicViewModel[] { _gl.GetGraphicByCount(), _gl.GetGraphicByPrice() }; } } }