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..b99884d 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 %}
@@ -215,6 +219,7 @@
{% block localjavascript %}
+
$(document).ready(function() {
$("#modalsubmit #user").select2({
theme: 'bootstrap4',
@@ -243,34 +248,46 @@ $(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("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