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; }
public WatchNextController( ICurrentUserAccessor currentUserAccessor, IWatchNextReader watchNextReader, IEventService eventService) { _currentUserAccessor = currentUserAccessor; _watchNextReader = watchNextReader; _eventService = eventService; }
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; }