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);