/** * Lit une partie de CSV concernant un candidat. * * @param string $line La partie de ligne CSV * * @return Candidat L'entite Candidat */ private function updateCandidat($line, $election, $commune) { $candidatInfos = explode(';', $line); for ($i = 0; $i < 3; $i++) { if (!array_key_exists($i, $candidatInfos)) { return false; } } $nuance = $this->nuanceAvant ? $candidatInfos[0] : $candidatInfos[1]; $nom = $this->nuanceAvant ? $candidatInfos[1] : $candidatInfos[0]; if ('liste' === $this->electionType) { $candidat = new ListeCandidate($election, $nuance, $nom); } elseif ('uninominale' === $this->electionType) { $candidat = new PersonneCandidate($election, $nuance, null, $nom); } $slice = array_values(array_filter($election->getCandidats(), function ($c) use($candidat) { return $candidat->getNom() === $c->getNom(); })); if (0 === count($slice)) { $election->addCandidat($candidat); } else { $candidat = $slice[0]; } $election->setVoixCandidat($candidatInfos[2], $candidat, $commune); }