<?php

namespace Modules\Additional\Specifique\Client164\Modules\Suivi\Service;

use Modules\Additional\Specifique\Client164\Modules\Suivi\Repository\EtatCommandeSpecifiqueRepository;

class EtatCommandeSpecifiqueService
{
    public function __construct(
        private EtatCommandeSpecifiqueRepository $etatCommandeSpecifiqueRepository,
    ) {
    }

    /**
     * Summary of getMaxDteLivCon
     * @param string|int $idCommande
     * @return array<mixed>
     */
    public function getMaxDteLivCon(string|int $idCommande): array
    {
        return $this->etatCommandeSpecifiqueRepository->getMaxDteLivCon($idCommande);
    }

    /**
     * Summary of getMaxDteLivCon
     * @param string|int $idCommande
     * @return array<mixed>
     */
    public function getAllSignataireCDE(string|int $idCommande): array
    {
        return $this->etatCommandeSpecifiqueRepository->getAllSignataireFromCaEvent((string) $idCommande);
    }

    /**
     * Summary of getMaxDteLivCong
     * @param string|int $idCommande
     * @return array<mixed>
     */
    public function getAllSignataireDA(string|int $idCommande): array
    {
        $listeIDsDA = \array_column($this->etatCommandeSpecifiqueRepository->getAssociatedDemAchat((string) $idCommande), 'NO_DA');
        $listeIDsDA = \array_combine(\array_map(fn($e) => ":{$e}", $listeIDsDA), $listeIDsDA);
        return $this->etatCommandeSpecifiqueRepository->getAllSignataireSignatairesFromDemAchat($listeIDsDA);
    }

    /**
     * Summary of getAllSignatures
     * @param string|int $idCommande
     * @return array<mixed>
     */
    public function getAllSignatures(string|int $idCommande): array
    {
        return [...$this->getAllSignataireDA($idCommande), ...$this->getAllSignataireCDE($idCommande)];
    }
}
