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