/**
     * @param Filter $filter
     * @param UnitOfMeasurement $unitOfMeasurement
     * @return StorageCollection
     */
    public function find(Filter $filter, UnitOfMeasurement $unitOfMeasurement)
    {
        $qMarks = str_repeat('?,', count($filter->users()->asArray()) - 1) . '?';
        $sql = 'SELECT created, username, `usage`, maximumusage FROM `*PREFIX*uc_storageusage`
WHERE `usage` > 0 AND created > ? AND created < ? AND username in (' . $qMarks . ')';
        $query = $this->db->prepareQuery($sql);
        $params = array_merge([$filter->dateRange()->dateFrom()->dateTime()->format('Y-m-d H:i:s'), $filter->dateRange()->dateTo()->dateTime()->format('Y-m-d H:i:s')], $filter->users()->asArray());
        $result = $query->execute($params);
        return $this->parseResultIntoCollection($result, $unitOfMeasurement);
    }
    /**
     * @param Filter $filter
     * @return ActivityCollection
     */
    public function find(Filter $filter)
    {
        $qMarks = str_repeat('?,', count($filter->users()->asArray()) - 1) . '?';
        $sql = 'SELECT timestamp, user, count(1) as activities, user FROM *PREFIX*activity
WHERE timestamp >= ? AND timestamp < ? AND user IN (' . $qMarks . ') GROUP BY user';
        $query = $this->db->prepareQuery($sql);
        $params = array_merge([$filter->dateRange()->dateFrom()->dateTime()->getTimestamp(), $filter->dateRange()->dateTo()->dateTime()->getTimestamp()], $filter->users()->asArray());
        $result = $query->execute($params);
        return $this->parseResultIntoCollection($result);
    }
 /**
  * @test
  */
 public function shouldFailOnEmptyDateTo()
 {
     $this->setExpectedException(InvalidArgumentException::class);
     Filter::create(Users::fromCommaSeparatedString('admin'), DateRange::from(DateFrom::fromString(date('d-m-Y H:i:s')), DateTo::fromString('')));
 }
 /**
  * @param string $users
  * @param string $dateFrom
  * @param string $dateTo
  * @return Filter
  */
 public function createFrom($users, $dateFrom, $dateTo)
 {
     $users = $this->extractUsersFromRequest($users);
     return Filter::create(Users::fromCommaSeparatedString($users), DateRange::from(DateFrom::fromString(urldecode($dateFrom)), DateTo::fromString(urldecode($dateTo))));
 }