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'); if($oldcolumn!=$newcolumn||$oldmilestone!=$newmilestone) { // 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); } // 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); $updatedate=new \DateTime($giteaissue->updated_at); if($updatedate > $scrumissue->getScrum()->getUpdatedate()) { $scrumissue->getScrum()->setUpdatedate(new \DateTime($giteaissue->updated_at)); $em->persist($scrumissue->getScrum()); $em->flush(); return new JsonResponse($updatedate->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 ctrlchange(Request $request) { $em = $this->getDoctrine()->getManager(); $id=$request->get('id'); $lastupdate=new \DateTime($request->get('lastupdate')); $scrum=$em->getRepository("App:Scrum")->find($id); if(!$scrum) return new JsonResponse(['message' => 'No Scrum'], 403); $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; $updatedate=new \DateTime(json_decode(json_encode($giteaissue), true)["updated_at"]); if($updatedate>$lastupdate) { $fgissueupdated=true; } if($fgissueupdated) return new JsonResponse(true); } return new JsonResponse(false); } }