using DocumentFormat.OpenXml.Office2010.Excel; using FlowerShopContracts.BindingModels; using FlowerShopContracts.BusinessLogicsContracts; using FlowerShopContracts.SearchModels; using FlowerShopContracts.ViewModels; using FlowerShopDataModels.Enums; using Microsoft.AspNetCore.Mvc; namespace FlowerShopRestApi.Controllers { [Route("api/[controller]/[action]")] [ApiController] public class ImplementerController : Controller { private readonly ILogger _logger; private readonly IOrderLogic _orderLogic; private readonly IImplementerLogic _implementerLogic; public ImplementerController(IOrderLogic order, IImplementerLogic logic, ILogger logger) { _logger = logger; _orderLogic = order; _implementerLogic = logic; } [HttpGet] public ImplementerViewModel? Login(string login, string password) { try { return _implementerLogic.ReadElement(new ImplementerSearchModel { ImplementerFIO = login, Password = password }); } catch (Exception ex) { _logger.LogError(ex, "Error during auth"); throw; } } [HttpGet] public List? GetNewOrders() { try { return _orderLogic.ReadList(new OrderSearchModel { Statuses = new() { OrderStatus.Принят } }); } catch (Exception ex) { _logger.LogError(ex, "Error during reciving new orders"); throw; } } [HttpGet] public OrderViewModel? GetImplementerOrder(int implementerId) { try { return _orderLogic.ReadElement(new OrderSearchModel { ImplementerId = implementerId }); } catch (Exception ex) { _logger.LogError(ex, "Error during reciving current order"); throw; } } [HttpPost] public void TakeOrderInWork(OrderBindingModel model) { try { _orderLogic.TakeOrderInWork(model); } catch (Exception ex) { _logger.LogError(ex, "Error during changing status of order №{Id} into work", model.Id); throw; } } [HttpPost] public void FinishOrder(OrderBindingModel model) { try { _orderLogic.FinishOrder(model); } catch (Exception ex) { _logger.LogError(ex, "Error during finishing order with №{ Id}", model.Id); throw; } } } }