using ComputerShopContracts.BindingModels;
using ComputerShopContracts.SearchModels;
using ComputerShopContracts.ViewModels;
using ComputerShopBusinessLogic.BusinessLogics;
using Microsoft.AspNetCore.Mvc;
using ComputerShopContracts.BusinessLogicContracts;

[Route("api/[controller]/[action]")]
[ApiController]
public class ClientController : Controller
{
    private readonly ILogger _logger;
    private readonly IClientLogic _logic;
    public ClientController(IClientLogic logic, ILogger<ClientController>
    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;
        }
    }
}