コード例 #1
0
        public CreateChannelRequestValidator(
            IWorkspaceUserRepository workspaceUserRepository,
            IHttpContextAccessor httpContextAccessor,
            IImageContentValidator imageContentValidator,
            IImageExtensionValidator imageExtensionValidator)
        {
            _httpContextAccessor     = httpContextAccessor;
            _workspaceUserRepository = workspaceUserRepository;

            RuleFor(x => x.WorkspaceId)
            .NotEmpty().WithMessage("Workspase id must not be empty.");

            RuleFor(x => x.Name.Trim())
            .NotEmpty().WithMessage("Channel name must not be empty.");

            RuleFor(x => x.Users)
            .NotNull().WithMessage("Users can not be null.");

            When(x => x.Users != null && x.Users.Count > 0, () =>
            {
                RuleFor(w => w)
                .Must(w => w.Users.Select(i => i.UserId).ToHashSet().Count() == w.Users.Count())
                .WithMessage("A user cannot be added to the channel twice.")
                .Must(w =>
                {
                    return(w.Users.FirstOrDefault(i => i.UserId == _httpContextAccessor.HttpContext.GetUserId()) == null);
                })
                .WithMessage("User can not add himself to request users list.")
                .MustAsync(async(w, _) => await AreUsersInWorkspace(w.Users.Select(u => u.UserId).ToList(), w.WorkspaceId))
                .WithMessage("Some users are not available for adding to the channel.");
            });

            When(w => w.Image != null, () =>
            {
                RuleFor(w => w.Image.Content)
                .SetValidator(imageContentValidator);

                RuleFor(w => w.Image.Extension)
                .SetValidator(imageExtensionValidator);
            });
        }
コード例 #2
0
        public CreateWorkspaceRequestValidator(
            IHttpContextAccessor httpContextAccessor,
            IRequestClient <ICheckUsersExistence> rcCheckUsersExistence,
            ILogger <CreateWorkspaceRequestValidator> logger,
            IImageContentValidator imageContentValidator,
            IImageExtensionValidator imageExtensionValidator)
        {
            _httpContextAccessor   = httpContextAccessor;
            _rcCheckUsersExistence = rcCheckUsersExistence;
            _logger = logger;

            RuleFor(workspace => workspace.Name)
            .NotEmpty().WithMessage("Workspace name cannot be empty.");

            When(w => w.Image != null, () =>
            {
                RuleFor(w => w.Image.Content)
                .SetValidator(imageContentValidator);

                RuleFor(w => w.Image.Extension)
                .SetValidator(imageExtensionValidator);
            });

            RuleFor(w => w.Users)
            .NotNull().WithMessage("Users cannot be null");

            When(w => w.Users != null && w.Users.Count > 0, () =>
            {
                RuleFor(w => w.Users)
                .Must(u => u.Select(i => i.UserId).ToHashSet().Count() == u.Count())
                .WithMessage("A user cannot be added to the workspace twice.")
                .Must(u => u.FirstOrDefault(i =>
                                            i.UserId == _httpContextAccessor.HttpContext.GetUserId()) == null)
                .WithMessage("Creator cannot be added to workspace users request.")
                .MustAsync(async(u, _) => await CheckUserExistence(u.Select(i => i.UserId).ToList()))
                .WithMessage("Some users are not available for adding to the workspace.");
            });
        }