public function buildItem(&$item) { $container = $this->slim->getContainer(); $db = $container->medoo; $dateRegex = "/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])\$/"; $item["age"] = preg_match($dateRegex, $item["birth_date"]) ? \DateTime::createFromFormat('Y-m-d', $item["birth_date"])->diff(new \DateTime('now'))->y : null; $item["die_date"] = preg_match($dateRegex, $item["die_date"]) ? $this->budDate($item["die_date"]) : null; $item["reg_date"] = preg_match($dateRegex, $item["reg_date"]) ? $this->budDate($item["reg_date"]) : null; $item["birth_date"] = preg_match($dateRegex, $item["birth_date"]) ? $this->budDate($item["birth_date"]) : null; $oldersService = XMLService::getInstance("olders"); $cripplesService = new CrippleService($db); $disavantagedsService = new DisavantagedService($db); $scholarsService = new ScholarService($db); $item["older"] = $oldersService->getBy(["min[<=]" => $item["age"], "max[>=]" => $item["age"]]); $item["cripple"] = $db->select("person_cripple", ["[>]cripple_type" => ["cripple_id" => "id"]], "*", ["person_id" => $item["id"]]); $item["disavantaged"] = $db->select("person_disavantaged", ["[>]disavantaged_type" => ["disavantaged_id" => "id"]], "*", ["person_id" => $item["id"]]); $item["scholar"] = $db->select("person_scholar", ["[>]scholar_type" => ["scholar_id" => "id"]], "*", ["person_id" => $item["id"]]); $item["total_allowance"] = 0; $item["total_allowance"] += $item["is_older"] ? @$item["older"]["allowance"] : 0; // foreach($item["cripple"] as $val) { // $item["total_allowance"] += $val["allowance"]; // } // foreach($item["disavantaged"] as $val) { // $item["total_allowance"] += $val["allowance"]; // } // foreach($item["scholar"] as $val) { // $item["total_allowance"] += $val["allowance"]; // } $item["total_allowance"] += count($item["cripple"]) > 0 ? 800 : 0; $item["total_allowance"] += count($item["disavantaged"]) > 0 ? 500 : 0; // $item["total_allowance"] += count($item["scholar"]); }
public function older(Request $req, Response $res) { $container = $this->slim->getContainer(); $db = $container->medoo; $oldersService = XMLService::getInstance("olders"); $olders = $oldersService->gets(); foreach ($olders as &$older) { $dateMin = new \DateTime('now'); $dateMax = new \DateTime('now'); $where = []; $dateMin->sub(new \DateInterval('P' . $older["min"] . 'Y')); $where["birth_date[<=]"] = $dateMin->format("Y-m-d"); if ($older["min"] < 90) { $dateMax->sub(new \DateInterval('P' . ($older["max"] + 1) . 'Y')); $where["birth_date[>]"] = $dateMax->format("Y-m-d"); } $where = ["AND" => $where]; $older["count"] = $db->count("person", ["AND" => $where]); } return $container->view->render($res, "report/older.twig", ["olders" => $olders, "today" => $this->getToday()]); }