using BankContracts.BindingModels.Client; using BankContracts.BusinessLogicsContracts.Cashier; using BankContracts.BusinessLogicsContracts.Client; using BankContracts.SearchModels.Client; using BankContracts.ViewModels.Client.ViewModels; using Microsoft.AspNetCore.Mvc; using System.Net; namespace BankRestAPI.Controllers { // Route будет строиться по наванию контроллера и по названию метода (два Post-метода) [Route("api/[controller]/[action]")] [ApiController] public class CardController : Controller { private readonly ILogger _logger; private readonly ICardLogic _cardLogic; private readonly IDebitingLogic _debitingLogic; private readonly ICreditingLogic _creditingLogic; private readonly IAccountLogic _accountLogic; // Конструктор public CardController(ILogger logger, ICardLogic cardLogic, IDebitingLogic debitingLogic, ICreditingLogic creditingLogic, IAccountLogic accountLogic) { _logger = logger; _cardLogic = cardLogic; _debitingLogic = debitingLogic; _creditingLogic = creditingLogic; _accountLogic = accountLogic; } [HttpGet] public List? GetAllCards() { try { return _cardLogic.ReadList(null); } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения карт"); throw; } } [HttpGet] public List? GetClientsCardsList(int id) { try { return _cardLogic.ReadList(new CardSearchModel() { ClientID = id }); } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения карт"); throw; } } [HttpPost] public void CreateCard(CardBindingModel model) { try { _cardLogic.Create(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка создания банковской карты"); Response.StatusCode = (int)HttpStatusCode.NotAcceptable; } } [HttpPost] public void CreateDebitingRequest(DebitingBindingModel model) { try { _debitingLogic.Create(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка создания запроса на снятие наличных"); Response.StatusCode = (int)(HttpStatusCode.NotAcceptable); } } [HttpPost] public void CreateCreditingOperation(CreditingBindingModel model) { try { _creditingLogic.Create(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка создания операции на пополнение"); Response.StatusCode = (int)HttpStatusCode.NotAcceptable; } } [HttpGet] public CardViewModel? FindCard(int id) { try { return _cardLogic.ReadElement(new CardSearchModel { Id = id }); } catch (Exception ex) { _logger.LogError(ex, "Ошибка входа в систему"); throw; } } } }