Merge branch 'changehourevent' into timetracking
This commit is contained in:
@@ -99,6 +99,7 @@ class EventController extends AbstractController
|
|||||||
$am = ($request->request->get('am')=="true");
|
$am = ($request->request->get('am')=="true");
|
||||||
$ap = ($request->request->get('ap')=="true");
|
$ap = ($request->request->get('ap')=="true");
|
||||||
$astreinte = ($request->request->get('astreinte')=="true");
|
$astreinte = ($request->request->get('astreinte')=="true");
|
||||||
|
$externaltrip = ($request->request->get('externaltrip')=="true");
|
||||||
$description = $request->request->get('description');
|
$description = $request->request->get('description');
|
||||||
|
|
||||||
$user = $em->getRepository("App:User")->find($iduser);
|
$user = $em->getRepository("App:User")->find($iduser);
|
||||||
@@ -242,6 +243,7 @@ class EventController extends AbstractController
|
|||||||
$event->setEnd($dateend);
|
$event->setEnd($dateend);
|
||||||
$event->setDuration($duration);
|
$event->setDuration($duration);
|
||||||
$event->setAllday($allday);
|
$event->setAllday($allday);
|
||||||
|
$event->setExternalTrip($externaltrip);
|
||||||
$event->setDescription($description);
|
$event->setDescription($description);
|
||||||
$event->setUser($user);
|
$event->setUser($user);
|
||||||
$event->setTask($task);
|
$event->setTask($task);
|
||||||
@@ -271,7 +273,10 @@ class EventController extends AbstractController
|
|||||||
$idevent = str_replace("A","",$request->request->get('idevent'));
|
$idevent = str_replace("A","",$request->request->get('idevent'));
|
||||||
$iduser = $request->request->get('iduser');
|
$iduser = $request->request->get('iduser');
|
||||||
$idtask = $request->request->get('idtask');
|
$idtask = $request->request->get('idtask');
|
||||||
|
$am = ($request->request->get('am')=="true");
|
||||||
|
$ap = ($request->request->get('ap')=="true");
|
||||||
$fgastreinte = ($request->request->get('fgastreinte')=="true");
|
$fgastreinte = ($request->request->get('fgastreinte')=="true");
|
||||||
|
$externaltrip = ($request->request->get('externaltrip')=="true");
|
||||||
$description = $request->request->get('description');
|
$description = $request->request->get('description');
|
||||||
|
|
||||||
$user = $em->getRepository("App:User")->find($iduser);
|
$user = $em->getRepository("App:User")->find($iduser);
|
||||||
@@ -327,8 +332,74 @@ class EventController extends AbstractController
|
|||||||
return new Response(json_encode($output));
|
return new Response(json_encode($output));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$datestart=$event->getStart();
|
||||||
|
$dateend =$event->getEnd();
|
||||||
|
$duration=$dateend->diff($datestart)->d;
|
||||||
|
if($am&&$ap) {
|
||||||
|
if ($duration >= 1) {
|
||||||
|
$dateend->SetTime(0,0,-1);
|
||||||
|
}
|
||||||
|
$datestart->SetTime(0,0,0);
|
||||||
|
$dateend->add(new \DateInterval('P1D'));
|
||||||
|
$dateend->SetTime(0,0,0);
|
||||||
|
$duration=$dateend->diff($datestart)->d;
|
||||||
|
$allday=true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$duration=$dateend->diff($datestart)->d;
|
||||||
|
if ($duration == 1) {
|
||||||
|
$dateend->SetTime(0,0,-1);
|
||||||
|
}
|
||||||
|
$duration=0.5;
|
||||||
|
$allday=false;
|
||||||
|
if($am) {
|
||||||
|
$datestart->SetTime(9,0,0);
|
||||||
|
$dateend->SetTime(12,0,0);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$datestart->SetTime(13,0,0);
|
||||||
|
$dateend->SetTime(17,0,0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// On regarde si une tache ne commence pas pendant une autre intervention ou qui se termine pendant une autre intervention ou qui a une intervention compris dans ses dates
|
||||||
|
$events = $em->createQueryBuilder('event')
|
||||||
|
->select('event')
|
||||||
|
->from('App:Event','event')
|
||||||
|
->Where('event.user=:user AND event.start<=:start AND event.end >:start')
|
||||||
|
->orWhere('event.user=:user AND event.start<:end AND event.end >=:end')
|
||||||
|
->orWhere('event.user=:user AND event.start>:start AND event.end <:end')
|
||||||
|
->setParameter('user',$iduser)
|
||||||
|
->setParameter('start',$datestart)
|
||||||
|
->setParameter('end',$dateend)
|
||||||
|
->getQuery()->getResult();
|
||||||
|
if($events) {
|
||||||
|
$tbevent=[];
|
||||||
|
foreach($events as $ev) {
|
||||||
|
if ($event->getId() != $ev->getId()) {
|
||||||
|
$tmp=[
|
||||||
|
"id" => $ev->getId(),
|
||||||
|
"task" => $ev->getTask()->getName(),
|
||||||
|
"start" => $ev->getStart(),
|
||||||
|
"end" => $ev->getEnd(),
|
||||||
|
];
|
||||||
|
array_push($tbevent,$tmp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (sizeof($tbevent)>0) {
|
||||||
|
$output=["return"=>"KO","error"=>"Cet intervant a déjà une tache à cette date","start"=>$datestart,"end"=>$dateend,"events"=>$tbevent];
|
||||||
|
return new Response(json_encode($output));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Modification de l'évenement
|
// Modification de l'évenement
|
||||||
|
$event->setStart($datestart);
|
||||||
|
$event->setEnd($dateend);
|
||||||
$event->setDescription($description);
|
$event->setDescription($description);
|
||||||
|
$event->setDuration($duration);
|
||||||
|
$event->setAllday($allday);
|
||||||
|
$event->setExternalTrip($externaltrip);
|
||||||
$event->setUser($user);
|
$event->setUser($user);
|
||||||
$event->setTask($task);
|
$event->setTask($task);
|
||||||
|
|
||||||
@@ -337,7 +408,6 @@ class EventController extends AbstractController
|
|||||||
|
|
||||||
$output=$this->formatEvent($event);
|
$output=$this->formatEvent($event);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Response(json_encode($output));
|
return new Response(json_encode($output));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -411,6 +481,8 @@ class EventController extends AbstractController
|
|||||||
"borderColor" => $event->getTask()->getColor(),
|
"borderColor" => $event->getTask()->getColor(),
|
||||||
"textColor" => "#ffffff",
|
"textColor" => "#ffffff",
|
||||||
"allDay" => $event->getAllday(),
|
"allDay" => $event->getAllday(),
|
||||||
|
"holiday" => $event->getTask()->getNature()->getIsvacation(),
|
||||||
|
"externaltrip" => ($event instanceof Penalty?$event->getExternalTrip():false),
|
||||||
"editable" => $editable,
|
"editable" => $editable,
|
||||||
"durationEditable" => false,
|
"durationEditable" => false,
|
||||||
"extendedProps" => [
|
"extendedProps" => [
|
||||||
@@ -441,6 +513,8 @@ class EventController extends AbstractController
|
|||||||
"borderColor" => "#cdcdcd",
|
"borderColor" => "#cdcdcd",
|
||||||
"textColor" => "#ffffff",
|
"textColor" => "#ffffff",
|
||||||
"allDay" => true,
|
"allDay" => true,
|
||||||
|
"externaltrip" => false,
|
||||||
|
"holiday" => false,
|
||||||
"editable" => false,
|
"editable" => false,
|
||||||
"durationEditable" => false,
|
"durationEditable" => false,
|
||||||
"extendedProps" => [
|
"extendedProps" => [
|
||||||
|
@@ -50,6 +50,12 @@ class Event
|
|||||||
*/
|
*/
|
||||||
private $allday;
|
private $allday;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ORM\Column(name="externaltrip", type="boolean")
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private $externaltrip;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ORM\Column(name="validate", type="boolean")
|
* @ORM\Column(name="validate", type="boolean")
|
||||||
*
|
*
|
||||||
@@ -96,24 +102,24 @@ class Event
|
|||||||
|
|
||||||
public function getStart(): ?\DateTimeInterface
|
public function getStart(): ?\DateTimeInterface
|
||||||
{
|
{
|
||||||
return $this->start;
|
return clone $this->start;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setStart(\DateTimeInterface $start): self
|
public function setStart(\DateTimeInterface $start): self
|
||||||
{
|
{
|
||||||
$this->start = $start;
|
$this->start = clone $start;
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getEnd(): ?\DateTimeInterface
|
public function getEnd(): ?\DateTimeInterface
|
||||||
{
|
{
|
||||||
return $this->end;
|
return clone $this->end;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setEnd(\DateTimeInterface $end): self
|
public function setEnd(\DateTimeInterface $end): self
|
||||||
{
|
{
|
||||||
$this->end = $end;
|
$this->end = clone $end;
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
@@ -129,6 +135,17 @@ class Event
|
|||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
public function getExternalTrip(): ?bool
|
||||||
|
{
|
||||||
|
return $this->externaltrip;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setExternalTrip(bool $externaltrip): self
|
||||||
|
{
|
||||||
|
$this->externaltrip = $externaltrip;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
public function getValidate(): ?bool
|
public function getValidate(): ?bool
|
||||||
{
|
{
|
||||||
|
@@ -109,6 +109,12 @@
|
|||||||
<label class="custom-control-label" for="astreinte">Astreinte</label>
|
<label class="custom-control-label" for="astreinte">Astreinte</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="custom-control custom-switch">
|
||||||
|
<input type="checkbox" class="custom-control-input" id="externaltrip">
|
||||||
|
<label class="custom-control-label" for="externaltrip">Déplacement externe</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="description" class="control-label">
|
<label for="description" class="control-label">
|
||||||
@@ -157,7 +163,6 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="control-label required" for="taskupdate">
|
<label class="control-label required" for="taskupdate">
|
||||||
Project<span class="mandatory">*</span>
|
Project<span class="mandatory">*</span>
|
||||||
@@ -169,7 +174,25 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="custom-control custom-switch">
|
||||||
|
<input type="checkbox" class="custom-control-input" id="amupdate">
|
||||||
|
<label class="custom-control-label" for="amupdate">Evènement sur la matinée</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="custom-control custom-switch">
|
||||||
|
<input type="checkbox" class="custom-control-input" id="apupdate">
|
||||||
|
<label class="custom-control-label" for="apupdate">Evènement sur l'après-midi</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="custom-control custom-switch">
|
||||||
|
<input type="checkbox" class="custom-control-input" id="externaltripupdate">
|
||||||
|
<label class="custom-control-label" for="externaltripupdate">Déplacement externe</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="description" class="control-label">
|
<label for="description" class="control-label">
|
||||||
Description
|
Description
|
||||||
@@ -230,14 +253,19 @@ function eventRender(info) {
|
|||||||
var eventInfo=$(content).children('.eventUser');
|
var eventInfo=$(content).children('.eventUser');
|
||||||
|
|
||||||
// Ajout container
|
// Ajout container
|
||||||
content.append("<span class='eventInfo float-right'></span>");
|
content.append("<span style='margin-top:-12px' class='eventInfo float-right'></span>");
|
||||||
var eventInfo=$(content).children('.eventInfo');
|
var eventInfo=$(content).children('.eventInfo');
|
||||||
|
|
||||||
// Ajouter le verrou si event non editable
|
// Ajouter le verrou si event non editable
|
||||||
if(info.event.extendedProps.locked) {
|
if(info.event.extendedProps.locked) {
|
||||||
eventInfo.append("<i class='fa fa-lock float-right'></i>");
|
eventInfo.append("<i class='fa fa-lock float-right'></i>");
|
||||||
}
|
}
|
||||||
|
if(info.event.extendedProps.externaltrip) {
|
||||||
|
eventInfo.append("<i class='fas fa-bed float-right'></i>");
|
||||||
|
}
|
||||||
|
if(info.event.extendedProps.holiday) {
|
||||||
|
eventInfo.append("<i class='fas fa-umbrella-beach float-right'></i>");
|
||||||
|
}
|
||||||
// Ajout estimation
|
// Ajout estimation
|
||||||
eventInfo.append("<span class='eventEstimate float-right small'>"+info.event.extendedProps.estimate+"</span>");
|
eventInfo.append("<span class='eventEstimate float-right small'>"+info.event.extendedProps.estimate+"</span>");
|
||||||
|
|
||||||
@@ -245,7 +273,7 @@ function eventRender(info) {
|
|||||||
content.attr("title",info.event.extendedProps.fulldescription);
|
content.attr("title",info.event.extendedProps.fulldescription);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Formulaire Création d'un évelement
|
// Formulaire Création d'un événement
|
||||||
var allDay;
|
var allDay;
|
||||||
function eventSelect(selectionInfo) {
|
function eventSelect(selectionInfo) {
|
||||||
var start=moment(selectionInfo.start);
|
var start=moment(selectionInfo.start);
|
||||||
@@ -291,6 +319,7 @@ function eventSelect(selectionInfo) {
|
|||||||
$('#modalsubmit #end').val(end.format("YYYY-MM-DD"));
|
$('#modalsubmit #end').val(end.format("YYYY-MM-DD"));
|
||||||
|
|
||||||
$('#modalsubmit #description').val("");
|
$('#modalsubmit #description').val("");
|
||||||
|
$('#modalsubmit #externaltrip').prop("checked",false);
|
||||||
|
|
||||||
$("#modalsubmit .alert").remove();
|
$("#modalsubmit .alert").remove();
|
||||||
|
|
||||||
@@ -298,24 +327,64 @@ function eventSelect(selectionInfo) {
|
|||||||
$('#modalsubmit').modal();
|
$('#modalsubmit').modal();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Formulaire Modification d'un évelement
|
// Formulaire Modification d'un événement
|
||||||
function eventClick(info) {
|
function eventClick(info) {
|
||||||
if(info.event.extendedProps.editable) {
|
if(info.event.extendedProps.editable) {
|
||||||
console.log(info.event.id);
|
console.log(info.event);
|
||||||
|
|
||||||
var id=info.event.id;
|
var id=info.event.id;
|
||||||
var description=info.event.extendedProps.description;
|
var description=info.event.extendedProps.description;
|
||||||
var userid=info.event.extendedProps.userid;
|
var userid=info.event.extendedProps.userid;
|
||||||
var taskid=info.event.extendedProps.taskid;
|
var taskid=info.event.extendedProps.taskid;
|
||||||
var fgastreinte=info.event.extendedProps.astreinte;
|
var fgastreinte=info.event.extendedProps.astreinte;
|
||||||
|
var eventallday = info.event.allDay;
|
||||||
|
var eventstart = info.event.start;
|
||||||
|
var eventend = info.event.end;
|
||||||
|
var externaltrip = info.event.extendedProps.externaltrip;
|
||||||
|
var holiday = info.event.extendedProps.holiday;
|
||||||
$('#userupdate').val(userid).trigger("change");
|
$('#userupdate').val(userid).trigger("change");
|
||||||
$('#taskupdate').val(taskid).trigger("change");
|
$('#taskupdate').val(taskid).trigger("change");
|
||||||
$('#modalupdate #idevent').val(id);
|
$('#modalupdate #idevent').val(id);
|
||||||
|
|
||||||
$('#modalupdate #fgastreinte').val(fgastreinte);
|
$('#modalupdate #fgastreinte').val(fgastreinte);
|
||||||
$('#modalupdate #description').val(description);
|
$('#modalupdate #description').val(description);
|
||||||
|
if (holiday) {
|
||||||
|
$('#modalupdate #externaltripupdate').prop("checked",false);
|
||||||
|
$('#modalupdate #externaltripupdate').prop("disabled",true);
|
||||||
|
}else{
|
||||||
|
$('#modalupdate #externaltripupdate').prop("disabled",false);
|
||||||
|
$('#modalupdate #externaltripupdate').prop("checked",externaltrip);
|
||||||
|
}
|
||||||
$("#modalupdate .alert").remove();
|
$("#modalupdate .alert").remove();
|
||||||
|
eDayStart=eventstart.toString().split(" ")[2]
|
||||||
|
eDayEnd=eventend.toString().split(" ")[2]
|
||||||
|
if ((eDayEnd - eDayStart) >1) {
|
||||||
|
$('#modalupdate #amupdate').prop("checked",true);
|
||||||
|
$('#modalupdate #apupdate').prop("checked",true);
|
||||||
|
$('#modalupdate #amupdate').prop("disabled",true);
|
||||||
|
$('#modalupdate #apupdate').prop("disabled",true);
|
||||||
|
}else{
|
||||||
|
$('#modalupdate #amupdate').prop("disabled",false);
|
||||||
|
$('#modalupdate #apupdate').prop("disabled",false);
|
||||||
|
if (!eventallday){
|
||||||
|
eStart = eventstart.toString().split(" ")[4].split(":")[0]
|
||||||
|
//eEnd = eventend.toString().split(" ")[4].split(":")[0]
|
||||||
|
|
||||||
|
//AM
|
||||||
|
if (eStart == 09){
|
||||||
|
$('#modalupdate #amupdate').prop("checked",true);
|
||||||
|
$('#modalupdate #apupdate').prop("checked",false);
|
||||||
|
}
|
||||||
|
//AP
|
||||||
|
if (eStart == 13){
|
||||||
|
$('#modalupdate #amupdate').prop("checked",false);
|
||||||
|
$('#modalupdate #apupdate').prop("checked",true);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
$('#modalupdate #amupdate').prop("checked",true);
|
||||||
|
$('#modalupdate #apupdate').prop("checked",true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Formulaire de création d'un évènement
|
// Formulaire de création d'un évènement
|
||||||
$('#modalupdate').modal();
|
$('#modalupdate').modal();
|
||||||
@@ -350,6 +419,7 @@ function eventSubmit() {
|
|||||||
am: $("#modalsubmit #amsubmit").prop("checked"),
|
am: $("#modalsubmit #amsubmit").prop("checked"),
|
||||||
ap: $("#modalsubmit #apsubmit").prop("checked"),
|
ap: $("#modalsubmit #apsubmit").prop("checked"),
|
||||||
astreinte: $("#modalsubmit #astreinte").prop("checked"),
|
astreinte: $("#modalsubmit #astreinte").prop("checked"),
|
||||||
|
externaltrip: $("#modalsubmit #externaltrip").prop("checked"),
|
||||||
description: $("#modalsubmit #description").val()
|
description: $("#modalsubmit #description").val()
|
||||||
},
|
},
|
||||||
url: "{{ path('app_event_submit') }}",
|
url: "{{ path('app_event_submit') }}",
|
||||||
@@ -378,7 +448,10 @@ function eventUpdate() {
|
|||||||
idevent: $("#modalupdate #idevent").val(),
|
idevent: $("#modalupdate #idevent").val(),
|
||||||
iduser: $("#userupdate").val(),
|
iduser: $("#userupdate").val(),
|
||||||
idtask: $("#taskupdate").val(),
|
idtask: $("#taskupdate").val(),
|
||||||
|
am: $("#modalupdate #amupdate").prop("checked"),
|
||||||
|
ap: $("#modalupdate #apupdate").prop("checked"),
|
||||||
fgastreinte: $("#modalupdate #fgastreinte").val(),
|
fgastreinte: $("#modalupdate #fgastreinte").val(),
|
||||||
|
externaltrip: $("#modalupdate #externaltripupdate").prop("checked"),
|
||||||
description: $("#modalupdate #description").val()
|
description: $("#modalupdate #description").val()
|
||||||
},
|
},
|
||||||
url: "{{ path('app_event_update') }}",
|
url: "{{ path('app_event_update') }}",
|
||||||
@@ -426,7 +499,6 @@ function eventDelete() {
|
|||||||
|
|
||||||
// On change astreinte
|
// On change astreinte
|
||||||
$("#astreinte").change(function() {
|
$("#astreinte").change(function() {
|
||||||
console.log(allDay)
|
|
||||||
if(this.checked) {
|
if(this.checked) {
|
||||||
$("#amsubmit").prop("disabled",true);
|
$("#amsubmit").prop("disabled",true);
|
||||||
$("#apsubmit").prop("disabled",true);
|
$("#apsubmit").prop("disabled",true);
|
||||||
|
Reference in New Issue
Block a user