public List <UserDto> AllUsersMatching(UserFilterDto filter)
        {
            if (filter == null)
            {
                throw new ArgumentNullException();
            }

            return(ExecuteSelectQuery(uow => uow
                                      .UserRepository
                                      .GetAllUsersMatching(filter.MapToDbEntity())));
        }
        public List <UserDto> AllSubscriptionsOfMatching(UserDto subscriber, UserFilterDto filter)
        {
            ValidateUser(subscriber, filter);

            return(ExecuteSelectQuery(uow => uow
                                      .UserRepository
                                      .GetAllSubscriptionsOfMatching(subscriber.MapToDbEntity(), filter.MapToDbEntity())));
        }
        public List <UserDto> AllSubscribersOfMatching(UserDto publisher, UserFilterDto filter)
        {
            ValidateUser(publisher, filter);

            return(ExecuteSelectQuery(unitOfWork => unitOfWork
                                      .UserRepository
                                      .GetAllSubscribersOfMatching(publisher.MapToDbEntity(), filter.MapToDbEntity())));
        }