|
|
|
@ -39,14 +39,62 @@ namespace Volo.Abp.Application.Dtos
|
|
|
|
|
|
|
|
|
|
yield return new ValidationResult(
|
|
|
|
|
localizer[
|
|
|
|
|
"MaxResultCountExceededExceptionMessage",
|
|
|
|
|
"MaxResultCountExceededExceptionMessage",
|
|
|
|
|
nameof(MaxResultCount),
|
|
|
|
|
MaxMaxResultCount,
|
|
|
|
|
typeof(LimitedResultRequestDto).FullName,
|
|
|
|
|
MaxMaxResultCount,
|
|
|
|
|
typeof(LimitedResultRequestDto).FullName,
|
|
|
|
|
nameof(MaxMaxResultCount)
|
|
|
|
|
],
|
|
|
|
|
new[] { nameof(MaxResultCount) });
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Simply implements <see cref="ILimitedResultRequest"/>.
|
|
|
|
|
/// </summary>
|
|
|
|
|
[Serializable]
|
|
|
|
|
public class ExtensibleLimitedResultRequestDto : ExtensibleEntityDto, ILimitedResultRequest, IValidatableObject
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Default value: 10.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static int DefaultMaxResultCount { get; set; } = 10;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Maximum possible value of the <see cref="MaxResultCount"/>.
|
|
|
|
|
/// Default value: 1,000.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static int MaxMaxResultCount { get; set; } = 1000;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Maximum result count should be returned.
|
|
|
|
|
/// This is generally used to limit result count on paging.
|
|
|
|
|
/// </summary>
|
|
|
|
|
[Range(1, int.MaxValue)]
|
|
|
|
|
public virtual int MaxResultCount { get; set; } = DefaultMaxResultCount;
|
|
|
|
|
|
|
|
|
|
public override IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
|
|
|
|
|
{
|
|
|
|
|
foreach(var result in base.Validate(validationContext))
|
|
|
|
|
{
|
|
|
|
|
yield return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (MaxResultCount > MaxMaxResultCount)
|
|
|
|
|
{
|
|
|
|
|
var localizer = validationContext.GetRequiredService<IStringLocalizer<AbpDddApplicationContractsResource>>();
|
|
|
|
|
|
|
|
|
|
yield return new ValidationResult(
|
|
|
|
|
localizer[
|
|
|
|
|
"MaxResultCountExceededExceptionMessage",
|
|
|
|
|
nameof(MaxResultCount),
|
|
|
|
|
MaxMaxResultCount,
|
|
|
|
|
typeof(ExtensibleLimitedResultRequestDto).FullName,
|
|
|
|
|
nameof(MaxMaxResultCount)
|
|
|
|
|
],
|
|
|
|
|
new[] { nameof(MaxResultCount) });
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|