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
|
#[Route('/signalement/upload', name: 'signalement.upload', methods:['GET', 'POST'])]
public function upload(
Request $request,
SluggerInterface $slugger,
EntityManagerInterface $manager,
SignalementRepository $repository,
#[Autowire('%kernel.project_dir%/public/uploads/')] string $fileDirectory
) : Response {
$upload = new Upload();
$form = $this->createForm(ImportType::class, $upload);
$form->handleRequest($request);
$signalements = $repository->findAll();
if ($form->isSubmitted() && $form->isValid()) {
$csvFile = $form -> get('csvFile')->getData();
if($csvFile){
$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();
$CSVParNum = [];
foreach ($records as $record){
$CSVParNum[$record['Identifiant de la fiche']] = $record;
$structure = $manager->getRepository(Structure::class)->findOneBy(['nom' => $record['Nom de la structure']]);
$date = $record["Date d'emission de la fiche"];
$dbdate = \DateTimeImmutable::createFromFormat('d/m/Y', $date);
$signalement = (new Signalement())
->setNumero($record['Identifiant de la fiche'])
->setType($record['ESiN ou Portail'])
->setDate($dbdate)
->setCasO($record['Cas origine'])
->setCasC($record['Cas cloture'])
->setCommentaire($record['Commentaire'])
->setEpidemie($record['Type de cas'])
->setStructure($structure)
;
$manager->persist($signalement);
$manager->persist($structure);
}
$DBParNum = [];
foreach ($signalements as $signalement){
$nbxDsLaDB[] = $signalement->getNumero();
$DBParNum[$signalement->getNumero()] = $signalement;
}
$NbenCommun = array_intersect(
array_keys($CSVParNum),
array_keys($DBParNum)
);
dd($NbenCommun, $CSVParNum, $DBParNum);
$diff = [];
foreach ($NbenCommun as $Nb){
$CSVdata = $CSVParNum[$Nb];
$DBdata = $DBParNum[$Nb];
$diffAvecCeNum = [];
}
}
$manager->flush();
$this->addFlash('success','Bien ajouté avec succès');
return $this->redirectToRoute('signalement.index');
}
return $this->render('pages/signalement/upload.html.twig',
['form' => $form,]);
} |
Partager