using DocumentFormat.OpenXml.Spreadsheet; using FurnitureAssemblyContracts.BindingModels; using FurnitureAssemblyContracts.BusinessLogicContracts; using FurnitureAssemblyContracts.SearchModels; using FurnitureAssemblyContracts.ViewModels; using FurnitureAssemblyDatabaseImplement.Models; using Microsoft.AspNetCore.Mvc; using System.Collections.Generic; namespace FurnitureAssemblyRestApi.Controllers { [Route("api/[controller]/[action]")] [ApiController] public class MainController : Controller { private readonly ILogger _logger; private readonly IFurnitureLogic _furniture; private readonly IFurnitureModuleLogic _furnitureModule; private readonly IMaterialLogic _material; private readonly IOrderInfoLogic _orderInfo; private readonly IOrderLogic _order; private readonly IRoleLogic _role; private readonly IScopeLogic _scope; private readonly ISetLogic _set; private readonly IUserLogic _user; public MainController(ILogger logger, IFurnitureLogic furniture, IFurnitureModuleLogic furnitureModule, IMaterialLogic material, IOrderInfoLogic orderInfo, IOrderLogic order, IRoleLogic role, IScopeLogic scope, ISetLogic set, IUserLogic user) { _logger = logger; _furniture = furniture; _furnitureModule = furnitureModule; _material = material; _orderInfo = orderInfo; _order = order; _role = role; _scope = scope; _set = set; _user = user; } [HttpGet] public List? GetFurnitureList() { try { return _furniture.ReadList(null); } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения списка мебели"); throw; } } [HttpGet] public FurnitureViewModel? GetFurniture(int Id) { try { return _furniture.ReadElement(new FurnitureSearchModel { Id = Id }); } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения мебели по id={Id}", Id); throw; } } [HttpPost] public void AddFurniture(FurnitureBindingModel model) { try { _furniture.Create(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка создания мебели"); throw; } } [HttpPut] public void UpdateFurniture(FurnitureBindingModel model) { try { _furniture.Update(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка обновления мебели"); throw; } } [HttpDelete] public void DeleteFurniture(FurnitureBindingModel model) { try { _furniture.Delete(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка удаления мебели"); throw; } } [HttpGet] public List? GetFurnitureModuleList() { try { return _furnitureModule.ReadList(null); } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения списка мебельных модулей"); throw; } } [HttpGet] public FurnitureModuleViewModel? GetFurnitureModule(int Id) { try { return _furnitureModule.ReadElement(new FurnitureModuleSearchModel { Id = Id }); } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения мебельного модуля по id={Id}", Id); throw; } } [HttpPost] public void AddFurnitureModule(FurnitureModuleBindingModel model) { try { _furnitureModule.Create(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка создания мебельного модуля"); throw; } } [HttpPut] public void UpdateFurnitureModule(FurnitureModuleBindingModel model) { try { _furnitureModule.Update(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка обновления мебельного модуля"); throw; } } [HttpDelete] public void DeleteFurnitureModule(FurnitureModuleBindingModel model) { try { _furnitureModule.Delete(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка удаления мебельного модуля"); throw; } } [HttpGet] public List? GetMaterialList() { try { return _material.ReadList(null); } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения списка материалов"); throw; } } [HttpGet] public MaterialViewModel? GetMaterial(int Id) { try { return _material.ReadElement(new MaterialSearchModel { Id = Id }); } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения материала по id={Id}", Id); throw; } } [HttpPost] public void AddMaterial(MaterialBindingModel model) { try { _material.Create(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка создания материала"); throw; } } [HttpPut] public void UpdateMaterial(MaterialBindingModel model) { try { _material.Update(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка обновления материала"); throw; } } [HttpDelete] public void DeleteMaterial(MaterialBindingModel model) { try { _material.Delete(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка удаления материала"); throw; } } [HttpGet] public List? GetOrderList() { try { return _order.ReadList(null); } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения списка материалов"); throw; } } [HttpGet] public OrderViewModel? GetOrder(int Id) { try { return _order.ReadElement(new OrderSearchModel { Id = Id }); } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения материала по id={Id}", Id); throw; } } [HttpPost] public void AddOrder(OrderBindingModel model) { try { _order.Create(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка создания материала"); throw; } } [HttpPut] public void UpdateOrder(OrderBindingModel model) { try { _order.Update(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка обновления материала"); throw; } } [HttpDelete] public void DeleteOrder(OrderBindingModel model) { try { _order.Delete(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка удаления материала"); throw; } } [HttpGet] public List? GetOrderInfoList() { try { return _orderInfo.ReadList(null); } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения списка материалов"); throw; } } [HttpGet] public OrderInfoViewModel? GetOrderInfo(int Id) { try { return _orderInfo.ReadElement(new OrderInfoSearchModel { Id = Id }); } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения материала по id={Id}", Id); throw; } } [HttpPost] public void AddOrderInfo(OrderInfoBindingModel model) { try { _orderInfo.Create(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка создания материала"); throw; } } [HttpPut] public void UpdateOrderInfo(OrderInfoBindingModel model) { try { _orderInfo.Update(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка обновления материала"); throw; } } [HttpDelete] public void DeleteOrderInfo(OrderInfoBindingModel model) { try { _orderInfo.Delete(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка удаления материала"); throw; } } [HttpGet] public List? GetRoleList() { try { return _role.ReadList(null); } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения списка материалов"); throw; } } [HttpGet] public RoleViewModel? GetRole(int Id) { try { return _role.ReadElement(new RoleSearchModel { Id = Id }); } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения материала по id={Id}", Id); throw; } } [HttpPost] public void AddRole(RoleBindingModel model) { try { _role.Create(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка создания материала"); throw; } } [HttpPut] public void UpdateRole(RoleBindingModel model) { try { _role.Update(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка обновления материала"); throw; } } [HttpDelete] public void DeleteRole(RoleBindingModel model) { try { _role.Delete(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка удаления материала"); throw; } } [HttpGet] public List? GetScopeList() { try { return _scope.ReadList(null); } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения списка материалов"); throw; } } [HttpGet] public ScopeViewModel? GetScope(int Id) { try { return _scope.ReadElement(new ScopeSearchModel { Id = Id }); } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения материала по id={Id}", Id); throw; } } [HttpPost] public void AddScope(ScopeBindingModel model) { try { _scope.Create(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка создания материала"); throw; } } [HttpPut] public void UpdateScope(ScopeBindingModel model) { try { _scope.Update(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка обновления материала"); throw; } } [HttpDelete] public void DeleteScope(ScopeBindingModel model) { try { _scope.Delete(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка удаления материала"); throw; } } [HttpGet] public List? GetSetList() { try { return _set.ReadList(null); } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения списка материалов"); throw; } } [HttpGet] public SetViewModel? GetSet(int Id) { try { return _set.ReadElement(new SetSearchModel { Id = Id }); } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения материала по id={Id}", Id); throw; } } [HttpPost] public void AddSet(SetBindingModel model) { try { _set.Create(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка создания материала"); throw; } } [HttpPut] public void UpdateSet(SetBindingModel model) { try { _set.Update(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка обновления материала"); throw; } } [HttpDelete] public void DeleteSet(SetBindingModel model) { try { _set.Delete(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка удаления материала"); throw; } } [HttpGet] public List? GetUserList() { try { return _user.ReadList(null); } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения списка материалов"); throw; } } [HttpGet] public UserViewModel? GetUser(int Id) { try { return _user.ReadElement(new UserSearchModel { Id = Id }); } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения материала по id={Id}", Id); throw; } } [HttpPost] public void AddUser(UserBindingModel model) { try { _user.Create(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка создания материала"); throw; } } [HttpPut] public void UpdateUser(UserBindingModel model) { try { _user.Update(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка обновления материала"); throw; } } [HttpDelete] public void DeleteUser(UserBindingModel model) { try { _user.Delete(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка удаления материала"); throw; } } } }