<?php
namespace App\Controller\Content;
use App\Entity\Article;
use App\Entity\Page;
use App\Entity\Projet;
use App\Entity\UserRole;
use App\Service\ArticleCSVService;
use App\Service\CsvService;
use App\Service\FormulaireCSVService;
use App\Service\PageCSVService;
use Doctrine\Persistence\ManagerRegistry;
use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
use Flasher\SweetAlert\Prime\SweetAlertFactory;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class ImportExportController extends AbstractController
{
private CsvService $csvService;
private PageCSVService $pageCsvService;
private FormulaireCSVService $formCsvService;
private ArticleCSVService $articleCsvService;
private ManagerRegistry $manager;
private SweetAlertFactory $flasher;
public function __construct(
CsvService $csvService,
ManagerRegistry $manager,
AdminUrlGenerator $adminUrlGenerator,
SweetAlertFactory $flasher,
PageCSVService $pageCsvService,
FormulaireCSVService $formCsvService,
ArticleCSVService $articleCsvService
) {
$this->csvService = $csvService;
$this->manager = $manager;
$this->adminUrlGenerator = $adminUrlGenerator;
$this->flasher = $flasher;
$this->pageCsvService = $pageCsvService;
$this->articleCsvService = $articleCsvService;
$this->formCsvService = $formCsvService;
}
/**
* @Route("/import/export", name="app_import_export")
*/
public function index(): Response
{
return $this->render('import_export/index.html.twig', [
'controller_name' => 'ImportExportController',
'user' => $this->getUser(),
'roles' => $this->recherche(),
]);
}
public function recherche(): ?array
{
// $groupe = new Groupe();
$idProjet = $this->getUser()->getProjet();
$idUser = $this->getUser();
$roles = $this->manager->getRepository(UserRole::class)->findBy(['user' => $idUser, 'projet' => $idProjet]);
return $roles;
//dd($groupe->getLabel());
}
/**
* @Route("/import/all", name="app_import_all")
*/
public function importAll(Request $request)
{
$projet = $this->manager->getRepository(Projet::class)->findOneBy(
['id' => $this->getUser()->getProjet()->getId()]
);
$fileToUpload = $request->get('mfileToUpload');
$nameFileToUpload = $request->get('mfileNameToUpload');
$resultImport = $this->csvService->importAll($fileToUpload, $nameFileToUpload, $projet);
//dd($resultImport);
if ($resultImport) {
$this->flasher->addSuccess('La liste des redactions du projet ' . $projet . ' a été importée avec succès');
} else {
$this->flasher->addError('vous avez choisi le mauvais fichier');
}
return $this->redirect($request->headers->get('referer'));
}
/**
* @Route("/export/all", name="app_export_all")
*/
public function exportAll(Request $request)
{
$projet = $this->manager->getRepository(Projet::class)->findOneBy(
['id' => $this->getUser()->getProjet()->getId()]
);
$resExport = $this->csvService->exportAll($projet);
if ($resExport == 'probleme ftp') {
$this->flasher->addError('Probleme FTP verifier les parametrages');
} else if ($resExport == 'ok') {
$this->flasher->addSuccess('Tout Exporter avec succès');
} else {
$this->flasher->addError('Quelque chose s\'est mal passé, Essayez de fermer les fichiers CSV ouverts');
}
return $this->redirect($request->headers->get('referer'));
}
/**
* @Route("/import/page", name="app_import_page")
*/
public function importPage(Request $request)
{
$projet = $this->manager->getRepository(Projet::class)->findOneBy(
['id' => $this->getUser()->getProjet()->getId()]
);
$fileToUpload = $request->get('mfileToUpload');
$nameFileToUpload = $request->get('mfileNameToUpload');
$resultImport = $this->pageCsvService->importPage($fileToUpload, $nameFileToUpload, $projet->getId());
//dd($resultImport);
if ($resultImport) {
$this->flasher->addSuccess('La liste des pages du projet ' . $projet . ' a été importée avec succès');
} else {
$this->flasher->addError('vous avez choisi le mauvais fichier');
}
return $this->redirect($request->headers->get('referer'));
}
/**
* @Route("/export/page", name="app_export_page")
*/
public function exportPage(Request $request)
{
$projet = $this->manager->getRepository(Projet::class)->findOneBy(
['id' => $this->getUser()->getProjet()->getId()]
);
$res = $this->pageCsvService->exportPage($projet);
if ($res == 'probleme ftp') {
$this->flasher->addError('Probleme FTP verifier les parametrages');
} else if ($res == 'ok') {
$this->flasher->addSuccess('La liste des pages du projet ' . $projet->getProjet() . ' a été exportée avec succès');
} else {
$this->flasher->addError('Quelque chose s\'est mal passé, Essayez de fermer les fichiers CSV ouverts');
}
return $this->redirect($request->headers->get('referer'));
}
/**
* @Route("/import/article", name="app_import_article")
*/
public function importArticle(Request $request)
{
$projet = $this->manager->getRepository(Projet::class)->findOneBy(
['id' => $this->getUser()->getProjet()->getId()]
);
$fileToUpload = $request->get('mfileToUpload');
$nameFileToUpload = $request->get('mfileNameToUpload');
$resultImport = $this->articleCsvService->importAllArticles($fileToUpload, $nameFileToUpload, $projet);
//dd($resultImport);
if ($resultImport) {
$this->flasher->addSuccess('La liste des redactions du projet ' . $projet . ' a été importée avec succès');
} else {
$this->flasher->addError('vous avez choisi le mauvais fichier');
}
return $this->redirect($request->headers->get('referer'));
}
/**
* @Route("/export/article", name="app_export_article")
*/
public function exportArticle(Request $request)
{
$projet = $this->manager->getRepository(Projet::class)->findOneBy(
['id' => $this->getUser()->getProjet()->getId()]
);
$res = $this->articleCsvService->exportArticleType($projet);
if ($res == 'probleme ftp') {
$this->flasher->addError('Probleme FTP verifier les parametrages');
} else if ($res == 'ok') {
$this->flasher->addSuccess('La liste des redaction ' . $projet->getProjet() . ' a été exportée avec succès');
} else {
$this->flasher->addError('Quelque chose s\'est mal passé, Essayez de fermer les fichiers CSV ouverts');
}
return $this->redirect($request->headers->get('referer'));
}
/**
* @Route("/import/formulaire", name="app_import_formulaire")
*/
public function importFormulaire(Request $request)
{
$projet = $this->manager->getRepository(Projet::class)->findOneBy(
['id' => $this->getUser()->getProjet()->getId()]
);
$fileToUpload = $request->get('mfileToUpload');
$nameFileToUpload = $request->get('mfileNameToUpload');
$resultImport = $this->formCsvService->importFormulaire($fileToUpload, $nameFileToUpload, $projet->getId());
//dd($resultImport);
if ($resultImport) {
$this->flasher->addSuccess('La liste des formulaires du projet ' . $projet . ' a été importée avec succès');
} else {
$this->flasher->addError('vous avez choisi le mauvais fichier');
}
return $this->redirect($request->headers->get('referer'));
}
/**
* @Route("/export/formulaire", name="app_export_formulaire")
*/
public function exportFormulaire(Request $request)
{
$projet = $this->manager->getRepository(Projet::class)->findOneBy(
['id' => $this->getUser()->getProjet()->getId()]
);
$res = $this->formCsvService->exportFormulaire($projet);
if ($res == 'probleme ftp') {
$this->flasher->addError('Probleme FTP verifier les parametrages');
} else if ($res == 'ok') {
$this->flasher->addSuccess('La liste des formulaires du projet ' . $projet->getProjet() . ' a été exportée avec succès');
} else {
$this->flasher->addError('Quelque chose s\'est mal passé, Essayez de fermer les fichiers CSV ouverts');
}
return $this->redirect($request->headers->get('referer'));
}
}