<?php

namespace Lc\CaracoleBundle\Repository\Config;

use Lc\CaracoleBundle\Repository\MerchantStoreTrait;
use Lc\CaracoleBundle\Repository\AbstractStore;
use Lc\SovBundle\Repository\RepositoryQueryInterface;

class TaxRateStore extends AbstractStore
{
    use MerchantStoreTrait;

    protected TaxRateRepositoryQuery $query;

    public function __construct(TaxRateRepositoryQuery $query)
    {
        $this->query = $query;
    }
    public function orderByDefault(RepositoryQueryInterface $query): RepositoryQueryInterface
    {
        $query->orderBy('id');
        return $query;
    }

    public function filtersDefault(RepositoryQueryInterface $query): RepositoryQueryInterface
    {
        return $query;
    }

    public function relationsDefault(RepositoryQueryInterface $query): RepositoryQueryInterface
    {
        return $query;
    }

    public function getAsArray($query = null)
    {
        $taxRates = $this->createDefaultQuery($query)->find();

        $taxRatesList = [];

        foreach ($taxRates as $taxRate) {
            $taxRatesList[$taxRate->getId()]['title'] = $taxRate->getTitle();
            $taxRatesList[$taxRate->getId()]['value'] = $taxRate->getValue();
        }

        $taxRatesList['default']['title'] = $this->merchant->getTaxRate()->getTitle();
        $taxRatesList['default']['value'] = $this->merchant->getTaxRate()->getValue();

        return $taxRatesList;
    }
}