using AircraftPlantContracts.BindingModels; using AircraftPlantContracts.BusinessLogicsContracts; using AircraftPlantContracts.SearchModels; using AircraftPlantContracts.ViewModels; using Microsoft.AspNetCore.Mvc; namespace AircraftPlantRestApi.Controllers { /// /// Контроллер для работы с заказами /// [Route("api/[controller]/[action]")] [ApiController] public class MainController : Controller { /// /// Логгер /// private readonly ILogger _logger; /// /// Бизнес-логика для заказов /// private readonly IOrderLogic _orderLogic; /// /// Бизнес-логика для изделий /// private readonly IPlaneLogic _planeLogic; /// /// Конструктор /// /// /// /// public MainController(ILogger logger, IOrderLogic orderLogic, IPlaneLogic planeLogic) { _logger = logger; _orderLogic = orderLogic; _planeLogic = planeLogic; } /// /// Получение списка изделий /// /// [HttpGet] public List? GetPlaneList() { try { return _planeLogic.ReadList(null); } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения списка изделий"); throw; } } /// /// Получение изделия /// /// /// [HttpGet] public PlaneViewModel? GetPlane(int planeId) { try { return _planeLogic.ReadElement(new PlaneSearchModel { Id = planeId }); } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения изделия с Id: {Id}", planeId); throw; } } /// /// Получение списка заказов клиента /// /// /// [HttpGet] public List? GetOrders(int clientId) { try { return _orderLogic.ReadList(new OrderSearchModel { ClientId = clientId }); } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения списка заказов клиента с Id: {Id}", clientId); throw; } } /// /// Создание заказа /// /// [HttpPost] public void CreateOrder(OrderBindingModel model) { try { _orderLogic.CreateOrder(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка создания заказа"); throw; } } } }