using BankYouBankruptContracts.BindingModels; using BankYouBankruptContracts.BusinessLogicsContracts; using BankYouBankruptContracts.SearchModels; using BankYouBankruptContracts.ViewModels; using Microsoft.AspNetCore.Mvc; using System.Linq.Expressions; using System.Net; namespace BankYouBankruptRestApi.Controllers { [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(ICardLogic cardLogic, IDebitingLogic debitingLogic, ICreditingLogic creditingLogic, IAccountLogic accountLogic, ILogger logger) { _logger = logger; _cardLogic = cardLogic; _debitingLogic = debitingLogic; _creditingLogic = creditingLogic; _accountLogic = accountLogic; } [HttpGet] public List? GetUsersCardsList(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; } } } }