first commit
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
using Fitness_core_BE.DTOs.PaymentsEnablement;
|
||||
using Fitness_core_BE.Exceptions;
|
||||
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
|
||||
{
|
||||
[ApiController]
|
||||
[Route("api/admin")]
|
||||
[CustomMiddleware]
|
||||
[TenantResolution]
|
||||
public class AdminController : ControllerBase
|
||||
{
|
||||
private readonly IPayoutKycReviewService _kycReview;
|
||||
private readonly IAdminClientDirectoryService _clientDirectory;
|
||||
private readonly UserRoleHelper _userRoleHelper;
|
||||
private readonly IAdminSuggestionService _suggestions;
|
||||
|
||||
public AdminController(
|
||||
IPayoutKycReviewService kycReview,
|
||||
IAdminClientDirectoryService clientDirectory,
|
||||
UserRoleHelper userRoleHelper,
|
||||
IAdminSuggestionService suggestions)
|
||||
{
|
||||
_kycReview = kycReview;
|
||||
_clientDirectory = clientDirectory;
|
||||
_userRoleHelper = userRoleHelper;
|
||||
_suggestions = suggestions;
|
||||
}
|
||||
|
||||
[HttpGet("payout-kyc")]
|
||||
public async Task<ActionResult<ApiResponse<List<ClientPayoutKycDto>>>> ListKyc([FromQuery] string? status)
|
||||
{
|
||||
return Response(await _kycReview.ListAsync(status));
|
||||
}
|
||||
|
||||
[HttpGet("payout-kyc/{clientId:guid}")]
|
||||
public async Task<ActionResult<ApiResponse<ClientPayoutKycDto>>> GetKyc(Guid clientId)
|
||||
{
|
||||
return Response(await _kycReview.GetByClientIdAsync(clientId));
|
||||
}
|
||||
|
||||
[HttpPatch("payout-kyc/{clientId:guid}/status")]
|
||||
public async Task<ActionResult<ApiResponse<ClientPayoutKycDto>>> ReviewKyc(Guid clientId, [FromBody] ReviewPayoutKycRequest request)
|
||||
{
|
||||
return Response(await _kycReview.ReviewAsync(clientId, request, HttpContext));
|
||||
}
|
||||
|
||||
[HttpGet("clients")]
|
||||
public async Task<ActionResult<ApiResponse<PagedResult<ClientSummary>>>> ListClients([FromQuery] ClientDirectoryQuery query)
|
||||
{
|
||||
return Response(await _clientDirectory.ListAsync(query));
|
||||
}
|
||||
|
||||
[HttpGet("clients/{id:guid}")]
|
||||
public async Task<ActionResult<ApiResponse<object>>> GetClient(Guid id)
|
||||
{
|
||||
return Response(await _clientDirectory.GetByIdAsync(id));
|
||||
}
|
||||
|
||||
[HttpPost("clients/{id:guid}/pairing-code")]
|
||||
public async Task<ActionResult<ApiResponse<PairingCodeResult>>> GeneratePairingCode(Guid id)
|
||||
{
|
||||
return Response(await _clientDirectory.GeneratePairingCodeAsync(id));
|
||||
}
|
||||
|
||||
[HttpPost("clients/{id:guid}/resend-welcome-email")]
|
||||
public async Task<ActionResult<ApiResponse<object>>> ResendWelcomeEmail(Guid id)
|
||||
{
|
||||
await _clientDirectory.ResendWelcomeEmailAsync(id, HttpContext);
|
||||
return Response<object>(new { sent = true });
|
||||
}
|
||||
|
||||
[HttpGet("clients/{id:guid}/access-devices")]
|
||||
public async Task<ActionResult<ApiResponse<AdminClientDevicesResult>>> GetAccessDevices(Guid id)
|
||||
{
|
||||
return Response(await _clientDirectory.GetDevicesAsync(id));
|
||||
}
|
||||
|
||||
// Platform plans are global templates (no FKClientId). Mobile customers see them
|
||||
// in Suggestions in addition to templates created by their own gym.
|
||||
[HttpGet("suggestions")]
|
||||
public async Task<ActionResult<ApiResponse<object>>> ListSuggestions()
|
||||
=> Response(await _suggestions.ListAsync());
|
||||
|
||||
[HttpPost("suggestions/workouts")]
|
||||
public async Task<ActionResult<ApiResponse<object>>> CreateWorkoutSuggestion([FromBody] AdminWorkoutSuggestionRequest request)
|
||||
=> Response(await _suggestions.CreateWorkoutAsync(request, HttpContext));
|
||||
|
||||
[HttpPost("suggestions/meals")]
|
||||
public async Task<ActionResult<ApiResponse<object>>> CreateMealSuggestion([FromBody] AdminMealSuggestionRequest request)
|
||||
=> Response(await _suggestions.CreateMealAsync(request, HttpContext));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user