- Added a new endpoint `/api/support/pricing` to allow users to retrieve pricing information, making it accessible for role request dialogs. - Introduced the `GetSupportPricing` method to handle pricing queries, ensuring that pricing data is available to non-admin users. - Updated frontend components to integrate the new pricing retrieval functionality, displaying estimated costs based on user-selected configurations. - Removed the `PricingSettingsDto` as it is no longer needed, streamlining the pricing data structure. - Enhanced API documentation to reflect the new endpoint and its usage in the support context.
39 lines
1.2 KiB
C#
39 lines
1.2 KiB
C#
using PnvPanel.Api.Common;
|
|
using PnvPanel.Application.Admin.Pricing;
|
|
using PnvPanel.Application.Common.Interfaces;
|
|
using PnvPanel.Application.Common.Messaging;
|
|
using PnvPanel.Infrastructure.Identity;
|
|
|
|
namespace PnvPanel.Api.Endpoints;
|
|
|
|
public static class AdminPricingEndpoints
|
|
{
|
|
public static IEndpointRouteBuilder MapAdminPricingEndpoints(this IEndpointRouteBuilder app)
|
|
{
|
|
var admin = app.MapGroup("/api/admin/pricing")
|
|
.WithTags("Admin.Pricing")
|
|
.RequireAuthorization(policy => policy.RequireRole(RoleNames.Admin));
|
|
|
|
admin.MapGet("", GetPricing).Produces<PricingSettingsDto>();
|
|
admin.MapPut("", UpdatePricing).Produces<PricingSettingsDto>();
|
|
|
|
return app;
|
|
}
|
|
|
|
private static async Task<IResult> GetPricing(ISender sender, CancellationToken cancellationToken)
|
|
{
|
|
var result = await sender.Send(new GetPricingSettingsQuery(), cancellationToken);
|
|
return result.ToHttpResult();
|
|
}
|
|
|
|
private static async Task<IResult> UpdatePricing(
|
|
UpdatePricingSettingsCommand command,
|
|
ISender sender,
|
|
CancellationToken cancellationToken
|
|
)
|
|
{
|
|
var result = await sender.Send(command, cancellationToken);
|
|
return result.ToHttpResult();
|
|
}
|
|
}
|