src/Controller/DefaultController.php line 19

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Operacje;
  4. use App\Entity\Rodzaje;
  5. use App\Repository\PlanRepository;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. class DefaultController extends AbstractController
  12. {
  13.     /**
  14.      * @Route("/", name="app_homepage")
  15.      */
  16.     public function index(EntityManagerInterface $entityManagerRequest $requestPlanRepository $planRepository): Response
  17.     {
  18. //        $year = (int)($request->query->get('year') ?? date('Y'));
  19. //
  20. //        // Pobieramy dane z tabeli operacje
  21. //        $startDate = new \DateTime("$year-01-01 00:00:00");
  22. //        $endDate = new \DateTime("$year-12-31 23:59:59");
  23. //
  24. //        $query = $entityManager->createQuery(
  25. //            'SELECT o, r
  26. //            FROM App\Entity\Operacje o
  27. //            JOIN o.rodzaj r
  28. //            WHERE o.dataOperacji BETWEEN :startDate AND :endDate
  29. //            ORDER BY o.dataOperacji ASC'
  30. //        )
  31. //        ->setParameter('startDate', $startDate)
  32. //        ->setParameter('endDate', $endDate);
  33. //
  34. //        $operacje = $query->getResult();
  35. //
  36. //        // Pobieramy wszystkie unikalne daty operacji
  37. //        $allDates = $entityManager->createQuery(
  38. //            'SELECT DISTINCT o.dataOperacji
  39. //             FROM App\Entity\Operacje o
  40. //             WHERE o.dataOperacji IS NOT NULL'
  41. //        )->getResult();
  42. //
  43. //        // Wyciągamy unikalne lata z dat
  44. //        $availableYears = [];
  45. //        foreach ($allDates as $dateItem) {
  46. //            $date = $dateItem['dataOperacji'];
  47. //            if ($date instanceof \DateTimeInterface) {
  48. //                $currentYear = (int)$date->format('Y');
  49. //                $availableYears[$currentYear] = $currentYear; // Używamy klucza, aby zapewnić unikalność
  50. //            }
  51. //        }
  52. //
  53. //        // Sortujemy lata malejąco
  54. //        krsort($availableYears);
  55. //        $availableYears = array_values($availableYears);
  56. //
  57. //        // Jeśli nie ma jeszcze żadnych danych, używamy bieżącego roku
  58. //        if (empty($availableYears)) {
  59. //            $availableYears = [(int)date('Y')];
  60. //        }
  61. //
  62. //        // Sortuj lata malejąco
  63. //        rsort($availableYears);
  64. //
  65. //        // Miesiące po polsku
  66. //        $miesiace = [
  67. //            'Styczeń', 'Luty', 'Marzec', 'Kwiecień', 'Maj', 'Czerwiec',
  68. //            'Lipiec', 'Sierpień', 'Wrzesień', 'Październik', 'Listopad', 'Grudzień'
  69. //        ];
  70. //
  71. //        // Pobieramy plany z bazy danych
  72. //        $planPrzychodow = array_fill(0, 12, 0);
  73. //        $planWydatkow = array_fill(0, 12, 0);
  74. //
  75. //        // Ustawiamy daty na początek i koniec roku
  76. //        $startDate = new \DateTime("$year-01-01");
  77. //        $endDate = new \DateTime("$year-12-31 23:59:59");
  78. //
  79. //        // Pobieramy plany dla danego roku
  80. //        $plany = $planRepository->createQueryBuilder('p')
  81. //            ->where('(p.dataOd <= :endDate AND (p.dataDo >= :startDate OR p.dataDo IS NULL))')
  82. //            ->setParameter('startDate', $startDate)
  83. //            ->setParameter('endDate', $endDate)
  84. //            ->getQuery()
  85. //            ->getResult();
  86. //
  87. //        // Przetwarzamy plany i przypisujemy do odpowiednich miesięcy
  88. //        foreach ($plany as $plan) {
  89. //            $kwota = (float) $plan->getKwota();
  90. //            $dataOd = $plan->getDataOd() ?: $startDate;
  91. //            $dataDo = $plan->getDataDo() ?: $endDate;
  92. //
  93. //            // Sprawdzamy, czy to jest plan przychodów czy wydatków
  94. //            $isPrzychod = $plan->getPrzychod() !== null;
  95. //
  96. //            // Dla każdego miesiąca sprawdzamy, czy plan jest aktywny
  97. //            for ($miesiac = 0; $miesiac < 12; $miesiac++) {
  98. //                $miesiacStart = new \DateTime("$year-" . ($miesiac + 1) . "-01");
  99. //                $miesiacEnd = (clone $miesiacStart)->modify('last day of this month')->setTime(23, 59, 59);
  100. //
  101. //                // Sprawdzamy, czy plan jest aktywny w danym miesiącu
  102. //                if ($miesiacStart <= $dataDo && $miesiacEnd >= $dataOd) {
  103. //                    if ($isPrzychod) {
  104. //                        $planPrzychodow[$miesiac] += $kwota;
  105. //                    } else {
  106. //                        $planWydatkow[$miesiac] += $kwota;
  107. //                    }
  108. //                }
  109. //            }
  110. //        }
  111. //
  112. //        // Inicjalizujemy tablice danych
  113. //        $danePrzychodow = array_fill(0, 12, 0);
  114. //        $daneWydatkow = array_fill(0, 12, 0);
  115. //
  116. //        // Przygotowujemy dane do wykresu
  117. //        $daneWykresu = [
  118. //            'labels' => $miesiace,
  119. //            'przychody' => $danePrzychodow,
  120. //            'wydatki' => $daneWydatkow,
  121. //            'plan_przychodow' => $planPrzychodow,
  122. //            'plan_wydatkow' => $planWydatkow
  123. //        ];
  124. //
  125. //        // Debug: Zapisujemy dane do loga
  126. //        error_log('Dane wykresu: ' . print_r($daneWykresu, true));
  127. //
  128. //        // Debug: Wyświetlamy dane w odpowiedzi HTTP
  129. //        $response = new Response();
  130. //        $response->headers->set('Content-Type', 'application/json');
  131. //        $response->setContent(json_encode($daneWykresu, JSON_PRETTY_PRINT));
  132. //        // Odkomentuj poniższą linię, aby zobaczyć dane w przeglądarce
  133. //        // return $response;
  134. //
  135. //        // Uzupełniamy dane przychodów i wydatków
  136. //        foreach ($operacje as $operacja) {
  137. //            if (!$operacja->getDataOperacji()) {
  138. //                continue; // Pomijamy operacje bez daty
  139. //            }
  140. //
  141. //            $miesiac = (int)$operacja->getDataOperacji()->format('n') - 1; // 0-11
  142. //            $kwota = (float)$operacja->getKwota();
  143. //
  144. //            if ($operacja->getRodzaj()) {
  145. //                $nazwaRodzaju = strtolower($operacja->getRodzaj()->getNazwa() ?? '');
  146. //
  147. //                if (strpos($nazwaRodzaju, 'przychód') !== false || strpos($nazwaRodzaju, 'przychod') !== false) {
  148. //                    $daneWykresu['przychody'][$miesiac] += $kwota;
  149. //                } else {
  150. //                    $daneWykresu['wydatki'][$miesiac] += $kwota;
  151. //                }
  152. //            }
  153. //        }
  154.         
  155.         return $this->render('index.html.twig', [
  156.             'info' => 'Witaj!'
  157. //            ,
  158. //            'chart_data' => $daneWykresu,
  159. //            'current_year' => $year,
  160. //            'available_years' => $availableYears
  161.         ]);
  162.     }
  163. }