thomas-kl1/php-sdk-zoho-desk

View on GitHub
src/Model/ListCriteriaBuilder.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php
/**
 * Copyright © Thomas Klein, All rights reserved.
 */
declare(strict_types=1);

namespace Zoho\Desk\Model;

/**
 * @api
 */
final class ListCriteriaBuilder
{
    private array $data = [];

    public function setFilters(array $filters): self
    {
        $this->data['filters'] = $filters;

        return $this;
    }

    public function setFields(array $fields): self
    {
        $this->data['fields'] = $fields;

        return $this;
    }

    public function setInclude(array $include): self
    {
        $this->data['include'] = $include;

        return $this;
    }

    public function setFrom(int $from): self
    {
        $this->data['from'] = $from;

        return $this;
    }

    public function setLimit(int $limit): self
    {
        $this->data['limit'] = $limit;

        return $this;
    }

    public function setSortBy(string $sortBy): self
    {
        $this->data['sortBy'] = $sortBy;

        return $this;
    }

    public function setSortOrder(string $sortOrder): self
    {
        $this->data['sortOrder'] = $sortOrder;

        return $this;
    }

    public function setViewId(int $viewId): self
    {
        $this->data['viewId'] = $viewId;

        return $this;
    }

    public function create(): ListCriteriaInterface
    {
        $listCriteria = new ListCriteria(
            $this->data['filters'] ?? [],
            $this->data['fields'] ?? [],
            $this->data['include'] ?? [],
            $this->data['from'] ?? null,
            $this->data['limit'] ?? null,
            $this->data['sortBy'] ?? null,
            $this->data['sortOrder'] ?? null,
            $this->data['viewId'] ?? null
        );
        $this->data = [];

        return $listCriteria;
    }
}