Files
ninemine/src/Controller/HomeController.php
2025-07-06 22:56:43 +02:00

88 lines
2.9 KiB
PHP

<?php
namespace App\Controller;
use App\Repository\IssueRepository;
use App\Service\RedmineService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class HomeController extends AbstractController
{
private RedmineService $redmineService;
public function __construct(RedmineService $redmineService)
{
$this->redmineService = $redmineService;
}
#[Route('/', name: 'app_home')]
public function home(Request $request): Response
{
$project = $request->getSession()->get('project');
if (!$project) {
return $this->noproject();
}
$redmine = $this->redmineService->getProject($project->getId(), $this->getParameter('redmineApikey'));
$project->setRedmine($redmine);
$this->redmineService->majProjectIssues($project, $this->getParameter('redmineApikey'), false);
$predmine = $project->getRedmine();
foreach ($project->getIssues() as $issue) {
foreach ($predmine['sprints'] as $key => $sprint) {
if ($sprint['id'] === $issue->getRedmine()['sprint']['agile_sprint_id']) {
if (!array_key_exists('story_points', $predmine['sprints'][$key])) {
$predmine['sprints'][$key]['story_points']['total'] = 0;
}
$predmine['sprints'][$key]['story_points']['total'] += $issue->getRedmine()['sprint']['story_points'];
if (!array_key_exists($issue->getRedmine()['status']['id'], $predmine['sprints'][$key]['story_points'])) {
$predmine['sprints'][$key]['story_points'][$issue->getRedmine()['status']['id']] = 0;
}
$predmine['sprints'][$key]['story_points'][$issue->getRedmine()['status']['id']] += $issue->getRedmine()['sprint']['story_points'];
}
}
}
$project->setRedmine($predmine);
return $this->render('home/home.html.twig', [
'usemenu' => true,
'usesidebar' => false,
'project' => $project,
]);
}
#[Route('/admin', name: 'app_admin')]
public function admin(): Response
{
return $this->render('home/blank.html.twig', [
'usemenu' => true,
'usesidebar' => true,
]);
}
#[Route('/noproject', name: 'app_noproject')]
public function noproject(): Response
{
return $this->render('home/noproject.html.twig', [
'usemenu' => true,
'usesidebar' => false,
]);
}
#[Route('/user/issue/{id}', name: 'issue_view')]
public function view(int $id, IssueRepository $issueRepository): Response
{
$issue = $issueRepository->find($id);
return $this->render('issue/view.html.twig', [
'issue' => $issue,
]);
}
}