using DinerContracts.BindingModels; using DinerContracts.BusinessLogicsContacts; using DinerContracts.BusinessLogicsContracts; using DinerContracts.SearchModels; using DinerContracts.ViewModels; using DinerDataModels.Enums; using DocumentFormat.OpenXml.Office2010.PowerPoint; using Microsoft.AspNetCore.Mvc; namespace DinerRestApi.Controllers { [Route("api/[controller]/[action]")] [ApiController] public class ImplementerController : Controller { private readonly ILogger _logger; private readonly IOrderLogic _order; private readonly IImplementerLogic _logic; public ImplementerController(ILogger logger, IOrderLogic order, IImplementerLogic implementerLogic) { _logger = logger; _order = order; _logic = implementerLogic; } [HttpGet] public ImplementerViewModel? Login(string login, string password) { try { return _logic.ReadElement(new ImplementerSearchModel { ImplementerFIO = login, Password = password }); } catch (Exception ex) { _logger.LogError(ex, "Ошибка авторизации сотрудников"); throw; } } [HttpGet] public List? GetNewOrderss() { try { return _order.ReadList(new OrderSearchModel { Status = OrderStatus.Принят }); } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения новых заказов"); throw; } } [HttpGet] public OrderViewModel? GetImplementerOrder(int implementerID) { try { return _order.ReadElement(new OrderSearchModel { ImplementerID = implementerID }); } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения текущего заказа исполнителя"); throw; } } [HttpPost] public void TakeOrderInWork(OrderBindingModel model) { try { _order.TakeOrderInWork(model); } catch (Exception ex) { _logger.LogError(ex, $"Ошибка перевода заказа с №{model.ID} в работу"); throw; } } [HttpPost] public void FinishOrder(OrderBindingModel model) { try { _order.FinishOrder(model); } catch (Exception ex) { _logger.LogError(ex, $"Ошибка отметки о готовности заказа с №{model.ID}"); throw; } } } }