diff --git a/ShipyardRestApi/Controllers/ClientController.cs b/ShipyardRestApi/Controllers/ClientController.cs new file mode 100644 index 0000000..396ec3e --- /dev/null +++ b/ShipyardRestApi/Controllers/ClientController.cs @@ -0,0 +1,65 @@ +using Microsoft.AspNetCore.Mvc; +using ShipyardContracts.BindingModels; +using ShipyardContracts.BusinessLogicContracts; +using ShipyardContracts.SearchModels; +using ShipyardContracts.ViewModels; + +namespace ShipyardRestApi.Controllers +{ + [Route("api/[controller]/[action]")] + [ApiController] + public class ClientController : Controller + { + private readonly ILogger _logger; + private readonly IClientLogic _logic; + public ClientController(IClientLogic logic, ILogger + logger) + { + _logger = logger; + _logic = logic; + } + [HttpGet] + public ClientViewModel? Login(string login, string password) + { + try + { + return _logic.ReadElement(new ClientSearchModel + { + Email = login, + Password = password + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка входа в систему"); + throw; + } + } + [HttpPost] + public void Register(ClientBindingModel model) + { + try + { + _logic.Create(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка регистрации"); + throw; + } + } + [HttpPost] + public void UpdateData(ClientBindingModel model) + { + try + { + _logic.Update(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка обновления данных"); + throw; + } + } + } +} diff --git a/ShipyardRestApi/Controllers/MainController.cs b/ShipyardRestApi/Controllers/MainController.cs new file mode 100644 index 0000000..9205f88 --- /dev/null +++ b/ShipyardRestApi/Controllers/MainController.cs @@ -0,0 +1,82 @@ +using Microsoft.AspNetCore.Mvc; +using ShipyardContracts.BindingModels; +using ShipyardContracts.BusinessLogicsContracts; +using ShipyardContracts.SearchModels; +using ShipyardContracts.ViewModels; + +namespace ShipyardRestApi.Controllers +{ + [Route("api/[controller]/[action]")] + [ApiController] + public class MainController : Controller + { + private readonly ILogger _logger; + private readonly IOrderLogic _order; + private readonly IShipLogic _ship; + public MainController(ILogger logger, IOrderLogic order, IShipLogic product) + { + _logger = logger; + _order = order; + _ship = product; + } + [HttpGet] + public List? GetShipList() + { + try + { + return _ship.ReadList(null); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения списка кораблей"); + throw; + } + } + [HttpGet] + public ShipViewModel? GetShip(int productId) + { + try + { + return _ship.ReadElement(new ShipSearchModel + { + Id = productId + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения корабля по id={Id}", productId); + throw; + } + } + [HttpGet] + public List? GetOrders(int clientId) + { + try + { + return _order.ReadList(new OrderSearchModel + { + ClientId = clientId + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка получения списка заказов клиента id ={ Id}", clientId); + throw; + } + } + [HttpPost] + public void CreateOrder(OrderBindingModel model) + { + try + { + _order.CreateOrder(model); + } + catch (Exception ex) + { + _logger.LogError(ex, "Ошибка создания заказа"); + throw; + } + } + } +} +