using ComputerStoreContracts.BindingModels;
using ComputerStoreContracts.BusinessLogicContracts;
using ComputerStoreContracts.SearchModels;
using ComputerStoreContracts.ViewModels;
using Microsoft.AspNetCore.Mvc;

namespace ComputerStoreRestAPI.Controllers
{
	[Route("api/[controller]/[action]")]
	[ApiController]
	public class SellerController : Controller
	{
		private readonly ILogger _logger;
		private readonly ISellerLogic _logic;

		public SellerController(ISellerLogic logic, ILogger<SellerController> logger)
		{
			_logger = logger;
			_logic = logic;
		}

		[HttpGet]
		public SellerViewModel? Login(string login, string password)
		{
			try
			{
				return _logic.ReadElement(new SellerSearchModel { Username = login, Password = password });
			}
			catch (Exception ex)
			{
				_logger.LogError(ex, "Seller logging in error"); throw;
			}
		}

		[HttpPost]
		public bool Register(SellerBindingModel seller)
		{
			try
			{
				return _logic.Create(seller);
			}
			catch (Exception ex)
			{
				_logger.LogError(ex, "Seller registration error ");
				throw;
			}
		}

		[HttpPatch]
		public bool UpdateData(SellerBindingModel seller)
		{
			try
			{
				return _logic.Update(seller);
			}
			catch (Exception ex)
			{
				_logger.LogError(ex, "Update of data error ");
				throw;
			}
		}
	}
}