Compare commits
21 Commits
fictiv_use
...
dist/eole/
Author | SHA1 | Date | |
---|---|---|---|
7e988ff7a9 | |||
51bf8c855f | |||
c66962097d | |||
|
6a9ae5323b | ||
66fa43497e | |||
9836498b1c | |||
ecacf68ad3 | |||
d9fe49cce5 | |||
761f4c929d | |||
|
04ed1645fa | ||
|
e37ced1f4d | ||
b86601b709 | |||
c0d1759bed | |||
058d5177eb | |||
254dec4372 | |||
a524e353db | |||
4523aa41b1 | |||
|
6954153be9 | ||
db11d66ae0 | |||
2d42e3016d | |||
ba4acc1b89 |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
*~
|
1
debian/compat
vendored
Normal file
1
debian/compat
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
7
|
24
debian/control
vendored
Normal file
24
debian/control
vendored
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
Source: eole-schedule
|
||||||
|
Section: web
|
||||||
|
Priority: optional
|
||||||
|
Maintainer: Cadoles <contact@cadoles.com>
|
||||||
|
Build-Depends: debhelper (>= 7.0.50)
|
||||||
|
Standards-Version: 3.8.4
|
||||||
|
Homepage: https://forge.cadoles.com/Cadoles/schedule
|
||||||
|
Vcs-Git: https://forge.cadoles.com/Cadoles/schedule
|
||||||
|
Vcs-Browser: https://forge.cadoles.com/Cadoles/schedule
|
||||||
|
|
||||||
|
Package: schedule-sso
|
||||||
|
Architecture: all
|
||||||
|
Depends: ${misc:Depends}, eole-sso
|
||||||
|
Description: Filtre SSO pour schedule "EOLE".
|
||||||
|
|
||||||
|
Package: eole-schedule
|
||||||
|
Architecture: all
|
||||||
|
Depends: ${misc:Depends}, eole-envole-dependances, schedule-sso
|
||||||
|
Description: Eolisation de l'application schedule.
|
||||||
|
|
||||||
|
Package: schedule-apps
|
||||||
|
Architecture: all
|
||||||
|
Depends: ${misc:Depends}, envole-dependances-apps
|
||||||
|
Description: Sources pour schedule "EOLE".
|
44
debian/copyright
vendored
Normal file
44
debian/copyright
vendored
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
Format: http://dep.debian.net/deps/dep5
|
||||||
|
Upstream-Name: {PROJECT}
|
||||||
|
Source: {URL}
|
||||||
|
|
||||||
|
Files: *
|
||||||
|
Copyright: YEAR {UPSTREAM} {AUTHOR} <{MAIL}>
|
||||||
|
License: {UPSTREAM LICENSE}
|
||||||
|
|
||||||
|
Files: debian/*
|
||||||
|
Copyright: 2012 Équipe EOLE <eole@ac-dijon.fr>
|
||||||
|
License: CeCILL-2
|
||||||
|
|
||||||
|
License: {UPSTREAM LICENSE}
|
||||||
|
{TEXT OF THE LICENSE}
|
||||||
|
|
||||||
|
License: CeCILL-2
|
||||||
|
This software is governed by the CeCILL-2 license under French law and
|
||||||
|
abiding by the rules of distribution of free software. You can use,
|
||||||
|
modify and or redistribute the software under the terms of the CeCILL-2
|
||||||
|
license as circulated by CEA, CNRS and INRIA at the following URL
|
||||||
|
"http://www.cecill.info";.
|
||||||
|
.
|
||||||
|
As a counterpart to the access to the source code and rights to copy,
|
||||||
|
modify and redistribute granted by the license, users are provided only
|
||||||
|
with a limited warranty and the software's author, the holder of the
|
||||||
|
economic rights, and the successive licensors have only limited
|
||||||
|
liability.
|
||||||
|
.
|
||||||
|
In this respect, the user's attention is drawn to the risks associated
|
||||||
|
with loading, using, modifying and/or developing or reproducing the
|
||||||
|
software by the user in light of its specific status of free software,
|
||||||
|
that may mean that it is complicated to manipulate, and that also
|
||||||
|
therefore means that it is reserved for developers and experienced
|
||||||
|
professionals having in-depth computer knowledge. Users are therefore
|
||||||
|
encouraged to load and test the software's suitability as regards their
|
||||||
|
requirements in conditions enabling the security of their systems and/or
|
||||||
|
data to be ensured and, more generally, to use and operate it in the
|
||||||
|
same conditions as regards security.
|
||||||
|
.
|
||||||
|
The fact that you are presently reading this means that you have had
|
||||||
|
knowledge of the CeCILL-2 license and that you accept its terms.
|
||||||
|
.
|
||||||
|
On Eole systems, the complete text of the CeCILL-2 License can be found
|
||||||
|
in '/usr/share/common-licenses/CeCILL-2-en'.
|
1
debian/eole-schedule.install
vendored
Normal file
1
debian/eole-schedule.install
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
usr/share/eole
|
3
debian/gbp.conf
vendored
Normal file
3
debian/gbp.conf
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# Set per distribution debian tag
|
||||||
|
[DEFAULT]
|
||||||
|
debian-tag = debian/envole/%(version)s
|
8
debian/rules
vendored
Executable file
8
debian/rules
vendored
Executable file
@@ -0,0 +1,8 @@
|
|||||||
|
#!/usr/bin/make -f
|
||||||
|
# -*- makefile -*-
|
||||||
|
|
||||||
|
# Uncomment this to turn on verbose mode.
|
||||||
|
#export DH_VERBOSE=1
|
||||||
|
|
||||||
|
%:
|
||||||
|
dh $@
|
1
debian/schedule-apps.install
vendored
Normal file
1
debian/schedule-apps.install
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
var/www/html
|
1
debian/schedule-sso.install
vendored
Normal file
1
debian/schedule-sso.install
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
usr/share/sso
|
1
debian/source/format
vendored
Normal file
1
debian/source/format
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
3.0 (native)
|
1
src/schedule-2.0/.gitignore
vendored
1
src/schedule-2.0/.gitignore
vendored
@@ -20,3 +20,4 @@
|
|||||||
npm-debug.log
|
npm-debug.log
|
||||||
yarn-error.log
|
yarn-error.log
|
||||||
###< symfony/webpack-encore-bundle ###
|
###< symfony/webpack-encore-bundle ###
|
||||||
|
*~
|
@@ -17,7 +17,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
weekNumbers: true,
|
weekNumbers: true,
|
||||||
selectable: true,
|
selectable: true,
|
||||||
events: 'event/load',
|
events: 'event/load',
|
||||||
eventLimit:4,
|
eventLimit:8,
|
||||||
eventDrop: function(info) {
|
eventDrop: function(info) {
|
||||||
info.revert();
|
info.revert();
|
||||||
},
|
},
|
||||||
|
4
src/schedule-2.0/config/packages/dev/swiftmailer.yaml
Normal file
4
src/schedule-2.0/config/packages/dev/swiftmailer.yaml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
# See https://symfony.com/doc/current/email/dev_environment.html
|
||||||
|
swiftmailer:
|
||||||
|
# send all emails to a specific address
|
||||||
|
#delivery_addresses: ['me@example.com']
|
@@ -48,6 +48,8 @@ writeligne("MIGRATION");
|
|||||||
writeligne("");
|
writeligne("");
|
||||||
writeligne("Purge des Tables Scheudle");
|
writeligne("Purge des Tables Scheudle");
|
||||||
|
|
||||||
|
Purge("userproject");
|
||||||
|
Purge("timer");
|
||||||
Purge("event");
|
Purge("event");
|
||||||
Purge("penalty");
|
Purge("penalty");
|
||||||
Purge("task");
|
Purge("task");
|
||||||
@@ -180,14 +182,25 @@ while($row=$queryold->fetch()) {
|
|||||||
|
|
||||||
writeligne("");
|
writeligne("");
|
||||||
writeligne("== Récupération Event");
|
writeligne("== Récupération Event");
|
||||||
$q="SELECT * FROM schedule_event";
|
$q="SELECT * FROM schedule_event, schedule_task WHERE event_task=task_id";
|
||||||
$queryold=$bddold->prepare($q);
|
$queryold=$bddold->prepare($q);
|
||||||
$queryold->execute();
|
$queryold->execute();
|
||||||
while($row=$queryold->fetch()) {
|
while($row=$queryold->fetch()) {
|
||||||
|
// Event vacation ?
|
||||||
|
$isvacation=false;
|
||||||
|
if($row["task_id"]<=-70) $isvacation=true;
|
||||||
|
if($row["task_id"]==-85 || $row["task_id"]==-70) $isvacation=true;
|
||||||
|
|
||||||
|
// Validation
|
||||||
|
$validate=$row["event_validate"];
|
||||||
|
$validateholiday=false;
|
||||||
|
if($isvacation) $validateholiday=$row["event_validate"];
|
||||||
|
|
||||||
|
// Génération de l'event
|
||||||
writeligne($row["event_id"]);
|
writeligne($row["event_id"]);
|
||||||
$q="INSERT IGNORE INTO event (id, description, start, end, allday, duration, validate, validateholiday, task_id, user_id ) VALUES (?,?,?,?,?,?,?,?,?,?)";
|
$q="INSERT IGNORE INTO event (id, description, start, end, allday, duration, validate, validateholiday, task_id, user_id ) VALUES (?,?,?,?,?,?,?,?,?,?)";
|
||||||
$query=$bddnew->prepare($q);
|
$query=$bddnew->prepare($q);
|
||||||
$query->execute([$row["event_id"],$row["event_description"],$row["event_start"],$row["event_end"],$row["event_allday"],$row["event_duration"],$row["event_validate"],$row["event_validate"],$row["event_task"],$row["event_user"] ]);
|
$query->execute([$row["event_id"],$row["event_description"],$row["event_start"],$row["event_end"],$row["event_allday"],$row["event_duration"],$validate,$validateholiday,$row["event_task"],$row["event_user"] ]);
|
||||||
}
|
}
|
||||||
|
|
||||||
writeligne("");
|
writeligne("");
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
cd /var/www/html/schedule
|
cd /var/www/html/schedule
|
||||||
|
|
||||||
# Déclaration d'un proxy
|
# Déclaration d'un proxy
|
||||||
. proxy.sh
|
. scripts/proxy.sh
|
||||||
|
|
||||||
# Mise en place du fichier d'environnement model
|
# Mise en place du fichier d'environnement model
|
||||||
if [ ! -f /var/www/html/schedule/.env ]; then
|
if [ ! -f /var/www/html/schedule/.env ]; then
|
||||||
|
@@ -26,7 +26,6 @@ class EventController extends AbstractController
|
|||||||
public function list(Request $request)
|
public function list(Request $request)
|
||||||
{
|
{
|
||||||
$em = $this->getDoctrine()->getManager();
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
|
||||||
$users = $em->getRepository("App:User")->findAll();
|
$users = $em->getRepository("App:User")->findAll();
|
||||||
$tasks = $em->getRepository("App:Task")->findAll();
|
$tasks = $em->getRepository("App:Task")->findAll();
|
||||||
|
|
||||||
@@ -42,32 +41,56 @@ class EventController extends AbstractController
|
|||||||
{
|
{
|
||||||
$em = $this->getDoctrine()->getManager();
|
$em = $this->getDoctrine()->getManager();
|
||||||
$tbevents=[];
|
$tbevents=[];
|
||||||
|
$start = $request->query->get('start');
|
||||||
// Evenements
|
$end = $request->query->get('end');
|
||||||
$iduser=$this->get("session")->get("iduser");
|
$iduser=$this->get("session")->get("iduser");
|
||||||
if($iduser=="all")
|
// Evenements
|
||||||
|
if($iduser=="all") {
|
||||||
$events=$em->getRepository("App:Event")->findAll();
|
$events=$em->getRepository("App:Event")->findAll();
|
||||||
else {
|
$events = $em
|
||||||
$selectedusers = $this->get("session")->get("selectedusers");
|
->createQueryBuilder('event')
|
||||||
if (isset($selectedusers) && sizeof($selectedusers)>1){
|
->select('event')
|
||||||
$users= [];
|
->from('App:Event','event')
|
||||||
foreach($selectedusers as $user) {
|
->Where('event.start>=:start AND event.end <:end')
|
||||||
array_push($users,$em->getRepository("App:User")->find($user));
|
->setParameter('start',$start)
|
||||||
|
->setParameter('end',$end)
|
||||||
|
->getQuery()->getResult();
|
||||||
}
|
}
|
||||||
$events=$em->getRepository("App:Event")->findBy(["user"=>$users]);
|
else {
|
||||||
}else{
|
|
||||||
$user=$em->getRepository("App:User")->find($iduser);
|
$user=$em->getRepository("App:User")->find($iduser);
|
||||||
$events=$em->getRepository("App:Event")->findBy(["user"=>$user]);
|
$events=$em->getRepository("App:Event")->findBy(["user"=>$user]);
|
||||||
|
$events = $em
|
||||||
|
->createQueryBuilder('event')
|
||||||
|
->select('event')
|
||||||
|
->from('App:Event','event')
|
||||||
|
->Where('event.user=:user AND event.start>=:start AND event.end <:end')
|
||||||
|
->setParameter('user',$user->getId())
|
||||||
|
->setParameter('start',$start)
|
||||||
|
->setParameter('end',$end)
|
||||||
|
->getQuery()->getResult();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
foreach($events as $event) {
|
foreach($events as $event) {
|
||||||
|
//Filtre par service
|
||||||
|
|
||||||
|
if($this->get('session')->get('idservice')!="all") {
|
||||||
|
|
||||||
|
$idservice=$event->getUser()->getService()->getId();
|
||||||
|
if ($idservice!=$this->get('session')->get('idservice')){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Filtre par project
|
||||||
|
|
||||||
|
if($this->get('session')->get('idproject')!="all") {
|
||||||
|
$idproject=$event->getTask()->getProject()->getId();
|
||||||
|
if($idproject!=$this->get('session')->get('idproject'))
|
||||||
|
continue;
|
||||||
|
}
|
||||||
$tmp=$this->formatEvent($event);
|
$tmp=$this->formatEvent($event);
|
||||||
array_push($tbevents,$tmp);
|
array_push($tbevents,$tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Astreintes
|
// Astreintes
|
||||||
$iduser=$this->get("session")->get("iduser");
|
|
||||||
if($iduser=="all")
|
if($iduser=="all")
|
||||||
$penaltys=$em->getRepository("App:Penalty")->findAll();
|
$penaltys=$em->getRepository("App:Penalty")->findAll();
|
||||||
else {
|
else {
|
||||||
@@ -75,11 +98,9 @@ class EventController extends AbstractController
|
|||||||
$user=$em->getRepository("App:User")->find($iduser);
|
$user=$em->getRepository("App:User")->find($iduser);
|
||||||
$penaltys=$em->getRepository("App:Penalty")->findBy(["user"=>$user]);
|
$penaltys=$em->getRepository("App:Penalty")->findBy(["user"=>$user]);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach($penaltys as $penalty) {
|
foreach($penaltys as $penalty) {
|
||||||
$tmp=$this->formatEvent($penalty);
|
$tmp=$this->formatEvent($penalty);
|
||||||
array_push($tbevents,$tmp);
|
array_push($tbevents,$tmp);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Breakday
|
// Breakday
|
||||||
@@ -90,7 +111,6 @@ class EventController extends AbstractController
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Retour
|
// Retour
|
||||||
return new Response(json_encode($tbevents));
|
return new Response(json_encode($tbevents));
|
||||||
}
|
}
|
||||||
|
@@ -327,6 +327,7 @@ class ExportController extends AbstractController
|
|||||||
if(!isset($tbproject["weeks_by_task_by_user"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["tasks"][$event->getTask()->getId()])){
|
if(!isset($tbproject["weeks_by_task_by_user"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["tasks"][$event->getTask()->getId()])){
|
||||||
$tbproject["weeks_by_task_by_user"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["tasks"][$event->getTask()->getId()] = [
|
$tbproject["weeks_by_task_by_user"][$event->getStart()->format("Y")][$event->getStart()->format("W")]["tasks"][$event->getTask()->getId()] = [
|
||||||
"taskname" => $event->getTask()->getName(),
|
"taskname" => $event->getTask()->getName(),
|
||||||
|
"nature" => $event->getTask()->getNature()->getName(),
|
||||||
"users" => [],
|
"users" => [],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@@ -405,6 +406,7 @@ class ExportController extends AbstractController
|
|||||||
if(!isset($tbproject["weeks_by_task_by_user"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["tasks"][$penalty->getTask()->getId()])){
|
if(!isset($tbproject["weeks_by_task_by_user"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["tasks"][$penalty->getTask()->getId()])){
|
||||||
$tbproject["weeks_by_task_by_user"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["tasks"][$penalty->getTask()->getId()] = [
|
$tbproject["weeks_by_task_by_user"][$penalty->getStart()->format("Y")][$penalty->getStart()->format("W")]["tasks"][$penalty->getTask()->getId()] = [
|
||||||
"taskname" => $penalty->getTask()->getName(),
|
"taskname" => $penalty->getTask()->getName(),
|
||||||
|
"nature" => $event->getTask()->getNature()->getName(),
|
||||||
"users" => [],
|
"users" => [],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@@ -36,9 +36,7 @@ class HomeController extends AbstractController
|
|||||||
public function selectuser(Request $request)
|
public function selectuser(Request $request)
|
||||||
{
|
{
|
||||||
$iduser = $request->request->get('iduser');
|
$iduser = $request->request->get('iduser');
|
||||||
$selectedusers = $request->request->get('selectedusers');
|
|
||||||
$this->get('session')->set('iduser',$iduser);
|
$this->get('session')->set('iduser',$iduser);
|
||||||
$this->get('session')->set('selectedusers',$selectedusers);
|
|
||||||
$output=["return"=>"OK"];
|
$output=["return"=>"OK"];
|
||||||
return new Response(json_encode($output));
|
return new Response(json_encode($output));
|
||||||
}
|
}
|
||||||
|
@@ -955,7 +955,7 @@ class ReportController extends AbstractController
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
$tbevents[$idproject][$idday]["duration"]=($event->getAllday()?1:0.5);
|
$tbevents[$idproject][$idday]["duration"]+=($event->getAllday()?1:0.5);
|
||||||
|
|
||||||
|
|
||||||
$st->add(new \DateInterval('P1D'));
|
$st->add(new \DateInterval('P1D'));
|
||||||
|
@@ -43,7 +43,6 @@ class TimerController extends AbstractController
|
|||||||
$user = $em->getRepository("App:User")->find($iduser);
|
$user = $em->getRepository("App:User")->find($iduser);
|
||||||
$tasks = $em->getRepository("App:Task")->findAll();
|
$tasks = $em->getRepository("App:Task")->findAll();
|
||||||
$timers = $em->getRepository("App:Timer")->findBy(["user"=>$iduser]);
|
$timers = $em->getRepository("App:Timer")->findBy(["user"=>$iduser]);
|
||||||
|
|
||||||
return $this->render($this->render.'list.cal.html.twig',[
|
return $this->render($this->render.'list.cal.html.twig',[
|
||||||
"useheader" => true,
|
"useheader" => true,
|
||||||
"usesidebar" => true,
|
"usesidebar" => true,
|
||||||
@@ -97,11 +96,6 @@ class TimerController extends AbstractController
|
|||||||
$officeworkend = clone $officeworkstart;
|
$officeworkend = clone $officeworkstart;
|
||||||
$officeworkstart->SetTime(9,0,0);
|
$officeworkstart->SetTime(9,0,0);
|
||||||
$officeworkend->SetTime(17,30,0);
|
$officeworkend->SetTime(17,30,0);
|
||||||
if ($start < $officeworkstart || $end > $officeworkend) {
|
|
||||||
$timer->setAdditionalHour(true);
|
|
||||||
}else{
|
|
||||||
$timer->setAdditionalHour($additionalhour);
|
|
||||||
}
|
|
||||||
|
|
||||||
$timer = new Entity();
|
$timer = new Entity();
|
||||||
$timer->setUser($user);
|
$timer->setUser($user);
|
||||||
@@ -110,7 +104,12 @@ class TimerController extends AbstractController
|
|||||||
$timer->setEnd($end);
|
$timer->setEnd($end);
|
||||||
$timer->setDuration($duration);
|
$timer->setDuration($duration);
|
||||||
$timer->setDescription($description);
|
$timer->setDescription($description);
|
||||||
$timer->setActivePenalty($activepenalty);
|
$timer->setActivePenalty($activepenalty ? $activepenalty : false);
|
||||||
|
if ($start < $officeworkstart || $end > $officeworkend) {
|
||||||
|
$timer->setAdditionalHour(true);
|
||||||
|
}else{
|
||||||
|
$timer->setAdditionalHour($additionalhour ? $additionalhour : false);
|
||||||
|
}
|
||||||
$em->persist($timer);
|
$em->persist($timer);
|
||||||
$em->flush();
|
$em->flush();
|
||||||
|
|
||||||
|
@@ -81,14 +81,14 @@ class ProjectRepository extends ServiceEntityRepository
|
|||||||
|
|
||||||
public function sumEstimate($id) {
|
public function sumEstimate($id) {
|
||||||
$qb = $this->createQueryBuilder('project')
|
$qb = $this->createQueryBuilder('project')
|
||||||
->select('SUM(task.quantity) as somme1, SUM(task.validate) as somme2 ')
|
->select('SUM(task.quantity) as somme')
|
||||||
->from('App:Task','task')
|
->from('App:Task','task')
|
||||||
->Where('project.id=:id')
|
->Where('project.id=:id')
|
||||||
->andWhere('task.project=project')
|
->andWhere('task.project=project')
|
||||||
->setParameter('id',$id);
|
->setParameter('id',$id);
|
||||||
$result=$qb->getQuery()->getOneOrNullResult();
|
$result=$qb->getQuery()->getOneOrNullResult();
|
||||||
|
|
||||||
$estimate=($result["somme1"]?$result["somme1"]:0)+($result["somme2"]?$result["somme2"]:0);
|
$estimate=($result["somme"]?$result["somme"]:0);
|
||||||
return $estimate;
|
return $estimate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
15
src/schedule-2.0/src/Repository/TimerRepository.php
Normal file
15
src/schedule-2.0/src/Repository/TimerRepository.php
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Repository;
|
||||||
|
|
||||||
|
use App\Entity\Timer;
|
||||||
|
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
|
||||||
|
use Doctrine\Common\Persistence\ManagerRegistry;
|
||||||
|
|
||||||
|
class TimerRepository extends ServiceEntityRepository
|
||||||
|
{
|
||||||
|
public function __construct(ManagerRegistry $registry)
|
||||||
|
{
|
||||||
|
parent::__construct($registry, Timer::class);
|
||||||
|
}
|
||||||
|
}
|
@@ -122,8 +122,6 @@ class sessionListener {
|
|||||||
}
|
}
|
||||||
$session->set('services',$tbservices);
|
$session->set('services',$tbservices);
|
||||||
|
|
||||||
$selectedusers=[];
|
|
||||||
$session->set('selectedusers',$selectedusers);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,12 +1,12 @@
|
|||||||
{% block body %}
|
{% block body %}
|
||||||
Client;Projet;Tâche;Utilisateur;Année;Semaine;Cumul;
|
Client;Projet;Tâche;Nature;Utilisateur;Année;Semaine;Cumul;
|
||||||
{% for project in projects %}
|
{% for project in projects %}
|
||||||
{% if project.weeks_by_task_by_user is defined %}
|
{% if project.weeks_by_task_by_user is defined %}
|
||||||
{% for year,weeks in project.weeks_by_task_by_user %}
|
{% for year,weeks in project.weeks_by_task_by_user %}
|
||||||
{% for week in weeks %}
|
{% for week in weeks %}
|
||||||
{% for task in week.tasks%}
|
{% for task in week.tasks%}
|
||||||
{% for user in task.users%}
|
{% for user in task.users%}
|
||||||
{{project.customer}};{{project.name}};{{task.taskname}};{{user.displayname}};{{year}};S{{week.weeknumber}};{{user.cumul|replace({".": ","})}};
|
{{project.customer}};{{project.name}};{{task.taskname|replace({"&": "et"})}};{{task.nature}};{{user.displayname}};{{year}};S{{week.weeknumber}};{{user.cumul|replace({".": ","})}};
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@@ -99,9 +99,10 @@
|
|||||||
<h2>{{ project.displayname }}</h2>
|
<h2>{{ project.displayname }}</h2>
|
||||||
<div class="synthese">
|
<div class="synthese">
|
||||||
Estimé = {{ project.estimate }}<br>
|
Estimé = {{ project.estimate }}<br>
|
||||||
|
Commandé = {{ project.proposed }}<br>
|
||||||
Validé = {{ project.validate }}<br>
|
Validé = {{ project.validate }}<br>
|
||||||
Planifié = {{ project.planified }}<br>
|
Planifié = {{ project.planified }}<br>
|
||||||
<b>RESTE = {{ (project.estimate - project.validate - project.planified) }}</b>
|
<b>RESTE = {{ ( project.proposed - project.validate - project.planified) }}</b>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@@ -16,7 +16,9 @@ SUIVI HORAIRE
|
|||||||
<div id="timer" class="card">
|
<div id="timer" class="card">
|
||||||
|
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
|
|
||||||
<a class="btn btn-success" style="float:right" href={{ path('app_timer_submit') }}>Créer un Timer</a>
|
<a class="btn btn-success" style="float:right" href={{ path('app_timer_submit') }}>Créer un Timer</a>
|
||||||
|
{% if user %}
|
||||||
Lancer un Timer :
|
Lancer un Timer :
|
||||||
<select class="select2entity" id="timer-task" name="timer-task">
|
<select class="select2entity" id="timer-task" name="timer-task">
|
||||||
<option> Tâche </option>
|
<option> Tâche </option>
|
||||||
@@ -28,7 +30,12 @@ SUIVI HORAIRE
|
|||||||
<a href='#' title='Add' id='addtimer'>
|
<a href='#' title='Add' id='addtimer'>
|
||||||
<i class='fas fa-plus-circle'></i>
|
<i class='fas fa-plus-circle'></i>
|
||||||
</a>
|
</a>
|
||||||
|
{% else %}
|
||||||
|
Veuillez choisir un Intervenant pour lancer un Timer.
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
|
@@ -277,28 +277,37 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
<a>
|
||||||
|
<label class="control-label">
|
||||||
|
Service
|
||||||
|
</label>
|
||||||
|
</a>
|
||||||
|
<div class="select-control">
|
||||||
|
<select class="form-control select2entity" id="sideservice" name="sideservice">
|
||||||
|
<option value="all" selected>Tout les services</option>
|
||||||
|
{% for service in app.session.get('services') %}
|
||||||
|
{% set selected="" %}
|
||||||
|
{%if service.id==app.session.get('idservice') %}
|
||||||
|
{% set selected="selected" %}
|
||||||
|
{% endif %}
|
||||||
|
<option value="{{service.id}}" {{selected}}>{{service.name}}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
<a>
|
<a>
|
||||||
<label class="control-label">
|
<label class="control-label">
|
||||||
Intervenant
|
Intervenant
|
||||||
</label>
|
</label>
|
||||||
</a>
|
</a>
|
||||||
<div class="select-control">
|
<div class="select-control">
|
||||||
<select class="form-control select2entity" id="sideuser" name="sideuser" multiple>
|
<select class="form-control select2entity" id="sideuser" name="sideuser">
|
||||||
<option value="all" {%if app.session.get('iduser')=="all" %}selected{% endif %}>Tout le monde</option>
|
<option value="all" selected>Tout le monde</option>
|
||||||
|
|
||||||
{% for user in app.session.get('users') %}
|
{% for user in app.session.get('users') %}
|
||||||
{% set selected="" %}
|
{% set selected="" %}
|
||||||
{% if app.session.get('selectedusers')|length > 1 %}
|
|
||||||
{% for suser in app.session.get('selectedusers') %}
|
|
||||||
{%if user.id == suser %}
|
|
||||||
{% set selected="selected" %}
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
{% else %}
|
|
||||||
{%if user.id==app.session.get('iduser') %}
|
{%if user.id==app.session.get('iduser') %}
|
||||||
{% set selected="selected" %}
|
{% set selected="selected" %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
|
||||||
<option value="{{user.id}}" {{selected}}>{{user.displayname}}</option>
|
<option value="{{user.id}}" {{selected}}>{{user.displayname}}</option>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
@@ -321,23 +330,7 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<a>
|
|
||||||
<label class="control-label">
|
|
||||||
Service
|
|
||||||
</label>
|
|
||||||
</a>
|
|
||||||
<div class="select-control">
|
|
||||||
<select class="form-control select2entity" id="sideservice" name="sideservice">
|
|
||||||
<option value="all" selected>Tout les services</option>
|
|
||||||
{% for service in app.session.get('services') %}
|
|
||||||
{% set selected="" %}
|
|
||||||
{%if service.id==app.session.get('idservice') %}
|
|
||||||
{% set selected="selected" %}
|
|
||||||
{% endif %}
|
|
||||||
<option value="{{service.id}}" {{selected}}>{{service.name}}</option>
|
|
||||||
{% endfor %}
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="last"></li>
|
<li class="last"></li>
|
||||||
@@ -520,13 +513,10 @@
|
|||||||
|
|
||||||
$('#sideuser').on('select2:select', function (e) {
|
$('#sideuser').on('select2:select', function (e) {
|
||||||
var data = e.params.data;
|
var data = e.params.data;
|
||||||
var selectedusers = $('#sideuser').val();
|
|
||||||
console.log(selectedusers)
|
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: "POST",
|
type: "POST",
|
||||||
data: {
|
data: {
|
||||||
iduser: data.id,
|
iduser: data.id,
|
||||||
selectedusers: selectedusers,
|
|
||||||
},
|
},
|
||||||
url: "{{ path('app_home_selectuser') }}",
|
url: "{{ path('app_home_selectuser') }}",
|
||||||
success: function (response) {
|
success: function (response) {
|
||||||
|
@@ -36,3 +36,6 @@ DATABASE_HOST=%%adresse_ip_mysql
|
|||||||
CAS_HOST=%%eolesso_adresse
|
CAS_HOST=%%eolesso_adresse
|
||||||
CAS_PORT=%%eolesso_port
|
CAS_PORT=%%eolesso_port
|
||||||
CAS_PATH=%%eolesso_cas_folder
|
CAS_PATH=%%eolesso_cas_folder
|
||||||
|
|
||||||
|
OFFICE_HOUR_START=09:00
|
||||||
|
OFFICE_HOUR_END=17:30
|
Reference in New Issue
Block a user