giteaservice = $giteaservice; } public function getGitea($scrum,&$giteaassignees,&$giteacolumns,&$giteamilestones,&$gitealabels) { // Récupérer le dernier order $last = $this->_em->getRepository('App:Scrumissue')->findOneBy(["scrum"=>$scrum], ['rowid' => 'DESC']); if(!$last) $lastrowid=-1; else $lastrowid=$last->getRowid(); // Récupérer la premier column scrum $firstcolumn=$this->_em->getRepository('App:Scrumcolumn')->findOneBy(["scrum"=>$scrum], ['rowid' => 'ASC']); if(!$firstcolumn) return $this->redirectToRoute($this->route."_update",["id"=>$scrum->getId()]); // Récupérer la premier column scrum $columns=$this->_em->getRepository('App:Scrumcolumn')->findBy(["scrum"=>$scrum], ['rowid' => 'ASC']); $giteacolumns=[]; foreach($columns as $column) { array_push($giteacolumns,$column->getGiteaid()); } // Récupérer la orga de gitea if(!empty($scrum->getGiteajson()["owner"]["email"])) $giteaassignees=[$scrum->getGiteajson()["owner"]]; else $giteaassignees=[]; $giteateams=$this->giteaservice->getOrgateams($scrum->getGiteajson()["owner"]["login"]); if($giteateams&&is_array($giteateams)) { foreach($giteateams as $team) { $giteamembers=$this->giteaservice->getTeammembers($team->id); if($giteamembers&&is_array($giteamembers)) { foreach($giteamembers as $giteamember) { if(!in_array($giteamember,$giteaassignees)) array_push($giteaassignees,$giteamember); } } } } $giteacollaborators=$this->giteaservice->getCollaborators($scrum->getGiteajson()["owner"]["login"],$scrum->getGiteajson()["name"]); if(!is_array($giteacollaborators)) die("Probleme de connexion avec gitea veuillez vous reconnecter"); foreach($giteacollaborators as $giteacollaborator) { if(!in_array($giteacollaborator,$giteaassignees)) array_push($giteaassignees,$giteacollaborator); } // Récupérer les milestones de gitea $giteamilestones=$this->giteaservice->getMilestones($scrum->getGiteajson()["owner"]["login"],$scrum->getGiteajson()["name"]); if(!is_array($giteamilestones)) die("Probleme de connexion avec gitea veuillez vous reconnecter"); $keysort = array_column($giteamilestones, 'title'); array_multisort($keysort, SORT_DESC, $giteamilestones); // Récupérer les labels de gitea $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)) unset($gitealabels[$key]); } // Récupérer les issues de gitea $giteaissues=$this->giteaservice->getIssues($scrum->getGiteajson()["owner"]["login"],$scrum->getGiteajson()["name"]); if(!is_array($giteaissues)) die("Probleme de connexion avec gitea veuillez vous reconnecter"); // Génération des issues $tbgiteaissues=[]; $fgscrumupdate=false; $datescrumupdate=new \DateTime(); foreach($giteaissues as $giteaissue) { // On ne prend pas les pull request if(!is_null($giteaissue->pull_request)) { continue; } $scrumissue=$this->_em->getRepository("App:Scrumissue")->findOneBy(["scrum"=>$scrum,"giteaid"=>$giteaissue->id]); if(!$scrumissue) { $lastrowid++; $scrumissue=new Scrumissue(); $scrumissue->setScrum($scrum); $scrumissue->setRowid($lastrowid); $scrumissue->setGiteaid($giteaissue->id); } $fgissueupdated=false; if($scrumissue->getGiteajson()["updated_at"]!=json_decode(json_encode($giteaissue), true)["updated_at"]) $fgissueupdated=true; if($giteaissue->milestone&&$scrumissue->getGiteamilestonename()!=$giteaissue->milestone->title) $fgissueupdated=true; if(!$giteaissue->milestone&&!is_null($scrumissue->getGiteamilestone())) $fgissueupdated=true; //$fgissueupdated=true; if($fgissueupdated) { $fgscrumupdate=true; if($scrumissue->getGiteajson()["updated_at"]>$datescrumupdate) $datescrumupdate=$scrumissue->getGiteajson()["updated_at"]; $scrumissue->setGiteanumber($giteaissue->number); $scrumissue->setGiteastate($giteaissue->state); $scrumissue->setGiteatitle($giteaissue->title); if($giteaissue->milestone) { $scrumissue->setGiteamilestone($giteaissue->milestone->id); $scrumissue->setGiteamilestonename($giteaissue->milestone->title); } else { $scrumissue->setGiteamilestone(null); $scrumissue->setGiteamilestonename(null); } $scrumissue->setGiteajson(json_decode(json_encode($giteaissue), true)); $this->_em->persist($scrumissue); $this->_em->flush(); $havecolumn=false; foreach($giteaissue->labels as $gitealabel) { $scrumcolumn=$this->_em->getRepository('App:Scrumcolumn')->findOneBy(["giteaid"=>$gitealabel->id]); if($scrumcolumn) { $havecolumn=true; $scrumissue->setScrumcolumn($scrumcolumn); break; } } if(!$havecolumn) $scrumissue->setScrumcolumn($firstcolumn); // Sauvegarde de l'issue $this->_em->persist($scrumissue); $this->_em->flush(); } array_push($tbgiteaissues,$giteaissue->number); } $scrumissues=$scrum->getScrumissues(); foreach($scrumissues as $scrumissue) { if(!in_array($scrumissue->getGiteanumber(),$tbgiteaissues)) { $this->_em->remove($scrumissue); $this->_em->flush(); } } if($fgscrumupdate) { $scrum->setUpdatedate($datescrumupdate); $this->_em->persist($scrum); $this->_em->flush(); } } }