diff --git a/src/ninegitea-1.0/config/routes.yaml b/src/ninegitea-1.0/config/routes.yaml index 464a03a..af50651 100644 --- a/src/ninegitea-1.0/config/routes.yaml +++ b/src/ninegitea-1.0/config/routes.yaml @@ -234,6 +234,28 @@ app_scrumteam_order: defaults: { _controller: App\Controller\ScrumteamController:order } +#== Scrumpriority ======================================================================================================== +app_scrumpriority_submit: + path: /master/scrumpriority/submit/{scrumid} + defaults: { _controller: App\Controller\ScrumpriorityController:submit } + +app_scrumpriority_update: + path: /master/scrumpriority/update/{id} + defaults: { _controller: App\Controller\ScrumpriorityController:update } + +app_scrumpriority_delete: + path: /master/scrumpriority/delete/{id} + defaults: { _controller: App\Controller\ScrumpriorityController:delete } + +app_scrumpriority_select: + path: /master/scrumpriority/select/{scrumid} + defaults: { _controller: App\Controller\ScrumpriorityController:select } + +app_scrumpriority_order: + path: /master/scrumpriority/order/{scrumid} + defaults: { _controller: App\Controller\ScrumpriorityController:order } + + #== Scrumissue ======================================================================================================== app_scrumissue_change: path: /user/scrumissue/change diff --git a/src/ninegitea-1.0/src/Controller/IssueController.php b/src/ninegitea-1.0/src/Controller/IssueController.php index b4485dd..45f6f07 100755 --- a/src/ninegitea-1.0/src/Controller/IssueController.php +++ b/src/ninegitea-1.0/src/Controller/IssueController.php @@ -35,6 +35,7 @@ class IssueController extends AbstractController $giteamilestones=[]; $giteacolumns=[]; $giteateams=[]; + $giteaprioritys=[]; $gitealabels=[]; $giteaassignees=$em->getRepository("App:User")->findBy([],["username"=>"ASC"]); @@ -78,6 +79,11 @@ class IssueController extends AbstractController array_push($giteateams,$team->getGiteajson()["name"]); } + foreach($scrum->getScrumprioritys() as $priority) { + if(!in_array($priority->getGiteajson()["name"],$giteaprioritys)) + array_push($giteaprioritys,$priority->getGiteajson()["name"]); + } + foreach($giteaissues as $giteaissue) { foreach($giteaissue->labels as $label) { if(!in_array($label->name,$gitealabels)) @@ -91,6 +97,7 @@ class IssueController extends AbstractController array_multisort($keysort, SORT_DESC, $giteamilestones); sort($giteacolumns); sort($giteateams); + sort($giteaprioritys); sort($gitealabels); sort($giteacategorys); @@ -100,6 +107,7 @@ class IssueController extends AbstractController $filtermilestones = $em->getRepository("App:User")->getUserpreference($this->getUser(),"filtermilestones",$id); $filtercolumns = $em->getRepository("App:User")->getUserpreference($this->getUser(),"filtercolumns",$id); $filterteams = $em->getRepository("App:User")->getUserpreference($this->getUser(),"filterteams",$id); + $filterprioritys = $em->getRepository("App:User")->getUserpreference($this->getUser(),"filterprioritys",$id); $filterlabels = $em->getRepository("App:User")->getUserpreference($this->getUser(),"filterlabels",$id); $filterassignees = $em->getRepository("App:User")->getUserpreference($this->getUser(),"filterassignees",$id); $showfilters = $em->getRepository("App:User")->getUserpreference($this->getUser(),"showfilters",$id); @@ -113,6 +121,7 @@ class IssueController extends AbstractController "giteamilestones" => $giteamilestones, "giteacolumns" => $giteacolumns, "giteateams" => $giteateams, + "giteaprioritys" => $giteaprioritys, "gitealabels" => $gitealabels, "giteaassignees" => $giteaassignees, "filtercategorys" => $filtercategorys, @@ -120,6 +129,7 @@ class IssueController extends AbstractController "filtermilestones" => $filtermilestones, "filtercolumns" => $filtercolumns, "filterteams" => $filterteams, + "filterprioritys" => $filterprioritys, "filterlabels" => $filterlabels, "filterassignees" => $filterassignees, "showfilters" => $showfilters, diff --git a/src/ninegitea-1.0/src/Controller/ScrumController.php b/src/ninegitea-1.0/src/Controller/ScrumController.php index cee3aab..61568a1 100755 --- a/src/ninegitea-1.0/src/Controller/ScrumController.php +++ b/src/ninegitea-1.0/src/Controller/ScrumController.php @@ -35,16 +35,15 @@ class ScrumController extends AbstractController array_push($giteacategorys,$scrum->getCategory()); $gitearepo=$this->giteaservice->getRepo($scrum->getGiteajson()["id"]); - if(!$gitearepo) die("Probleme de connexion avec gitea veuillez vous reconnecter"); + if($gitearepo) { + if($gitearepo->updated_at!=$scrum->getGiteajson()["updated_at"]||$gitearepo->open_issues_count!=$scrum->getGiteajson()["open_issues_count"]) { + $scrum->setGiteajson(json_decode(json_encode($gitearepo), true)); + $em->persist($scrum); + $em->flush(); + } - - if($gitearepo->updated_at!=$scrum->getGiteajson()["updated_at"]||$gitearepo->open_issues_count!=$scrum->getGiteajson()["open_issues_count"]) { - $scrum->setGiteajson(json_decode(json_encode($gitearepo), true)); - $em->persist($scrum); - $em->flush(); + array_push($gitearepos,$gitearepo); } - - array_push($gitearepos,$gitearepo); } sort($giteacategorys); @@ -176,11 +175,12 @@ class ScrumController extends AbstractController $data=$em->getRepository($this->entity)->find($id); if(!$data) return $this->redirectToRoute($this->route); - $em->getRepository("App:Scrum")->getGitea($data,$giteaassignees,$giteacolumns,$giteamilestones,$giteateams,$gitealabels); - + $em->getRepository("App:Scrum")->getGitea($data,$giteaassignees,$giteacolumns,$giteamilestones,$giteateams,$giteaprioritys,$gitealabels); + // Préférences utilisateur $filtermilestones = $em->getRepository("App:User")->getUserpreference($this->getUser(),"filtermilestones",$id); $filterteams = $em->getRepository("App:User")->getUserpreference($this->getUser(),"filterteams",$id); + $filterprioritys = $em->getRepository("App:User")->getUserpreference($this->getUser(),"filterprioritys",$id); $filterlabels = $em->getRepository("App:User")->getUserpreference($this->getUser(),"filterlabels",$id); $filterassignees = $em->getRepository("App:User")->getUserpreference($this->getUser(),"filterassignees",$id); $showfilters = $em->getRepository("App:User")->getUserpreference($this->getUser(),"showfilters",$id); @@ -193,12 +193,14 @@ class ScrumController extends AbstractController 'giteacolumns' => $giteacolumns, 'giteamilestones' => $giteamilestones, 'giteateams' => $giteateams, + 'giteaprioritys' => $giteaprioritys, 'gitealabels' => $gitealabels, 'filtermilestones' => $filtermilestones, 'filterteams' => $filterteams, + 'filterprioritys' => $filterprioritys, 'filterlabels' => $filterlabels, 'filterassignees' => $filterassignees, - "showfilters" => $showfilters, + 'showfilters' => $showfilters, $this->data => $data, ]); } @@ -210,42 +212,62 @@ class ScrumController extends AbstractController $data=$em->getRepository($this->entity)->find($id); if(!$data) return $this->redirectToRoute($this->route); - $em->getRepository("App:Scrum")->getGitea($data,$giteaassignees,$giteacolumns,$giteamilestones,$giteateams,$gitealabels); + $em->getRepository("App:Scrum")->getGitea($data,$giteaassignees,$giteacolumns,$giteamilestones,$giteateams,$giteaprioritys,$gitealabels); + + // Préférences utilisateur + $filtermilestones = $em->getRepository("App:User")->getUserpreference($this->getUser(),"filtermilestones",$id); + $filterteams = $em->getRepository("App:User")->getUserpreference($this->getUser(),"filterteams",$id); + $showfilters = $em->getRepository("App:User")->getUserpreference($this->getUser(),"showfilters",$id); $tbstat=[]; foreach($data->getScrumIssues() as $issue) { - $idmilestone=($issue->getGiteamilestone()?$issue->getGiteamilestone():-100); - $lbmilestone=($issue->getGiteamilestone()?$issue->getGiteamilestonename():"Aucun"); - if(!array_key_exists($idmilestone,$tbstat)) { - $tbstat[$idmilestone]=["id"=>$idmilestone,"name"=>$lbmilestone,"stat"=>[]]; - } - - if(!array_key_exists($issue->getScrumcolumn()->getId(),$tbstat[$idmilestone]["stat"])) { - $tbstat[$idmilestone]["stat"][$issue->getScrumcolumn()->getId()]=[ - "id"=>$issue->getScrumcolumn()->getId(), - "label"=>$issue->getScrumcolumn()->getName(), - "total"=>0, - "color"=>"#".$issue->getScrumcolumn()->getGiteajson()["color"], - "labels"=>[], - ]; - } $labels=$issue->getGiteajson()["labels"]; - foreach($labels as $label) { - if($issue->getScrumcolumn()->getGiteaid()!=$label["id"]) { - if(!array_key_exists($label["id"],$tbstat[$idmilestone]["stat"][$issue->getScrumcolumn()->getId()]["labels"])) { - $tbstat[$idmilestone]["stat"][$issue->getScrumcolumn()->getId()]["labels"][$label["id"]] = [ - "id"=>$label["id"], - "label"=>$label["name"], - "total"=>0, - "color"=>"#".$label["color"], - ]; + $haveteams=true; + if($filterteams) { + $haveteams=false; + foreach($filterteams as $filterteam) { + foreach($labels as $label) { + if($label["id"]==$filterteam) { + $haveteams=true; + } } - $tbstat[$idmilestone]["stat"][$issue->getScrumcolumn()->getId()]["labels"][$label["id"]]["total"]++; } } - $tbstat[$idmilestone]["stat"][$issue->getScrumcolumn()->getId()]["total"]++; + if($haveteams) { + $idmilestone=($issue->getGiteamilestone()?$issue->getGiteamilestone():-100); + $lbmilestone=($issue->getGiteamilestone()?$issue->getGiteamilestonename():"Aucun"); + if(!array_key_exists($idmilestone,$tbstat)) { + $tbstat[$idmilestone]=["id"=>$idmilestone,"name"=>$lbmilestone,"stat"=>[]]; + } + + if(!array_key_exists($issue->getScrumcolumn()->getId(),$tbstat[$idmilestone]["stat"])) { + $tbstat[$idmilestone]["stat"][$issue->getScrumcolumn()->getId()]=[ + "id"=>$issue->getScrumcolumn()->getId(), + "label"=>$issue->getScrumcolumn()->getName(), + "total"=>0, + "color"=>"#".$issue->getScrumcolumn()->getGiteajson()["color"], + "labels"=>[], + ]; + } + + foreach($labels as $label) { + if($issue->getScrumcolumn()->getGiteaid()!=$label["id"]) { + if(!array_key_exists($label["id"],$tbstat[$idmilestone]["stat"][$issue->getScrumcolumn()->getId()]["labels"])) { + $tbstat[$idmilestone]["stat"][$issue->getScrumcolumn()->getId()]["labels"][$label["id"]] = [ + "id"=>$label["id"], + "label"=>$label["name"], + "total"=>0, + "color"=>"#".$label["color"], + ]; + } + $tbstat[$idmilestone]["stat"][$issue->getScrumcolumn()->getId()]["labels"][$label["id"]]["total"]++; + } + } + + $tbstat[$idmilestone]["stat"][$issue->getScrumcolumn()->getId()]["total"]++; + } } foreach($tbstat as $k1=>$milestone) { @@ -264,7 +286,11 @@ class ScrumController extends AbstractController 'giteacolumns' => $giteacolumns, 'giteamilestones' => $giteamilestones, 'giteateams' => $giteateams, + 'giteaprioritys' => $giteaprioritys, 'gitealabels' => $gitealabels, + 'filtermilestones' => $filtermilestones, + 'filterteams' => $filterteams, + 'showfilters' => $showfilters, $this->data => $data, 'tbstat' => $tbstat, ]); diff --git a/src/ninegitea-1.0/src/Entity/Scrum.php b/src/ninegitea-1.0/src/Entity/Scrum.php index d218765..486441d 100644 --- a/src/ninegitea-1.0/src/Entity/Scrum.php +++ b/src/ninegitea-1.0/src/Entity/Scrum.php @@ -79,6 +79,12 @@ class Scrum */ private $scrumteams; + /** + * @ORM\OneToMany(targetEntity="Scrumpriority", mappedBy="scrum", cascade={"persist"}, orphanRemoval=true) + * @ORM\OrderBy({"rowid" = "ASC"}) + */ + private $scrumprioritys; + public function getStatistique() { $id=-100; @@ -103,6 +109,7 @@ class Scrum $this->scrumcolumns = new ArrayCollection(); $this->scrumissues = new ArrayCollection(); $this->scrumteams = new ArrayCollection(); + $this->scrumprioritys = new ArrayCollection(); } public function getId(): ?int @@ -302,4 +309,35 @@ class Scrum return $this; } + + /** + * @return Collection|Scrumpriority[] + */ + public function getScrumprioritys(): Collection + { + return $this->scrumprioritys; + } + + public function addScrumpriority(Scrumpriority $scrumpriority): self + { + if (!$this->scrumprioritys->contains($scrumpriority)) { + $this->scrumprioritys[] = $scrumpriority; + $scrumpriority->setScrum($this); + } + + return $this; + } + + public function removeScrumpriority(Scrumpriority $scrumpriority): self + { + if ($this->scrumprioritys->contains($scrumpriority)) { + $this->scrumprioritys->removeElement($scrumpriority); + // set the owning side to null (unless already changed) + if ($scrumpriority->getScrum() === $this) { + $scrumpriority->setScrum(null); + } + } + + return $this; + } } \ No newline at end of file diff --git a/src/ninegitea-1.0/src/Repository/ScrumRepository.php b/src/ninegitea-1.0/src/Repository/ScrumRepository.php index a539c59..9ff8c28 100644 --- a/src/ninegitea-1.0/src/Repository/ScrumRepository.php +++ b/src/ninegitea-1.0/src/Repository/ScrumRepository.php @@ -16,7 +16,7 @@ class ScrumRepository extends ServiceEntityRepository $this->giteaservice = $giteaservice; } - public function getGitea($scrum,&$giteaassignees,&$giteacolumns,&$giteamilestones,&$giteateams,&$gitealabels) { + public function getGitea($scrum,&$giteaassignees,&$giteacolumns,&$giteamilestones,&$giteateams,&$giteaprioritys,&$gitealabels) { // Récupérer le dernier order $last = $this->_em->getRepository('App:Scrumissue')->findOneBy(["scrum"=>$scrum], ['rowid' => 'DESC']); if(!$last) $lastrowid=-1; @@ -40,6 +40,13 @@ class ScrumRepository extends ServiceEntityRepository array_push($giteateams,$team->getGiteaid()); } + // Récupérer les prioritys + $prioritys=$this->_em->getRepository('App:Scrumpriority')->findBy(["scrum"=>$scrum], ['rowid' => 'ASC']); + $giteaprioritys=[]; + foreach($prioritys as $priority) { + array_push($giteaprioritys,$priority->getGiteaid()); + } + // Récupérer la orga de gitea if(!empty($scrum->getGiteajson()["owner"]["email"])) $giteaassignees=[$scrum->getGiteajson()["owner"]]; @@ -75,7 +82,7 @@ class ScrumRepository extends ServiceEntityRepository $gitealabels=$this->giteaservice->getLabels($scrum->getGiteajson()["owner"]["login"],$scrum->getGiteajson()["name"]); if(!is_array($gitealabels)) die("Probleme de connexion avec gitea veuillez vous reconnecter"); foreach($gitealabels as $key => $gitealabel) { - if(in_array($gitealabel->id,$giteacolumns)||in_array($gitealabel->id,$giteateams)) + if(in_array($gitealabel->id,$giteacolumns)||in_array($gitealabel->id,$giteateams)||in_array($gitealabel->id,$giteaprioritys)) unset($gitealabels[$key]); } diff --git a/src/ninegitea-1.0/src/Service/giteaService.php b/src/ninegitea-1.0/src/Service/giteaService.php index 7452b3d..7acd6f3 100644 --- a/src/ninegitea-1.0/src/Service/giteaService.php +++ b/src/ninegitea-1.0/src/Service/giteaService.php @@ -30,7 +30,7 @@ class giteaService $body = \Unirest\Request\Body::json($query); $response=$this->api("POST",$apiurl,$body); - + if(!$response||$response->code!="200") return false; else { $this->session->set('giteatoken', $response->body->access_token); diff --git a/src/ninegitea-1.0/templates/Issue/list.html.twig b/src/ninegitea-1.0/templates/Issue/list.html.twig index 8e27b8a..c061f7c 100644 --- a/src/ninegitea-1.0/templates/Issue/list.html.twig +++ b/src/ninegitea-1.0/templates/Issue/list.html.twig @@ -31,7 +31,7 @@ {% block body %}