giteaservice = $giteaservice; } public function change(Request $request) { $em = $this->getDoctrine()->getManager(); $id=$request->get('id'); $oldcolumn=$request->get('oldcolumn'); $newcolumn=$request->get('newcolumn'); $oldmilestone=$request->get('oldmilestone'); $newmilestone=$request->get('newmilestone'); $oldsprint=$request->get('oldsprint'); $newsprint=$request->get('newsprint'); if($oldcolumn!=$newcolumn||$oldmilestone!=$newmilestone||$oldsprint!=$newsprint) { // Rechercher l'issue en cours $scrumissue=$em->getRepository("App:Scrumissue")->find($id); if(!$scrumissue) return new JsonResponse(['message' => 'No Issue'], 403); // Récupérer la liste des labels de l'issue $gitealabels=$this->giteaservice->getIssuelabels($scrumissue->getScrum()->getGiteajson()["owner"]["login"],$scrumissue->getScrum()->getGiteajson()["name"],$scrumissue->getGiteanumber()); if(!is_array($gitealabels)) return new JsonResponse(['message' => 'No API getIssuelabels'], 403); // Remplacer l'ancien column par la nouvelle if($oldcolumn!=$newcolumn) { $newgitelabels=[]; $haveold=false; foreach($gitealabels as $gitealabel) { if($gitealabel->id!=$oldcolumn) array_push($newgitelabels,$gitealabel->id); else $haveold=true; } if(!in_array($newcolumn,$newgitelabels)) array_push($newgitelabels,intval($newcolumn)); // Supprimer l'ancien label if($haveold) { $return=$this->giteaservice->deleteIssuelabel($scrumissue->getScrum()->getGiteajson()["owner"]["login"],$scrumissue->getScrum()->getGiteajson()["name"],$scrumissue->getGiteanumber(),$oldcolumn); if(!$return) return new JsonResponse(['message' => 'No API deleteIssuelabel'], 403); } // Mettre à jour les labels $return=$this->giteaservice->putIssuelabels($scrumissue->getScrum()->getGiteajson()["owner"]["login"],$scrumissue->getScrum()->getGiteajson()["name"],$scrumissue->getGiteanumber(),$newgitelabels); if(!$return) return new JsonResponse(['message' => 'No API putIssuelabels'], 403); } // Mettre à jour le milestone if($oldmilestone!=$newmilestone) { $patchs=["milestone"=>intval($newmilestone)]; $return=$this->giteaservice->patchIssue($scrumissue->getScrum()->getGiteajson()["owner"]["login"],$scrumissue->getScrum()->getGiteajson()["name"],$scrumissue->getGiteanumber(),$patchs); if(!$return) return new JsonResponse(['message' => 'No API patchIssue'], 403); } // Mettre à jour le sprint if($oldsprint!=$newsprint) { $scrumissue->setScrumsprint(null); $sprint=$em->getRepository("App:Scrumsprint")->find($newsprint); if($sprint) { $scrumissue->setScrumsprint($sprint); } $em->flush(); } // Récupérer l'issue modifiée pour mettre à jour la date de modification gitea $giteaissue=$this->giteaservice->getIssue($scrumissue->getScrum()->getGiteajson()["owner"]["login"],$scrumissue->getScrum()->getGiteajson()["name"],$scrumissue->getGiteanumber()); if(!$giteaissue) return new JsonResponse(['message' => 'No API getIssue'], 403); $updateissue=new \DateTime($giteaissue->updated_at); $updateissue->setTimezone(new \DateTimeZone("UTC")); $lastupdate=$scrumissue->getScrum()->getUpdatedate(); if($updateissue > $lastupdate) { $scrumissue->getScrum()->setUpdatedate($updateissue); $em->persist($scrumissue->getScrum()); $em->flush(); return new JsonResponse($lastupdate->format("Ymd H:i:s")); } } return new JsonResponse(false); } public function order(Request $request) { $em = $this->getDoctrine()->getManager(); $id=$request->get('id'); $lstordered=explode(",",$request->get('lstordered')); $scrum=$em->getRepository("App:Scrum")->find($id); if(!$scrum) return new JsonResponse(['message' => 'No Scrum'], 403); $order=0; foreach($lstordered as $item) { $scrumissue=$em->getRepository("App:Scrumissue")->find($item); if($scrumissue) { $scrumissue->setRowid($order); $order++; $em->persist($scrumissue); } } $em->flush(); return new JsonResponse(); } public function info(Request $request) { $em = $this->getDoctrine()->getManager(); $id=$request->get('id'); // Rechercher l'issue en cours $scrumissue=$em->getRepository("App:Scrumissue")->find($id); if(!$scrumissue) return new JsonResponse(['message' => 'No Issue'], 403); $output=[]; $output["weight"]=$scrumissue->getWeight(); return new JsonResponse($output); } public function update(Request $request) { $em = $this->getDoctrine()->getManager(); $id=$request->get('id'); $weight=$request->get('weight'); // Rechercher l'issue en cours $scrumissue=$em->getRepository("App:Scrumissue")->find($id); if(!$scrumissue) return new JsonResponse(['message' => 'No Issue'], 403); $scrumissue->setWeight($weight); $em->flush(); $giteaissues=$this->giteaservice->getIssues($scrumissue->getScrum()->getGiteajson()["owner"]["login"],$scrumissue->getScrum()->getGiteajson()["name"]); $weights=[]; foreach($giteaissues as $giteaissue) { $issue=$em->getRepository("App:Scrumissue")->findOneBy(["scrum"=>$scrumissue->getScrum(),"giteaid"=>$giteaissue->id]); if($issue) { if($giteaissue->milestone) $milestoneid=$giteaissue->milestone->id; else $milestoneid=-100; if(!array_key_exists($milestoneid,$weights)) $weights[$milestoneid]=0; $weights[$milestoneid]=$weights[$milestoneid]+$issue->getWeight(); } } return new JsonResponse($weights); } public function ctrlchange(Request $request) { $em = $this->getDoctrine()->getManager(); $id=$request->get('id'); $scrum=$em->getRepository("App:Scrum")->find($id); if(!$scrum) return new JsonResponse(['message' => 'No Scrum'], 403); $lastupdate=$scrum->getUpdatedate(); $giteaissues=$this->giteaservice->getIssues($scrum->getGiteajson()["owner"]["login"],$scrum->getGiteajson()["name"]); if(!is_array($giteaissues)) die("Probleme de connexion avec gitea veuillez vous reconnecter"); foreach($giteaissues as $giteaissue) { // On ne prend pas les pull request if(!is_null($giteaissue->pull_request)) continue; $scrumissue=$em->getRepository("App:Scrumissue")->findOneBy(["scrum"=>$scrum,"giteaid"=>$giteaissue->id]); if(!$scrumissue) { return new JsonResponse(true); } $fgissueupdated=false; $updateissue=new \DateTime(json_decode(json_encode($giteaissue), true)["updated_at"]); $updateissue->setTimezone(new \DateTimeZone("UTC")); if($updateissue>$lastupdate) { $fgissueupdated=true; } if($fgissueupdated) return new JsonResponse(true); } return new JsonResponse(false); } }