public SelectWatchNextCommandValidator(
            IWatchNextReader watchNextReader,
            IFilmReader filmReader)
        {
            _watchNextReader = watchNextReader;
            _filmReader      = filmReader;

            When(x => !x.FilmId.HasValue, () =>
            {
                RuleFor(x => x.SelectRandomFilm).Must(x => x == true)
                .WithMessage("Must request a randomised film for watch next when not providing a film by ID.");

                RuleFor(x => x.UserId).NotEmpty()
                .WithMessage("Must specify the user ID when requesting a randomised film for watch next.");
            });

            When(x => x.FilmId.HasValue, () =>
            {
                RuleFor(x => x.SelectRandomFilm).Must(x => x == false)
                .WithMessage("Cannot request a randomised film when a specific film ID is provided.");
            });

            RuleFor(x => x.UserId).MustAsync(UserDoesNotHaveWatchNextSelection)
            .WithMessage("User already has a watch next selection. Mark it as watched or skipped first.");

            RuleFor(x => x.UserId).MustAsync(UserHasUnwatchedFilms)
            .WithMessage("User has no unwatched films. Unable to select a new watch next.");
        }
 public FilmUpdatedToWatchedEventHandler(
     IWatchNextReader watchNextReader,
     IEventService eventService)
 {
     _watchNextReader = watchNextReader;
     _eventService    = eventService;
 }
Beispiel #3
0
 public WatchNextController(
     ICurrentUserAccessor currentUserAccessor,
     IWatchNextReader watchNextReader,
     IEventService eventService)
 {
     _currentUserAccessor = currentUserAccessor;
     _watchNextReader     = watchNextReader;
     _eventService        = eventService;
 }
Beispiel #4
0
        public ExpireWatchNextSelectionCommandValidator(
            IWatchNextReader watchNextReader,
            IFilmReader filmReader)
        {
            _watchNextReader = watchNextReader;
            _filmReader      = filmReader;

            RuleFor(x => x.FilmId).MustAsync(FilmExists)
            .NotFoundRule();

            RuleFor(x => x.FilmId).MustAsync(IsActiveWatchNext)
            .WithMessage("Film is not the active watch next selection.");
        }
 public SelectWatchNextCommandHandler(
     IWatchNextWriter watchNextWriter,
     IFilmReader filmReader,
     IValidator <SelectWatchNextCommand> validator,
     IEventService eventService,
     IWatchNextReader watchNextReader)
 {
     _watchNextWriter = watchNextWriter;
     _filmReader      = filmReader;
     _validator       = validator;
     _eventService    = eventService;
     _watchNextReader = watchNextReader;
 }