1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
| /.../
$originalFileName = pathinfo($csvFile->getClientOriginalName(), PATHINFO_FILENAME);
$safeFileName = $slugger->slug($originalFileName);
$newFileName = $safeFileName.'-'.uniqid().'.'.$csvFile->guessExtension();
$csvFile->move($fileDirectory, $newFileName);
$upload->setCsvFile($newFileName);
$manager->persist($upload);
$csv = Reader::createFromPath($fileDirectory.$newFileName);
$csv->setHeaderOffset(0);
$csv->setDelimiter(';');
$csv->setEscape('');
$records = $csv->getRecords();
foreach ($records as $record) {
$numero = $record["Identifiant de la fiche"];
$date = $record["Date d'emission de la fiche"];
$origine = $record['Cas origine'];
$cloture = $record['Cas cloture'];
$commentaire = $record['Commentaire'];
$epidemi = $record['Type de cas'];
$score = $record['Score'];
$infection = $manager->getRepository(Infection::class)->findOneBy(['infection' => mb_convert_encoding($record['Type infection'], 'UTF-8', 'Windows-1252')]);
$structure = $manager->getRepository(Structure::class)->findOneBy(['nom' => mb_convert_encoding($record['Nom de la structure'], 'UTF-8', 'Windows-1252')]);
$commentaire = mb_convert_encoding($commentaire, 'UTF-8', 'Windows-1252');
$epidemi = mb_convert_encoding($epidemi, 'UTF-8', 'Windows-1252');
//verification du numero de la fiche et utilisation pour empecher upload de doublon
if(!(is_numeric($numero)) || (strlen($numero) !== 5)){
$this->addFlash('error','Problème de donnée dans le champs "Identifiant de la fiche"');
return $this->redirectToRoute('signalement.upload');
}
$signal = $manager->getRepository(Signalement::class)->findOneBy(['numero' => $numero]);
if(is_null($signal)){
$signal = (new Signalement())->setNumero($numero);
$manager->persist($signal);
}
//verification de la date
[$d, $m, $y] = explode('/',$date);
if(!checkdate($m, $d, $y)){
$this->addFlash('error','Problème de donnée dans le champ "date d\'émission"');
return $this->redirectToRoute('signalement.upload');
}
$dbdate = \DateTimeImmutable::createFromFormat('d/m/Y', $date);
//verification que les champs cas origine et cas cloture soient bien numeric
if(!(is_numeric($origine)) || !(is_numeric($cloture))){
$this->addFlash('error','Problème de donnée dans un des champs "Cas origine" et/ou "Cas cloture"');
return $this->redirectToRoute('signalement.upload');
}
//si cas origine est supérieur à cas cloture
if($origine > $cloture){
$this->addFlash('error','Problème de donnée dans un des champs "Cas origine / Cas cloture" le cas d\'origine ne peut pas être supérieur au cas cloture');
return $this->redirectToRoute('signalement.upload');
}
//si le champ commentaire est vide
if(empty($commentaire)){
$this->addFlash('error','Problème de donnée dans le champ "commentaire", celui-ci ne peut pas être vide');
return $this->redirectToRoute('signalement.upload');
}
//si le champ Type de cas est valide avec verification type de cas/cas cloture
if(($epidemi !== "Épidémie") && ($epidemi !== "Cas isolé")){
$this->addFlash('error','Problème de donnée dans le champ "Type de cas" en ligne(s) : '. $counter);
return $this->redirectToRoute('signalement.upload');
}else if(($epidemi !== "Épidémie") && ($cloture > 1)){
$this->addFlash('error','Le type de cas ne peut pas être "Cas Isolé" si le nombre de cas cloture est > 1');
return $this->redirectToRoute('signalement.upload');
}else if(($epidemi !== "Cas isolé") && ($cloture == 1)){
$this->addFlash('error','Le type de cas ne peut pas être "Épidémie" si le nombre de cas cloture est = 1');
//si le champ Score est valide
if(empty($score) || !is_numeric($score) || strlen($score) > 4 || $score > 212){
$this->addFlash('error','Problème de donnée dans le champ "Score"');
return $this->redirectToRoute('signalement.upload');
}
//si le champ Type infection est valide
if(!(ctype_alpha($infection)) && empty($infection)){
$this->addFlash('error','Problème de donnée dans le champ "Type infection"');
return $this->redirectToRoute('signalement.upload');
}
//si le champ Structure est valide
if(!(ctype_alpha($structure)) && empty($structure)){
$this->addFlash('error','Problème de donnée dans le champ "Structure"');
return $this->redirectToRoute('signalement.upload');
}
$signal
->setDate($dbdate)
->setCasO($origine)
->setCasC($cloture)
->setCommentaire($commentaire)
->setEpidemie($epidemi)
->setCapacite($capacite)
->setScore($score)
->setInfection($infection)
->setStructure($structure)
;
}
/.../
return $this->redirectToRoute('signalement.upload');
} |
Partager