feat: v2.0 – réorg docker/scripts, prod, résas, abonnements Wave, Flyway base vierge
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
package com.lions.dev.resource;
|
||||
|
||||
import com.lions.dev.dto.request.establishment.InitiateSubscriptionRequestDTO;
|
||||
import com.lions.dev.dto.response.establishment.InitiateSubscriptionResponseDTO;
|
||||
import com.lions.dev.service.WavePaymentService;
|
||||
import jakarta.inject.Inject;
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.ws.rs.*;
|
||||
import jakarta.ws.rs.core.MediaType;
|
||||
import jakarta.ws.rs.core.Response;
|
||||
import org.eclipse.microprofile.openapi.annotations.Operation;
|
||||
import org.eclipse.microprofile.openapi.annotations.tags.Tag;
|
||||
import org.jboss.logging.Logger;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* Ressource pour les abonnements / droits d'accès des établissements (paiement Wave).
|
||||
*/
|
||||
@Path("/establishments/{establishmentId}/subscriptions")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Consumes(MediaType.APPLICATION_JSON)
|
||||
@Tag(name = "Establishment Subscriptions", description = "Paiement des droits d'accès via Wave")
|
||||
public class EstablishmentSubscriptionResource {
|
||||
|
||||
private static final Logger LOG = Logger.getLogger(EstablishmentSubscriptionResource.class);
|
||||
|
||||
@Inject
|
||||
WavePaymentService wavePaymentService;
|
||||
|
||||
/**
|
||||
* Initie un paiement Wave pour les droits d'accès d'un établissement.
|
||||
* Retourne l'URL de redirection vers la page de paiement Wave.
|
||||
*/
|
||||
@POST
|
||||
@Path("/initiate")
|
||||
@Operation(summary = "Initier un paiement Wave (droits d'accès)",
|
||||
description = "Crée une session Wave et retourne l'URL de paiement. Le client redirige l'utilisateur vers payment_url.")
|
||||
public Response initiatePayment(
|
||||
@PathParam("establishmentId") UUID establishmentId,
|
||||
@Valid InitiateSubscriptionRequestDTO request) {
|
||||
try {
|
||||
InitiateSubscriptionResponseDTO response = wavePaymentService.initiatePayment(
|
||||
establishmentId,
|
||||
request.getPlan(),
|
||||
request.getClientPhone()
|
||||
);
|
||||
return Response.ok(response).build();
|
||||
} catch (IllegalArgumentException e) {
|
||||
LOG.warn(e.getMessage());
|
||||
return Response.status(Response.Status.NOT_FOUND).entity("{\"message\": \"" + e.getMessage() + "\"}").build();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Vérifie si l'établissement a un abonnement actif.
|
||||
*/
|
||||
@GET
|
||||
@Path("/status")
|
||||
@Operation(summary = "Statut d'abonnement", description = "Indique si l'établissement a des droits d'accès actifs.")
|
||||
public Response getSubscriptionStatus(@PathParam("establishmentId") UUID establishmentId) {
|
||||
boolean active = wavePaymentService.hasActiveSubscription(establishmentId);
|
||||
return Response.ok(Map.of("hasActiveSubscription", active)).build();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user