em = $em; $this->translator = $translator; $this->chillMainLogger = $chillMainLogger; $this->calculator = $calculator; } /** * @Route( * "{_locale}/budget/elements/by-person/{id}", * name="chill_budget_elements_index" * ) */ public function indexAction(Person $person) { $this->denyAccessUnlessGranted(BudgetElementVoter::SEE, $person); $charges = $this->em ->getRepository(Charge::class) ->findByPerson($person); $ressources = $this->em ->getRepository(Resource::class) ->findByPerson($person); $now = new DateTime('now'); $actualCharges = $this->em ->getRepository(Charge::class) ->findByEntityAndDate($person, $now); $actualResources = $this->em ->getRepository(Resource::class) ->findByEntityAndDate($person, $now); $elements = array_merge($actualCharges, $actualResources); if (count($elements) > 0) { $results = $this->calculator->calculateDefault($elements); } return $this->render('ChillBudgetBundle:Person:index.html.twig', [ 'person' => $person, 'charges' => $charges, 'resources' => $ressources, 'results' => $results ?? [], ]); } /** * @Route( * "{_locale}/budget/elements/by-household/{id}", * name="chill_budget_elements_household_index" * ) */ public function indexHouseholdAction(Household $household) { $this->denyAccessUnlessGranted(BudgetElementVoter::SEE, $household); $charges = $this->em ->getRepository(Charge::class) ->findByHousehold($household); $ressources = $this->em ->getRepository(Resource::class) ->findByHousehold($household); $now = new DateTime('now'); $actualCharges = $this->em ->getRepository(Charge::class) ->findByEntityAndDate($household, $now); $actualResources = $this->em ->getRepository(Resource::class) ->findByEntityAndDate($household, $now); $elements = array_merge($actualCharges, $actualResources); if (count($elements) > 0) { $results = $this->calculator->calculateDefault($elements); } // quick solution to calculate the sum, difference and amount from // controller. This should be done from the calculators // TODO replace this by calculators $wholeCharges = $actualCharges; $wholeResources = $actualResources; foreach ($household->getCurrentPersons() as $person) { $wholeCharges = array_merge( $wholeCharges, $this->em ->getRepository(Charge::class) ->findByEntityAndDate($person, $now) ); $wholeResources = array_merge( $wholeResources, $this->em ->getRepository(Resource::class) ->findByEntityAndDate($person, $now) ); } return $this->render('ChillBudgetBundle:Household:index.html.twig', [ 'household' => $household, 'charges' => $charges, 'resources' => $ressources, 'wholeResources' => array_filter($wholeResources, static function (Resource $r) use ($now) { return $r->getStartDate() <= $now && ($r->getEndDate() === null || $r->getEndDate() >= $now); }), 'wholeCharges' => array_filter($wholeCharges, static function (Charge $c) use ($now) { return $c->getStartDate() <= $now && ($c->getEndDate() === null || $c->getEndDate() >= $now); }), 'results' => $results ?? [], ]); } }