using _0_Framework.Application; using _0_Framework.Application.PaymentGateway; using CompanyManagment.App.Contracts.FinancialInvoice; using CompanyManagment.App.Contracts.FinancialStatment; using CompanyManagment.App.Contracts.FinancilTransaction; using CompanyManagment.App.Contracts.PaymentTransaction; using CompanyManagment.App.Contracts.SepehrPaymentGateway; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using ServiceHost.BaseControllers; namespace ServiceHost.Areas.Client.Controllers; public class FinancialController : ClientBaseController { private readonly IFinancialStatmentApplication _financialStatementApplication; private readonly IAuthHelper _authHelper; private readonly ISepehrPaymentGatewayService _sepehrPaymentGatewayService; private readonly IFinancialInvoiceApplication _financialInvoiceApplication; public FinancialController(IFinancialStatmentApplication financialStatementApplication, IAuthHelper authHelper, ISepehrPaymentGatewayService sepehrPaymentGatewayService, IFinancialInvoiceApplication financialInvoiceApplication) { _financialStatementApplication = financialStatementApplication; _authHelper = authHelper; _sepehrPaymentGatewayService = sepehrPaymentGatewayService; _financialInvoiceApplication = financialInvoiceApplication; } [HttpGet] public async Task> GetList(FinancialStatementSearchModel searchModel) { var accountId = _authHelper.CurrentAccountId(); var result =await _financialStatementApplication.GetClientFinancialStatement(searchModel,accountId); return result; } [AllowAnonymous] [HttpPost("preview/{id}")] public async Task>> GetStatementDetails(string id) { if(!Guid.TryParseExact(id,"N",out _)) return new OperationResult().Failed("شناسه ارسال شده نامعتبر است"); var result = await _financialStatementApplication.GetDetailsByPublicId(id); return result; } /// /// ساخت درگاه پرداخت برای موجودی حساب کلاینت /// [HttpPost("CreatePay")] [AllowAnonymous] public async Task>> CreatePay([FromForm] CreateFinancialPayRequest request) { var op = new OperationResult(); var gateWayCallBackUrl = Url.Action( action: "Verify", controller: "General", // نام کنترلر بدون کلمه‌ی "Controller" values: null, protocol: Request.Scheme); // http یا https // گام 2: ایجاد درگاه پرداخت سپهر var gatewayResult = await _financialStatementApplication.CreatePaymentGateWayAndCreateInvoice(request, gateWayCallBackUrl); if (!gatewayResult.IsSuccedded) { return op.Failed(gatewayResult.Message); } // گام 3: بازگشتی به درگاه پرداخت return Redirect(gatewayResult.Data.PaymentUrl); } }