mirror of
https://github.com/Sea-Haven-Industries/proposal-system.git
synced 2026-10-04 21:52:03 +00:00
BLOCK-10: Add CloudWatch alarms (DLQ, Lambda errors, RDS, API 5xx) with SNS email BLOCK-11: Remove sync-over-async deadlock in CurrentUserService BLOCK-12: Add AppDelegate OAuth URL callback handler for mobile BLOCK-13: Wire mobile 401 interceptor to dispatch Redux logout BLOCK-14: Fix JWT base64 padding crash and SysAdmin role detection BLOCK-15: Reset pagination to page 1 on filter change BLOCK-16: Add unsaved-changes guard (beforeunload + useBlocker) to AdminWorkspace FIX-08: Add BulkUpdateLineItems FluentValidation validator FIX-13: Display auth errors on LoginPage FIX-25: Add token refresh with retry queue to mobile API client FIX-44: Add httpx retry logic to all Lambda handlers FIX-42/43: Align docker-compose PG version (15) and DB name (proposals) with RDS
38 lines
1.3 KiB
C#
38 lines
1.3 KiB
C#
using FluentValidation;
|
|
using ProposalSystem.Application.DTOs;
|
|
|
|
namespace ProposalSystem.Application.Validators;
|
|
|
|
public class BulkUpdateLineItemsValidator : AbstractValidator<BulkUpdateLineItemsRequest>
|
|
{
|
|
public BulkUpdateLineItemsValidator()
|
|
{
|
|
RuleFor(x => x.LineItems).NotNull();
|
|
|
|
RuleForEach(x => x.LineItems).ChildRules(entry =>
|
|
{
|
|
entry.RuleFor(x => x.Description)
|
|
.NotEmpty().WithMessage("Description is required")
|
|
.MaximumLength(1000);
|
|
|
|
entry.RuleFor(x => x.Quantity)
|
|
.GreaterThan(0).WithMessage("Quantity must be positive");
|
|
|
|
entry.RuleFor(x => x.Unit)
|
|
.NotEmpty().WithMessage("Unit is required")
|
|
.MaximumLength(50);
|
|
|
|
entry.RuleFor(x => x.TotalPrice)
|
|
.GreaterThanOrEqualTo(0).WithMessage("Total price cannot be negative");
|
|
|
|
entry.RuleFor(x => x.UnitPrice)
|
|
.GreaterThanOrEqualTo(0)
|
|
.When(x => x.UnitPrice.HasValue)
|
|
.WithMessage("Unit price cannot be negative");
|
|
|
|
entry.RuleFor(x => x.PricingMode).IsInEnum();
|
|
entry.RuleFor(x => x.Source).IsInEnum();
|
|
entry.RuleFor(x => x.SortOrder).GreaterThanOrEqualTo(0);
|
|
});
|
|
}
|
|
}
|