first commit

This commit is contained in:
Dhananjaya99
2026-09-28 11:44:26 +05:30
parent 721743ae6b
commit bffc9b1686
424 changed files with 46474 additions and 0 deletions
+99
View File
@@ -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));
}
}