From f82279e9b272fe67b2b67705ca6735c6ffac1d20 Mon Sep 17 00:00:00 2001 From: Matthieu Lamalle Date: Thu, 30 Jul 2020 11:34:13 +0200 Subject: [PATCH 1/2] =?UTF-8?q?ajout=20d'un=20utilisateur=20fictif=20lors?= =?UTF-8?q?=20de=20la=20cr=C3=A9ation=20d'un=20service,=20et=20affichage?= =?UTF-8?q?=20des=20events=20par=20service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/Controller/EventController.php | 13 +++-- .../src/Controller/ServiceController.php | 17 +++++++ src/schedule-2.0/src/Entity/User.php | 28 +++++++++-- .../templates/Event/list.html.twig | 47 ++++++++++++------- 4 files changed, 79 insertions(+), 26 deletions(-) diff --git a/src/schedule-2.0/src/Controller/EventController.php b/src/schedule-2.0/src/Controller/EventController.php index 10f82f0..66f45e4 100755 --- a/src/schedule-2.0/src/Controller/EventController.php +++ b/src/schedule-2.0/src/Controller/EventController.php @@ -45,19 +45,25 @@ class EventController extends AbstractController // Evenements $iduser=$this->get("session")->get("iduser"); + $user=$em->getRepository("App:User")->find($iduser); if($iduser=="all") $events=$em->getRepository("App:Event")->findAll(); else { + $users= []; + $fictivuser = $em->getRepository("App:User")->findOneBy([ + 'service' => $user->getService(), + 'fictive' => true, + ]); + array_push($users,$fictivuser); $selectedusers = $this->get("session")->get("selectedusers"); if (isset($selectedusers) && sizeof($selectedusers)>1){ - $users= []; foreach($selectedusers as $user) { array_push($users,$em->getRepository("App:User")->find($user)); } $events=$em->getRepository("App:Event")->findBy(["user"=>$users]); }else{ - $user=$em->getRepository("App:User")->find($iduser); - $events=$em->getRepository("App:Event")->findBy(["user"=>$user]); + array_push($users,$em->getRepository("App:User")->find($iduser)); + $events=$em->getRepository("App:Event")->findBy(["user"=>$users]); } } @@ -492,6 +498,7 @@ class EventController extends AbstractController "holiday" => $event->getTask()->getNature()->getIsvacation(), "externaltrip" => ($event instanceof Penalty?false:$event->getExternalTrip()), "editable" => $editable, + "fictivuser" => $event->getUser()->getFictive(), "durationEditable" => false, "extendedProps" => [ "fulldescription" => ($event instanceof Penalty?"ASTREINTE\n":"").strtoupper($event->getTask()->getDisplayname())."\n\n".$event->getDescription(), diff --git a/src/schedule-2.0/src/Controller/ServiceController.php b/src/schedule-2.0/src/Controller/ServiceController.php index dc61e53..c2c789e 100755 --- a/src/schedule-2.0/src/Controller/ServiceController.php +++ b/src/schedule-2.0/src/Controller/ServiceController.php @@ -9,6 +9,7 @@ use Symfony\Component\Form\FormError; use Knp\Bundle\SnappyBundle\Snappy\Response\PdfResponse; use App\Entity\Service as Entity; +use App\Entity\User as Fictiv; use App\Form\ServiceType as Form; class ServiceController extends AbstractController @@ -69,6 +70,16 @@ class ServiceController extends AbstractController $em->persist($data); $em->flush(); + $fictivuser = new Fictiv(); + $fictivuser->setUsername($data->getName()); + $fictivuser->setPassword(bin2hex(openssl_random_pseudo_bytes(4))); + $fictivuser->setLastname("Service"); + $fictivuser->setFirstname($data->getName()); + $fictivuser->setEmail($data->getName()); + $fictivuser->setService($data->getId()); + $fictivuser->setFictive(true); + $em->persist($fictivuser); + $em->flush(); // Retour à la liste return $this->redirectToRoute($this->route); } @@ -147,8 +158,14 @@ class ServiceController extends AbstractController return $this->redirectToRoute($this->route."_update",["id"=>$id]); else { try { + $fictivuser = $em->getRepository("App:User")->findOneBy([ + 'service' => $data->getService(), + 'fictive' => true, + ]); + $em->remove($fictivuser); $em->remove($data); $em->flush(); + } catch(\Doctrine\DBAL\DBALException $e) { // Création du formulaire diff --git a/src/schedule-2.0/src/Entity/User.php b/src/schedule-2.0/src/Entity/User.php index e12dd56..6b7db70 100644 --- a/src/schedule-2.0/src/Entity/User.php +++ b/src/schedule-2.0/src/Entity/User.php @@ -11,7 +11,7 @@ use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity; /** * User - * + * * @ORM\Entity(repositoryClass="App\Repository\UserRepository") * @ORM\Table(name="user",indexes={@ORM\Index(name="username", columns={"username"})}) * @UniqueEntity("username", message="Ce nom d'utilisateur existe dèja") @@ -84,7 +84,7 @@ class User implements UserInterface, \Serializable * @ORM\ManyToOne(targetEntity="Service", inversedBy="users") * @ORM\JoinColumn(nullable=true) */ - private $service; + private $service; /** * @ORM\OneToMany(targetEntity="Event", mappedBy="user", cascade={"persist"}, orphanRemoval=false) @@ -104,11 +104,16 @@ class User implements UserInterface, \Serializable * ) */ protected $jobs; - + /** * @ORM\OneToMany(targetEntity="Userproject", mappedBy="user", cascade={"persist"}, orphanRemoval=true) */ private $userprojects; + /** + * @ORM\Column(name="fictive", type="boolean") + * + */ + private $fictive; public function __construct() { @@ -117,6 +122,7 @@ class User implements UserInterface, \Serializable $this->penaltys = new ArrayCollection(); $this->jobs = new ArrayCollection(); $this->userprojects = new ArrayCollection(); + $this->fictive = false; } public function getUsername(): ?string @@ -406,7 +412,19 @@ class User implements UserInterface, \Serializable } return $this; - } - + } + + public function getFictive(): ?bool + { + return $this->fictive; + } + + public function setFictive(bool $fictive): self + { + $this->fictive = $fictive; + + return $this; + } + } diff --git a/src/schedule-2.0/templates/Event/list.html.twig b/src/schedule-2.0/templates/Event/list.html.twig index 896d2f9..0df17e7 100644 --- a/src/schedule-2.0/templates/Event/list.html.twig +++ b/src/schedule-2.0/templates/Event/list.html.twig @@ -42,6 +42,10 @@ .eventEstimate { margin: -3px 10px; } + .fictive{ + height:10px!important; + background-color:#cdcdcd; + } {% endblock %} {% block body %} @@ -243,31 +247,38 @@ $(document).ready(function() { // Rendu d'un évenement function eventRender(info) { console.log(info.event.extendedProps); + // Récupération des divers élements du rendu event var content=$(info.el).children('.fc-content'); var title=$(content).children('.fc-title'); + if(!info.event.extendedProps.fictivuser){ + // Ajouter l'avatar + content.prepend(""); + content.append(""+info.event.extendedProps.username+""); + var eventInfo=$(content).children('.eventUser'); - // Ajouter l'avatar - content.prepend(""); - content.append(""+info.event.extendedProps.username+""); - var eventInfo=$(content).children('.eventUser'); + // Ajout container + content.append(""); + var eventInfo=$(content).children('.eventInfo'); - // Ajout container - content.append(""); - var eventInfo=$(content).children('.eventInfo'); + // Ajouter le verrou si event non editable + if(info.event.extendedProps.locked) { + eventInfo.append(""); + } + + if(info.event.extendedProps.externaltrip) { + eventInfo.append(""); + } + if(info.event.extendedProps.holiday) { + eventInfo.append(""); + } + // Ajout estimation + eventInfo.append(""+info.event.extendedProps.estimate+""); - // Ajouter le verrou si event non editable - if(info.event.extendedProps.locked) { - eventInfo.append(""); + }else{ + $(content).addClass('fictive'); + $(content).children('.fc-title').remove(); } - if(info.event.extendedProps.externaltrip) { - eventInfo.append(""); - } - if(info.event.extendedProps.holiday) { - eventInfo.append(""); - } - // Ajout estimation - eventInfo.append(""+info.event.extendedProps.estimate+""); // Description content.attr("title",info.event.extendedProps.fulldescription); -- 2.17.1 From d5c81668e30cb7ef2963e6f212b95e845c54df3f Mon Sep 17 00:00:00 2001 From: Matthieu Lamalle Date: Thu, 30 Jul 2020 11:47:28 +0200 Subject: [PATCH 2/2] set tooltip on event --- src/schedule-2.0/templates/Event/list.html.twig | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/schedule-2.0/templates/Event/list.html.twig b/src/schedule-2.0/templates/Event/list.html.twig index 0df17e7..b99884d 100644 --- a/src/schedule-2.0/templates/Event/list.html.twig +++ b/src/schedule-2.0/templates/Event/list.html.twig @@ -219,6 +219,7 @@ {% block localjavascript %} + $(document).ready(function() { $("#modalsubmit #user").select2({ theme: 'bootstrap4', @@ -281,7 +282,12 @@ function eventRender(info) { } // Description + + content.attr("data-placement","top"); + content.attr("data-html",true); + content.attr("data-toggle","tooltip"); content.attr("title",info.event.extendedProps.fulldescription); + content.tooltip() } // Formulaire Création d'un événement -- 2.17.1