<?php
namespace App\Controller;
use App\Entity\Operacje;
use App\Entity\Rodzaje;
use App\Repository\PlanRepository;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class DefaultController extends AbstractController
{
/**
* @Route("/", name="app_homepage")
*/
public function index(EntityManagerInterface $entityManager, Request $request, PlanRepository $planRepository): Response
{
// $year = (int)($request->query->get('year') ?? date('Y'));
//
// // Pobieramy dane z tabeli operacje
// $startDate = new \DateTime("$year-01-01 00:00:00");
// $endDate = new \DateTime("$year-12-31 23:59:59");
//
// $query = $entityManager->createQuery(
// 'SELECT o, r
// FROM App\Entity\Operacje o
// JOIN o.rodzaj r
// WHERE o.dataOperacji BETWEEN :startDate AND :endDate
// ORDER BY o.dataOperacji ASC'
// )
// ->setParameter('startDate', $startDate)
// ->setParameter('endDate', $endDate);
//
// $operacje = $query->getResult();
//
// // Pobieramy wszystkie unikalne daty operacji
// $allDates = $entityManager->createQuery(
// 'SELECT DISTINCT o.dataOperacji
// FROM App\Entity\Operacje o
// WHERE o.dataOperacji IS NOT NULL'
// )->getResult();
//
// // Wyciągamy unikalne lata z dat
// $availableYears = [];
// foreach ($allDates as $dateItem) {
// $date = $dateItem['dataOperacji'];
// if ($date instanceof \DateTimeInterface) {
// $currentYear = (int)$date->format('Y');
// $availableYears[$currentYear] = $currentYear; // Używamy klucza, aby zapewnić unikalność
// }
// }
//
// // Sortujemy lata malejąco
// krsort($availableYears);
// $availableYears = array_values($availableYears);
//
// // Jeśli nie ma jeszcze żadnych danych, używamy bieżącego roku
// if (empty($availableYears)) {
// $availableYears = [(int)date('Y')];
// }
//
// // Sortuj lata malejąco
// rsort($availableYears);
//
// // Miesiące po polsku
// $miesiace = [
// 'Styczeń', 'Luty', 'Marzec', 'Kwiecień', 'Maj', 'Czerwiec',
// 'Lipiec', 'Sierpień', 'Wrzesień', 'Październik', 'Listopad', 'Grudzień'
// ];
//
// // Pobieramy plany z bazy danych
// $planPrzychodow = array_fill(0, 12, 0);
// $planWydatkow = array_fill(0, 12, 0);
//
// // Ustawiamy daty na początek i koniec roku
// $startDate = new \DateTime("$year-01-01");
// $endDate = new \DateTime("$year-12-31 23:59:59");
//
// // Pobieramy plany dla danego roku
// $plany = $planRepository->createQueryBuilder('p')
// ->where('(p.dataOd <= :endDate AND (p.dataDo >= :startDate OR p.dataDo IS NULL))')
// ->setParameter('startDate', $startDate)
// ->setParameter('endDate', $endDate)
// ->getQuery()
// ->getResult();
//
// // Przetwarzamy plany i przypisujemy do odpowiednich miesięcy
// foreach ($plany as $plan) {
// $kwota = (float) $plan->getKwota();
// $dataOd = $plan->getDataOd() ?: $startDate;
// $dataDo = $plan->getDataDo() ?: $endDate;
//
// // Sprawdzamy, czy to jest plan przychodów czy wydatków
// $isPrzychod = $plan->getPrzychod() !== null;
//
// // Dla każdego miesiąca sprawdzamy, czy plan jest aktywny
// for ($miesiac = 0; $miesiac < 12; $miesiac++) {
// $miesiacStart = new \DateTime("$year-" . ($miesiac + 1) . "-01");
// $miesiacEnd = (clone $miesiacStart)->modify('last day of this month')->setTime(23, 59, 59);
//
// // Sprawdzamy, czy plan jest aktywny w danym miesiącu
// if ($miesiacStart <= $dataDo && $miesiacEnd >= $dataOd) {
// if ($isPrzychod) {
// $planPrzychodow[$miesiac] += $kwota;
// } else {
// $planWydatkow[$miesiac] += $kwota;
// }
// }
// }
// }
//
// // Inicjalizujemy tablice danych
// $danePrzychodow = array_fill(0, 12, 0);
// $daneWydatkow = array_fill(0, 12, 0);
//
// // Przygotowujemy dane do wykresu
// $daneWykresu = [
// 'labels' => $miesiace,
// 'przychody' => $danePrzychodow,
// 'wydatki' => $daneWydatkow,
// 'plan_przychodow' => $planPrzychodow,
// 'plan_wydatkow' => $planWydatkow
// ];
//
// // Debug: Zapisujemy dane do loga
// error_log('Dane wykresu: ' . print_r($daneWykresu, true));
//
// // Debug: Wyświetlamy dane w odpowiedzi HTTP
// $response = new Response();
// $response->headers->set('Content-Type', 'application/json');
// $response->setContent(json_encode($daneWykresu, JSON_PRETTY_PRINT));
// // Odkomentuj poniższą linię, aby zobaczyć dane w przeglądarce
// // return $response;
//
// // Uzupełniamy dane przychodów i wydatków
// foreach ($operacje as $operacja) {
// if (!$operacja->getDataOperacji()) {
// continue; // Pomijamy operacje bez daty
// }
//
// $miesiac = (int)$operacja->getDataOperacji()->format('n') - 1; // 0-11
// $kwota = (float)$operacja->getKwota();
//
// if ($operacja->getRodzaj()) {
// $nazwaRodzaju = strtolower($operacja->getRodzaj()->getNazwa() ?? '');
//
// if (strpos($nazwaRodzaju, 'przychód') !== false || strpos($nazwaRodzaju, 'przychod') !== false) {
// $daneWykresu['przychody'][$miesiac] += $kwota;
// } else {
// $daneWykresu['wydatki'][$miesiac] += $kwota;
// }
// }
// }
return $this->render('index.html.twig', [
'info' => 'Witaj!'
// ,
// 'chart_data' => $daneWykresu,
// 'current_year' => $year,
// 'available_years' => $availableYears
]);
}
}