Files
Core_Be/Controllers/PaymentsEnablementController.cs
Dhananjaya99 bffc9b1686 first commit
2026-09-28 11:44:26 +05:30

79 lines
3.3 KiB
C#

using Fitness_core_BE.DTOs.PaymentsEnablement;
using Fitness_core_BE.DTOs.PaymentGateways;
using Fitness_core_BE.Helpers;
using Fitness_core_BE.Interfaces.Services;
using Fitness_core_BE.Models.IOs;
using Microsoft.AspNetCore.Mvc;
using static Fitness_core_BE.Helpers.JwtMiddleware;
using static Fitness_core_BE.Helpers.ApiResponseHelper;
namespace Fitness_core_BE.Controllers
{
// Gym owner's payment-gateway registration/enablement: choosing a payout track
// (own gateway vs. HexaFitness-held), submitting payout KYC, and viewing the
// resulting wallet/payout schedule. The platform-admin equivalent (the global
// gateway catalog) lives in AdminPaymentGatewayController.
[ApiController]
[Route("api/client")]
public class PaymentsEnablementController : ControllerBase
{
private readonly IPaymentsEnablementService _payments;
public PaymentsEnablementController(IPaymentsEnablementService payments)
{
_payments = payments;
}
[CustomMiddleware]
[TenantResolution]
[RequiresPermission("payment-gateway")]
[HttpGet("payments/tracks")]
public async Task<ActionResult<ApiResponse<List<PaymentTrackOption>>>> GetPaymentTracks()
=> Response(await _payments.GetTrackOptionsAsync());
[CustomMiddleware]
[TenantResolution]
[RequiresPermission("payment-gateway")]
[HttpPost("payments/track-selection")]
public async Task<ActionResult<ApiResponse<PaymentTrackSelectionResult>>> SelectTrack([FromBody] SelectPaymentTrackRequest request)
=> Response(await _payments.SelectTrackAsync(HttpContext, request));
[CustomMiddleware]
[TenantResolution]
[RequiresPermission("payment-gateway")]
[HttpGet("payments/gateways")]
public async Task<ActionResult<ApiResponse<List<GatewayDefinitionDto>>>> GetAvailableGateways()
=> Response(await _payments.GetAvailableGatewaysAsync(HttpContext.RequestAborted));
[CustomMiddleware]
[TenantResolution]
[RequiresPermission("payment-gateway")]
[HttpPost("payments/kyc")]
public async Task<ActionResult<ApiResponse<ClientPayoutKycDto>>> SubmitKyc(
[FromBody] SubmitGatewayOnboardingRequest request)
=> Response(await _payments.SubmitKycAsync(
HttpContext, request, HttpContext.RequestAborted));
[CustomMiddleware]
[TenantResolution]
[RequiresPermission("payment-gateway")]
[HttpGet("payments/kyc/status")]
public async Task<ActionResult<ApiResponse<GatewayOnboardingStatusDto>>> GetKycStatus()
=> Response(await _payments.GetKycStatusAsync(HttpContext));
[CustomMiddleware]
[TenantResolution]
[RequiresPermission("payment-gateway")]
[HttpGet("payments/wallet")]
public async Task<ActionResult<ApiResponse<WalletDto>>> GetWallet()
=> Response(await _payments.GetWalletAsync(HttpContext));
[CustomMiddleware]
[TenantResolution]
[RequiresPermission("payment-gateway")]
[HttpGet("payments/payout-schedule")]
public async Task<ActionResult<ApiResponse<PayoutScheduleDto>>> GetPayoutSchedule()
=> Response(await _payments.GetPayoutScheduleAsync(HttpContext));
}
}