public UpdateDreamRequestValidator(IUserScopedDatabaseReadContext dbContext, IImageIdValidator imageValidator) { RuleFor(x => x.DreamId).NotNull(); RuleFor(x => x.DreamId).MustAsync(DreamExists); RuleFor(x => x.DisplayName).NotEmpty().When(x => x.DisplayName != null).WithMessage("Nazwa nie może być pusta."); RuleFor(d => d.Age).GreaterThan(0).LessThan(121).WithMessage("Wiek pomiędzy 1 a 120 lat"); RuleFor(x => x.DreamUrl).NotEmpty().When(x => x.DreamUrl != null).WithMessage("Link do marzenia nie może być pusty."); RuleFor(x => x.Tags).NotEmpty().When(x => x.Tags != null).WithMessage("Tagi nie mogą być puste."); RuleFor(x => x.CategoryId).MustAsync(DreamCategoryExists).When(x => x.CategoryId != null).WithMessage(r => $"Kategoria o Id=[{r.CategoryId}] nie istnieje"); RuleFor(x => x.DreamImageId).MustAsync(imageValidator.ImageIdIsAvailable).When(a => a.DreamImageId.HasValue).WithMessage("Obraz jest już przypisany do innego elementu."); _dbContext = dbContext; }
public AddDreamRequestValidator(IImageIdValidator imageValidator) { RuleFor(d => d.DisplayName).NotEmpty().WithMessage("Nazwa jest wymagana"); RuleFor(d => d.Age).GreaterThan(0).LessThan(121).WithMessage("Wiek pomiędzy 1 a 120 lat"); RuleFor(x => x.DreamImageId).MustAsync(imageValidator.ImageIdIsAvailable).When(a => a.DreamImageId.HasValue).WithMessage("Obraz jest już przypisany do innego elementu."); }
public UpdateUserDataRequestValidator(IUserScopedDatabaseReadContext userScopedDatabaseReadContext, IDatabaseContext databaseContext, IImageIdValidator imageValidator) { RuleFor(r => r.UserId) .MustAsync((userId, cancellationToken) => userScopedDatabaseReadContext.Users.AnyAsync(u => u.UserId == userId, cancellationToken)) .WithMessage(r => $"Użytkownik UserId=[{r.UserId}] nie istnieje"); RuleFor(u => u.Email).NotEmpty().EmailAddress(EmailValidationMode.AspNetCoreCompatible).When(u => u.Email != null).WithMessage("Niepoprawny adres email."); RuleFor(u => u.FirstName).MaximumLength(250).NotEmpty().When(u => u.FirstName != null).WithMessage("Imię nie może być dłuższe niż 250 znaków"); RuleFor(u => u.LastName).MaximumLength(250).NotEmpty().When(u => u.LastName != null).WithMessage("Nazwisko nie może być dłuższe niż 250 znaków"); RuleFor(u => u.Brand).NotEmpty().When(u => u.Brand != null).WithMessage("Oddział nie może być pusty"); RuleFor(u => u.PhoneNumber).NotEmpty().When(u => u.PhoneNumber != null).WithMessage("Numer telefonu nie może być pusty"); RuleFor(u => u.ProfileImageId) .MustAsync((id, cancellationToken) => databaseContext.Images.AnyAsync(i => i.ImageId == id, cancellationToken)) .When(u => u.ProfileImageId.HasValue) .WithMessage(a => $"Plik o Id=[{a.ProfileImageId}] nie istnieje"); RuleFor(u => u.ProfileImageId) .MustAsync((id, cancellationToken) => databaseContext.Users.AllAsync(u => u.ProfileImageId != id, cancellationToken)) .When(u => u.ProfileImageId.HasValue) .WithMessage(a => $"Plik o Id=[{a.ProfileImageId}] jest już przypisany do innego konta"); RuleFor(u => u.ProfileImageId).MustAsync(imageValidator.ImageIdIsAvailable).When(a => a.ProfileImageId.HasValue).WithMessage("Obraz jest już przypisany do innego elementu."); }