<?php
namespace App\Service;
use App\Entity\Client;
use App\Entity\Equipement;
use Doctrine\ORM\EntityManagerInterface;
use App\Utils\Functions as func;
/**
 * Created by PhpStorm.
 * User: m.dauphin
 * Date: 28/02/2022
 * Time: 17:50
 */

class EquipementManager
{

    private $em;

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

    public function removeInfosTechniqueEquipement(Equipement $equipement) {
        //on enleve tout ce qui est ooption + infos technique équipement
        foreach ($equipement->getEquipementOptions() as $option) {
           $equipement->removeEquipementOption($option);
        }
        $equipement->setEquipementFamille(null);
        $equipement->setEquipementTypePuissance(null);
        $equipement->setNumSeriePrincipal('');
        $equipement->setNumSerieSecondaire('');
        $equipement->setVmc(false);
        $equipement->setDatePremierAllumage(null);
        $equipement->setEquipementLocal(null);

        return $equipement;
    }

    public function getEquipementOptionsFormatted(Equipement $equipement) {
        $result = [];
        $tarif = '';
        $contrat = $equipement->getLastContrat();
        //tarif d'une option = "annee mise en service ou numero de serie " comprise entre date debut option_tarif et date_fin option tarif
        foreach ($equipement->getEquipementOptions() as $equipementOption) {
            if (!$equipementOption->getDateFin() || $equipementOption->getDateFin() > new \DateTime() ) {
                $etat = (($equipementOption->getDateDebut() && $equipementOption->getDateDebut() <= $contrat->getDateDebutContrat()) && !$equipementOption->getDateResiliation()) ? 'Actif' : ($equipementOption->getDateResiliation() ? 'Suppression' : 'Ajout');
                $result[] = [
                    'id' => $equipementOption->getId(),
                    'option' => $equipementOption->getOption()->getId(),
                    'option_libelle' =>  $equipementOption->getOption()->getLibelleCourt(),
                    'date_souscription' => $equipementOption->getDateSouscription()->format('Y-m-d\TH:i:sP') ,
                    'prix_ht' => ($equipementOption->getPrixHt() ? $equipementOption->getPrixHt().'€' : ''),
                    'etat' => $etat,
                    'date_debut' => ($etat == 'Suppression' && $equipementOption->getDateFin()) ? $equipementOption->getDateFin()->format('Y-m-d\TH:i:sP') : ($equipementOption->getDateDebut() ? $equipementOption->getDateDebut()->format('Y-m-d\TH:i:sP') : ''),
                    'tva' => ($equipement->getTauxTva() ? $equipement->getTauxTva()->getTaux().'%' : null),
                ];
            }
        }
        return $result;
    }

}