using PnvPanel.Application.Common.Messaging;
using PnvPanel.Application.Common.Models;
namespace PnvPanel.Application.Plans;
/// Ровно одно из PlanId/CustomConfigCount задано. ConfigIdsToRevoke обязателен и должен
/// содержать ровно (текущее число конфигов, занимающих квоту (Active + Expired) - новая квота) id,
/// если новая квота меньше этого числа — самостоятельное понижение тарифа требует явного выбора,
/// какие конфиги отозвать, а не молчаливый грандфазеринг (см. ChangePlanCommandHandler).
public sealed record ChangePlanCommand(
Guid? PlanId,
int? CustomConfigCount,
IReadOnlyList ConfigIdsToRevoke
) : ICommand>, IRequiresActivation;
public sealed record ChangePlanResultDto(int ConfigQuota, Guid? PlanId, int? TopUpAmount);