<?php
namespace App\Service;

use App\Entity\ProduitTarif;

use App\Entity\Utilisateur;
use App\Entity\UtilisateurFiltre;
use App\Entity\UtilisateurRole;
use Doctrine\ORM\EntityManagerInterface;
/**
 * Created by PhpStorm.
 * User: m.dauphin
 * Date: 28/02/2022
 * Time: 17:50
 */

class FiltreManager
{

    private $em;

    public function __construct(EntityManagerInterface $em) {
        $this->em = $em;
    }

    public function getRoles() {
       $roles = $this->em->getRepository(UtilisateurRole::class)->findBy(['est_responsable' => 0]);

        return $roles;

    }

    public function getDefaultFilter(Utilisateur $utilisateur, String $page) {
        if (!$utilisateur->getRole()->getEstResponsable()) {
            $utilisateurSites = $utilisateur->getSites();
            $defaultFilters = $this->em->getRepository(UtilisateurFiltre::class)->findBy(
                [
                    'page' => $page,
                    'utilisateur_role' => $utilisateur->getRole(),
                    'defaut' => true,
                    'site' => $utilisateurSites[0]
                ]
            );
            if ($defaultFilters) return ['filtre' => $this->formatFilter($defaultFilters[0]->getFiltre()), 'colonnes' => $defaultFilters[0]->getColonnes()];
        }
        return null;
    }

    public function getDefaultFilterUtilisateur(Utilisateur $utilisateur, String $page) {
        if ($utilisateur->getRole()->getEstResponsable()) {
            $defaultFilters = $this->em->getRepository(UtilisateurFiltre::class)->findBy(
                [
                    'page' => $page,
                    'defaut_utilisateur' => true,
                    'utilisateur' => $utilisateur
                ]
            );
            if ($defaultFilters) return ['filtre' => $this->formatFilter($defaultFilters[0]->getFiltre()), 'colonnes' => $defaultFilters[0]->getColonnes()];
        }
        return null;
    }

    public function formatFilter($filtre) {
        return  str_replace(["true","false"], [true,0], $filtre);
    }

}