using AyCode.Core.Consts; using AyCode.Core.Loggers; using AyCode.Core.Server.Loggers; using AyCode.Entities; using AyCode.Entities.Server.LogItems; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json.Linq; using System.Text.Json; using TIAM.Database.DataLayers.Admins; using TIAM.Database.DataLayers.Users; using TIAM.Entities.Emails; using TIAM.Entities.Transfers; using TIAM.Services.Server; using TIAM.Services.Server.Logins; using TIAMWebApp.Server.Services; using TIAMWebApp.Shared.Application.Models; using TIAMWebApp.Shared.Application.Models.ClientSide.Payment; using TIAMWebApp.Shared.Application.Models.PageModels; namespace TIAMWebApp.Server.Controllers { [Authorize] [ApiController] [EnableCors("_myAllowSpecificOrigins")] [Route("api/v1/[controller]")] public class PaymentAPIController : ControllerBase { private AdminDal _adminDal; private SumupService _sumupService; private readonly TIAM.Core.Loggers.ILogger _logger; private readonly IMessageSenderService _messageSenderService; public PaymentAPIController(AdminDal adminDal, SumupService sumupService, IMessageSenderService messageSenderService, IEnumerable logWriters) { _adminDal = adminDal; _sumupService = sumupService; _messageSenderService = messageSenderService; _logger = new TIAM.Core.Loggers.Logger(logWriters.ToArray()); } [AllowAnonymous] [HttpPost] [Route(APIUrls.CreatePaymentRouteName)] public async Task CreatePayment([FromBody] JsonElement paymentItem) { _logger.Detail($"CreatePayment called! {paymentItem.ToString()}"); var transferToPay = JObject.Parse(paymentItem.GetRawText()).ToObject(); var paymentRequest = new SumupPaymentRequest { CheckoutReference = transferToPay.OrderId.ToString(), Amount = transferToPay.Price.ToString(), Currency = "HUF", PayToEmail = "adam.g@aycode.com", Description = "Test transfer payment" }; var result = await _sumupService.CreateCheckout(paymentRequest); _logger.Detail($"CreatePayment result: {result}"); var checkoutUrl = result.CheckoutUrl; return checkoutUrl; } } }