<?php
namespace App\Controller\Projets;
use App\Entity\GestionComerciale\Commande;
use App\Entity\Kanban\Fiche;
use App\Entity\Projets\Activite;
use App\Entity\Projets\ProjetActivite;
use App\Entity\Remises\Remise;
use App\Form\Projets\ActiviteModalType;
use App\Form\Projets\ActiviteType;
use App\Form\Projets\SupprimerActiviteType;
use App\Library\Datatable\Util\Datatable;
use App\Security\Voter\EntityVoter;
use App\Service\Utilisateur\ColonneTableauService;
use Doctrine\ORM\EntityManagerInterface;
use JMS\Serializer\SerializerBuilder;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Validator\Validator\ValidatorInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
class ActiviteController extends AbstractController
{
/**
* @Route("/projet/activite/nouveau", name="dtc_projet_activite_ajouter")
*/
public function ajouterAction(Request $request, EntityManagerInterface $em, TranslatorInterface $translator, ValidatorInterface $validator)
{
$titre_modal = $translator->trans("Nouvelle activité");
$repo_activite = $em->getRepository(Activite::class);
$get = $request->query->all();
$activite = new Activite();
$parentId = $request->query->get('parent');
if ($parentId == '') {
$parentId = 1;
}//par defaut le parent est l'activité racine.
if ($parentId != '') {
$parent = $repo_activite->find($parentId);
if (is_object($parent)) {
$titre_modal .= ' enfant de '.$parent->getLibelle().'('.$parent->getReference().')';
$activite->setActiviteParent($parent);
}
}
$user = $this->getUser();
//$marche->setUtilisateur($user);
$form = $this->createForm(ActiviteType::class, $activite);
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
$url = "";
$em->persist($activite);
$em->flush();
if (array_key_exists('table', $get) && $get["table"] != "") {
return new JsonResponse(
['rendu' => '', 'valide' => '1', 'url' => $url, 'type' => 'recharger_datatable', 'id_datatable' => $get["table"]]
);
} else {
$this->addFlash('notice', $translator->trans('Activité ajouté avec succès !'));
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => $url]);
}
} else {
$errors = $validator->validate($activite);
$rendu = $this->renderView('Projets/Activite/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors, 'activite' => $activite]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
}
$rendu = $this->renderView('Projets/Activite/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors, 'activite' => $activite]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
//return $this->render('Articles/Marche/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type));
}
/**
* @Route("/projet/activite/modifier/{id}", name="dtc_projet_activite_modifier")
*/
public function modifierAction(Request $request, Activite $activite, EntityManagerInterface $em, TranslatorInterface $translator,
ValidatorInterface $validator
) {
$titre_modal = $translator->trans("Modifier activité");
$get = $request->query->all();
$user = $this->getUser();
// $origineCommande->setUtilisateur($user);
$form = $this->createForm(ActiviteType::class, $activite);
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted()) {
// TODO fix this
$droit = $this->isGranted(EntityVoter::UPDATE, Activite::class);
if(!$droit) {
$rendu = $this->renderView('GestionComerciale/Origine/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type,'objet'=>$objet));
return new Response(json_encode(array('rendu'=>$rendu,'valide'=>'0','url'=>'','titre'=>$titre_modal)), 200, array('Content-Type'=>'application/json'));
}
$url = "";
if ($form->isValid()) {
$em->persist($activite);
$em->flush();
if (array_key_exists('table', $get) && $get["table"] != "") {
return new JsonResponse(
['rendu' => '', 'valide' => '1', 'url' => $url, 'type' => 'recharger_datatable', 'id_datatable' => $get["table"]]
);
} else {
$this->addFlash('notice', $translator->trans('Activité modifié avec succès !'));
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => $url]);
}
} else {
$errors = $validator->validate($activite);
$rendu = $this->renderView('Projets/Activite/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors, 'actiite' => $activite]);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
}
//die;
$rendu = $this->renderView('Projets/Activite/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors, 'activite' => $activite]);
return new JsonResponse();
}
/**
* @Route("/projet/activite/{page}", name="dtc_projet_activite_liste", defaults={"page":1})
*/
public function listerAction(Request $request, $page, ColonneTableauService $serviceColonneTableau)
{
$tableau_class_cellule[] = ["className" => "colonne_id", "targets" => [0], "visible" => true, "orderable" => false];
$tableau_class_cellule[] = ["className" => "colonne_id", "targets" => [1], "visible" => $serviceColonneTableau->getColonneUtilisateur(Activite::class, "id")];
$tableau_class_cellule[] = [
"className" => "colonne_libelle",
"targets" => [2],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Activite::class, "libelle"),
];
$tableau_class_cellule[] = [
"className" => "colonne_libelle",
"targets" => [3],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Activite::class, "parent"),
];
$tableau_class_cellule[] = [
"className" => "colonne_statut",
"targets" => [4],
"visible" => $serviceColonneTableau->getColonneUtilisateur(Activite::class, "statut"),
];
//$this->datatable();
return $this->render('Projets/Activite/lister.html.twig', ['name' => 'activite', 'tableauClassColonne' => $tableau_class_cellule]);
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatable(Datatable $datatable, TranslatorInterface $translator)
{
$datatable->setEntity(Activite::class, "x")
->setFields(
[
$translator->trans("ID") => 'x.id',
$translator->trans("Libellé") => 'x.libelle',
$translator->trans("Parent") => 'p.libelle',
$translator->trans("Statut Web") => 'x.statut',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
->addJoin('x.activiteParent', 'p', \Doctrine\ORM\Query\Expr\Join::INNER_JOIN)
->setRenderers(
[
0 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_projet_activite_modifier',
],
],
3 => [
'view' => 'FO/DataTable/statut.html.twig',
'params' => [
'edit_route' => 'dtc_projet_activite_changer_statut',
],
],
4 => [
'view' => 'FO/DataTable/actions.html.twig',
'params' => [
'edit_route' => 'dtc_projet_activite_modifier',
'objet' => Activite::class,
//'ajouterActivite' => true
],
],
]
)
->setMultiple(
[
'delete' => [
'title' => 'Non disponible',
'route' => 'dtc_projet_activite_liste',
],
]
)
->setOrder("x.id", "desc")
->setSearch(true)
->setSearchFields([2, 3]);
return $datatable;
}
/**
* Grid action
* @return Response
*/
/**
* @Route("/projet/activite/grid", name="dtc_projet_activite_liste_grid")
*/
public function gridAction(Request $request, Datatable $datatable, TranslatorInterface $translator)
{
return $this->datatable($datatable, $translator)->execute();
}
/**
* @Route("/projet/activite/recherche", name="dtc_projet_activite_recherche")
*/
public function rechercheAction(Request $request, EntityManagerInterface $em, PaginatorInterface $paginator)
{
$q = $request->query->get('q');
$parent = $request->query->get('par');
$repo = $em->getRepository(Activite::class);
$results = $repo->getRechercheActivite($q, $parent);
$pagination = $paginator->paginate(
$results, /* query NOT result */
$request->query->getInt('page', 1) /*page number*/,
10 /*limit per page*/
);
$pagination_results = $pagination->getItems();
$option_placeholde = ["libelle" => "Sélectionnez", "id" => ""];
if ($request->query->getInt('page', 1) == 1) {
array_unshift($pagination_results, $option_placeholde);
}
$pagination->setItems($pagination_results);
$serializer = SerializerBuilder::create()->build();
return JsonResponse::fromJsonString($serializer->serialize($pagination, 'json'));
}
/**
* @Route("/projet/activite/statut/{id}", name="dtc_projet_activite_changer_statut")
*/
public function changeStatutAction(Request $request, Activite $activite, EntityManagerInterface $em)
{
if ($activite->getStatut() == 1) {
$activite->setStatut(0);
} else {
$activite->setStatut(1);
}
$em->persist($activite);
$em->flush();
$headers = [
'Content-Type' => 'application/json',
'Access-Control-Allow-Origin' => '*',
'Access-Control-Allow-Methods' => 'POST',
];
return new JsonResponse(['data' => '1'], 200, $headers);
}
//\Doctrine\Common\Util\Debug::dump($tabActivites);
/**
* @Route("/checkbox/projet/activite", name="dtc_projet_activite_checkbox")
*/
public function listerActiviteCheckboxAction(Request $request, $commande = [], EntityManagerInterface $em)
{
$id = '';
$repo_commande = $em->getRepository(Commande::class);
$repo_activite = $em->getRepository(Activite::class);
$repo_projet_activite = $em->getRepository(ProjetActivite::class);
$id = $request->query->get('id');
$url = $this->generateUrl('dtc_projet_activite_checkbox', []);
if ($request->query->get('commande') != '') {
$commande = $repo_commande->find($request->query->get('commande'));
}
$activites = $repo_activite->getActiviteEnfant($id);
$tabActivites = [];
foreach ($activites as $c) {
$c['checked'] = 0;
$c['totalSousActivite'] = count($repo_activite->findBy(["activiteParent" => $c]));
$c['selection'] = 0;
if (is_object($commande) and is_object($repo_projet_activite->findOneBy(['commande' => $commande, 'activite' => $c]))) {
$c['checked'] = 1;
}
$tabActivites[] = $c;
}
$activites = $tabActivites;
if ($request->isXmlHttpRequest()) {
$rendu = $this->renderView('Projets/Activite/checkbox.html.twig', ['activites' => $activites, 'commande' => $commande, 'url' => $url, 'objet' => 'commande']);
return new JsonResponse(['rendu' => $rendu]);
}
return $this->render('Projets/Activite/checkbox.html.twig', ['activites' => $activites, 'commande' => $commande, 'url' => $url, 'objet' => 'commande']);
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatableProduits(Datatable $datatable, TranslatorInterface $translator, $activite)
{
$datatable
->setDatatableId('dta-produits')
->setEntity(Commande::class, "x")
->setFields(
[
$translator->trans("ID") => 'x.id',
$translator->trans("Img") => 'x.reference',
$translator->trans("Réf") => 'x.reference',
$translator->trans("Libellé") => 'x.libelle',
$translator->trans("Marque") => 'm.libelle',
$translator->trans("Desc courte") => 'x.descriptionCourte',
$translator->trans("Prix HT") => 'x.prixVente',
$translator->trans("Prix TTC") => 'x.prixVente',
$translator->trans("Marge") => 'x.marge',
$translator->trans("Cump") => 'x.cpump',
$translator->trans("Stock") => 'x.stock',
$translator->trans("Statut Internet") => 'x.statut',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
->addJoin('x.commandeActivite', 'ac', \Doctrine\ORM\Query\Expr\Join::INNER_JOIN)
->setWhere(
'ac.activite = :activite',
['activite' => $activite]
)
->addJoin('x.marque', 'm', \Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
->setRenderers(
[
0 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_commande_modifier',
],
],
1 => [
'view' => 'FO/DataTable/image.html.twig',
'params' => [
'edit_route' => 'dtc_commande_modifier',
],
],
2 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_commande_modifier',
],
],
3 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_commande_modifier',
],
],
6 => [
'view' => 'FO/DataTable/prixSuivi.html.twig',
'params' => [
'surveillance' => false,
],
],
7 => [
'view' => 'FO/DataTable/prix_commande_ttc.html.twig',
],
8 => [
'view' => 'FO/DataTable/prix.html.twig',
],
9 => [
'view' => 'FO/DataTable/prix.html.twig',
],
11 => [
'view' => 'FO/DataTable/statut.html.twig',
'params' => [
'edit_route' => 'dtc_commande_changer_statut',
],
],
12 => [
'view' => 'FO/DataTable/actions.html.twig',
'params' => [
'edit_route' => 'dtc_commande_modifier',
'dupliquer_route' => 'dtc_commande_dupliquer',
'objet' => Commande::class,
],
],
]
)->setOrder("x.id", "desc")
->setSearch(true)
->setSearchFields([2, 3, 4]);
//$datatable->setSearchFields(array(0,2));
return $datatable;
}
/**
* Grid action
* @return Response
*/
/**
* @Route("/projet/activite/produits/grid/{id}", name="dtc_projet_activite_produits_liste_grid")
*/
public function gridProduitsAction(Request $request, Activite $activite, Datatable $datatable, TranslatorInterface $translator)
{
//$this->datatableProduits($activite);
return $this->datatableProduits($datatable, $translator, $activite)->execute();
}
/**
* set datatable configs
*
* @return \App\Library\Datatable\Util\Datatable
*/
private function datatableRemises(Datatable $datatable, TranslatorInterface $translator, $activite)
{
$datatable
->setDatatableId('dta-remises')
->setEntity(Remise::class, "x")
->setFields(
[
$translator->trans("ID") => 'x.id',
$translator->trans("Libelle") => 'x.libelle',
$translator->trans("Actions") => 'x.id',
"_identifier_" => 'x.id',
]
)
->addJoin('x.remiseActivitecommande', 'rca', \Doctrine\ORM\Query\Expr\Join::INNER_JOIN)
->setWhere(
'rca.activite = :activite',
['activite' => $activite]
)
->setRenderers(
[
1 => [
'view' => 'FO/DataTable/avec_lien_edit_route.html.twig',
'params' => [
'edit_route' => 'dtc_remise_modifier',
],
],
2 => [
'view' => 'FO/DataTable/actions.html.twig',
'params' => [
'edit_route' => 'dtc_remise_modifier',
'objet' => Remise::class,
],
],
]
)
->setOrder("x.id", "desc")
->setSearch(true)
->setSearchFields([1]);
//$datatable->setSearchFields(array(0,2));
return $datatable;
}
/**
* Grid action
* @return Response
*/
/**
* @Route("", name="")
*/
public function gridRemisesAction(Request $request, Activite $activite, Datatable $datatable, TranslatorInterface $translator)
{
//$this->datatableRemises($activite);
return $this->datatableRemises($datatable, $translator, $activite)->execute();
}
/**
* @Route("", name="")
*/
public function listerActiviteDossierAction(Request $request, $commandeId = '', EntityManagerInterface $em)
{
$repo_commande = $em->getRepository(Commande::class);
$repo_activite = $em->getRepository(Activite::class);
$repo_projet_activite = $em->getRepository(ProjetActivite::class);
$commande = $repo_commande->find($commandeId);
$commandeActivites = [];
if (is_object($commande)) {
$activitesCommande = $repo_projet_activite->findBy(['commande' => $commandeId], ['position' => 'ASC']);
foreach ($activitesCommande as $activitecommande) {
$commandeActivites[] = $activitecommande->getActivite()->getId();
}
}
//\Doctrine\Common\Util\Debug::dump($commandeId);
$activites = $repo_activite->findBy(['activiteParent' => 1], ['position' => 'ASC']);//ActiviteParent
return $this->render('Projets/Activite/lister-dossier.html.twig', [
'nbActivitesEnfant' => [],
'activites' => $activites,
'commande' => $commande,
'activitesCommande' => $commandeActivites,
'mode' => '',
'move' => true,
]);
}
/**
* @Route("", name="")
*/
public function listerActiviteDossiercommandeAction(Request $request, $id = null, $type = "commande", $mode = "", EntityManagerInterface $em)
{
//dump($commande);
$objet = null;
if ($type == 'fiche') {
$objet = $em->getRepository(Fiche::class)->find($id);
} else {
$objet = $em->getRepository(Commande::class)->find($id);
}
$repo_activite = $em->getRepository(Activite::class);
$repo_projet_activite = $em->getRepository(ProjetActivite::class);
$nbActivitesEnfant = [];
$commandeActivites = [];
if (is_object($objet)) {
//$activitesCommande = $repo_projet_activite->findBycommande($commandeId);
//dump($objet->getProjetActivites());
foreach ($objet->getProjetActivites() as $activitecommande) {
if ($activitecommande->getStatut()) {
$boucler = true;
//$commandeActivites[] = $activitecommande->getActivite()->getId();
$commandeActivites[$activitecommande->getActivite()->getId()] = $activitecommande;
if (is_object($activitecommande->getActivite()->getActiviteParent()) and $activitecommande->getActivite()->getActiviteParent()->getId() > 1) {
$parent = $activitecommande->getActivite()->getActiviteParent();
while ($boucler) {
if ( ! array_key_exists($parent->getId(), $nbActivitesEnfant)) {
$nbActivitesEnfant[$parent->getId()] = 1;
} else {
$nbActivitesEnfant[$parent->getId()]++;
}
if (is_object($parent->getActiviteParent()) and $parent->getActiviteParent()->getId() > 1) {
$parent = $parent->getActiviteParent();
} else {
$boucler = false;
}
}
}
}
}
}
//print_r($nbActivitesEnfant);
//\Doctrine\Common\Util\Debug::dump($commandeId);
$activites = $repo_activite->findBy(['activiteParent' => 1], ['position' => 'ASC']);//ActiviteParent
return $this->render('Projets/Activite/lister-dossier.html.twig', [
'nbActivitesEnfant' => $nbActivitesEnfant,
'activites' => $activites,
'objet' => $objet,
'type' => $type,
'activitesCommande' => $commandeActivites,
'mode' => $mode,
]);
}
/**
* @Route("/projet/activite/supprimer/{id}", name="dtc_projet_activite_supprimer")
*/
public function supprimerAction(Request $request, Activite $objet, EntityManagerInterface $em, TranslatorInterface $translator, ValidatorInterface $validator)
{
$titre_modal = $translator->trans("Demande de confirmation.");
$user = $this->getUser();
$message = '';
$errorsSup = [];
//Verifier si la activite a des produits
if (count($objet->getProjetActivites()) > 0) {
$errorsSup[] = 'L\'activité n\'est pas supprimable car elle est liée à des projets.';
}
//Verifier si la activite a des activites enfantes
if (count($objet->getActivitesEnfant()) > 0) {
//if ($message != '') $message .= ' ';
$errorsSup[] = 'L\'activité n\'est pas supprimable car elle contient des activités enfants';
}
$form = $this->createForm(SupprimerActiviteType::class, $objet);
$errors = "";
$form->handleRequest($request);
if ($form->isSubmitted() && count($errorsSup) == 0) {
if ($form->isValid()) {
$em->remove($objet);
$em->flush();
$this->addFlash('notice', $translator->trans('Activité supprimée avec succès !'));
$url = $this->generateUrl('dtc_projet_activite_liste');
return new JsonResponse(['rendu' => '', 'valide' => '1', 'url' => $url]);
} else {
$errors = $validator->validate($objet);
$rendu = $this->renderView(
'Projets/Activite/supprimer.html.twig',
['form' => $form->createView(), 'errors' => $errors, 'errorsSup' => $errorsSup, 'message' => $message]
);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
}
$rendu = $this->renderView(
'Projets/Activite/supprimer.html.twig',
['form' => $form->createView(), 'errors' => $errors, 'errorsSup' => $errorsSup, 'message' => $message]
);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
/**
* @Route("/projet/activite/enfants", name="dtc_projet_lister_activite_enfant_liste")
*/
public function listerActiviteEnfantListeAction(Request $request, EntityManagerInterface $em)
{
$id = $request->query->get('id');
$repo_activite = $em->getRepository(Activite::class);
$rendu = "";
$activites = $repo_activite->getActiviteEnfant($id);
$rendu .= '<option value="">Sélectionnez</option>';
foreach ($activites as $e) {
$rendu .= '<option value="'.$e['id'].'">';
$rendu .= $e['libelle'];
$rendu .= '</option>';
}
return new JsonResponse(['rendu' => $rendu]);
}
/**
* @Route("/projet/activite/gerer", name="dtc_projet_gerer_activite")
*/
public function gererActiviteAction(Request $request, EntityManagerInterface $em)
{
$repo_commande = $em->getRepository(Commande::class);
$repo_cat = $em->getRepository(Activite::class);
$repo_cat_commande = $em->getRepository(ProjetActivite::class);
$commandes = $repo_commande->findall();
foreach ($commandes as $commande) {
$commandeCat = $commande->getProjetActivites();
foreach ($commandeCat as $AC) {
if ($AC->getActivite()->getParent()->getId() == 1) {
} else {
$newAC = new ProjetActivite();
$newAC->setcommande($commande);
$newAC->setActivite($AC->getActivite()->getParent());
$newAC->setPosition(0);
echo "nouvelle liasion : ";
$em->persist($newAC);
$em->flush();
}
}
}
return new Response("ok");
}
/**
* @Route("/projet/activite/changer/positions/ajax", name="dtc_projet_activite_change_positions")
*/
public function changerPositionsAjaxAction(Request $request, EntityManagerInterface $em, TranslatorInterface $translator)
{
$repo_cat = $em->getRepository(Activite::class);
$errors = [];
$positions = $request->request->get('positions');
//var_dump($positions);
if (count($positions)) {
foreach ($positions as $key => $position) {
$activite = $repo_cat->find($position);
if (is_object($activite)) {
$activite->setPosition($key);
$em->persist($activite);
}
}
$em->flush();
$this->addFlash(
'notice',
$translator->trans('Positions modifiées avec succès !')
);
}
$rendu = $this->renderView('layout-errors.html.twig', ['errors' => $errors]);
return new JsonResponse(['rendu' => $rendu,]);
}
/**
* @Route("/projet/activite/ajouter/modal", name="dtc_projet_activite_ajouter_modal")
*/
public function ajouterModalAction(Request $request, EntityManagerInterface $em, TranslatorInterface $translator, ValidatorInterface $validator)
{
$repo_activite = $em->getRepository(Activite::class);
$titre_modal = $translator->trans("Créer une nouvelle activité");
$errors = "";
$errorsSup = [];
$activite = new Activite;
$parentId = $request->query->get('parent');
if ($parentId == '') {
$parentId = 1;
}//par defaut le parent est la activite racine.
if ($parentId != '') {
$parent = $repo_activite->find($parentId);
if (is_object($parent)) {
$titre_modal .= ' enfant de '.$parent->getLibelle().'('.$parent->getReference().')';
$activite->setActiviteParent($parent);
}
}
$user = $this->getUser();
$activite->setUtilisateur($user);
$form = $this->createForm(ActiviteModalType::class, $activite);
$form->handleRequest($request);
//verifier si la activite existe
$catTmp = $repo_activite->findBy([
'activiteParent' => $activite->getActiviteParent(),
'reference' => $activite->getReference(),
]);
if (count($catTmp) > 0) {
$errorsSup[] = 'Cette référence de activite existe déjà!';
}
if ($form->isSubmitted()) {
if ($form->isValid() && count($catTmp) == 0) {
$em->persist($activite);
$em->flush();
/*
$em->persist($activite);
$em->flush();
*
*/
/*
$tokenP = $request->request->get('tokenPicture');
$this->addFlash(
'notice',
$$tokenP
);
$logoService->sauvegarder($activite,'activite',$tokenP);
*
*/
$url = $this->generateUrl('dtc_projet_activite_liste', []);
//$url="";
$this->addFlash(
'notice',
$translator->trans('Activité ajoutée avec succès !')
);
return new JsonResponse(
['rendu' => '', 'errorsSup' => $errorsSup, 'valide' => '1', 'url' => $url, 'type' => '', 'libelle' => '']
);
} else {
$errors = $validator->validate($activite);
}
}
$rendu = $this->renderView(
'Projets/Activite/ajouter-modal.html.twig',
['form' => $form->createView(), 'errorsSup' => $errorsSup, 'errors' => $errors, 'errorsSup' => $errorsSup, 'activite' => $activite]
);
return new JsonResponse(['rendu' => $rendu, 'valide' => '0', 'url' => '', 'titre' => $titre_modal]);
}
/**
* @Route("/associer-activite/activite/{activite}/{type}/{id}/statut/{statut}", name="dtc_projet_associer_activite_ajax")
*/
public function associerProjetActiviteAction(Request $request, Activite $activite, $type = 'commande', $id, $statut, EntityManagerInterface $em
) {
$objet = null;
if ($type == 'fiche') {
$objet = $em->getRepository(Fiche::class)->find($id);
} else {
$objet = $em->getRepository(Commande::class)->find($id);
}
$repo_projet_activite = $em->getRepository(ProjetActivite::class);
$projetActivite = $repo_projet_activite->findOneBy([$type => $id, 'activite' => $activite]);
if ($statut == 'majPourcentage') {
if ( ! is_object($projetActivite)) {
$projetActivite = new ProjetActivite;
//$projetActivite->setCommande($projet);
if ($type == 'fiche') {
$projetActivite->setFiche($objet);
}
if ($type == 'commande') {
$projetActivite->setCommande($objet);
}
$projetActivite->setActivite($activite);
}
if ($request->query->get('pourcentage') != '') {
$projetActivite->setPourcentage($request->query->get('pourcentage'));
}
$em->persist($projetActivite);
} elseif ($statut == 'add') {
if ( ! is_object($projetActivite)) {
$projetActivite = new ProjetActivite;
//$projetActivite->setCommande($projet);
if ($type == 'fiche') {
$projetActivite->setFiche($objet);
}
if ($type == 'commande') {
$projetActivite->setCommande($objet);
}
$projetActivite->setActivite($activite);
if ($request->query->get('pourcentage') != '') {
$projetActivite->setPourcentage($request->query->get('pourcentage'));
}
}
$projetActivite->setStatut(true);
$em->persist($projetActivite);
} else {
if (is_object($projetActivite)) {
$projetActivite->setStatut(false);
//$em->remove($projetActivite);
}
}
//$em->persist($commande);
$em->flush();
$response = new JsonResponse;
$response->setData([
'objet' => $objet->getId(),
'activite' => $activite->getId(),
'statut' => $statut,
]);
return $response;
}
}