From 56526cb8ce774ff306d2b8a2a246acd032716826 Mon Sep 17 00:00:00 2001 From: Skylar Ittner Date: Thu, 20 Feb 2020 18:07:41 -0700 Subject: [PATCH] Add child_care field for adults with young children --- action.php | 13 ++++++-- database.mwb | Bin 13686 -> 13699 bytes langs/en/labels.json | 3 ++ lib/reports.php | 63 +++++++++++++++++++++++++++++++++++++- pages/editperson.php | 16 ++++++++-- pages/reports.php | 22 ++++++++++--- public/actions/submit.php | 8 +++++ 7 files changed, 116 insertions(+), 9 deletions(-) diff --git a/action.php b/action.php index 1fffd9a..9636c47 100644 --- a/action.php +++ b/action.php @@ -58,6 +58,7 @@ switch ($VARS['action']) { "den" => "", "health" => "", "notes" => "", + "child_care" => null, "position" => "" ]; if (!empty($VARS['personid']) && $database->has("people", ['personid' => $VARS['personid']])) { @@ -204,9 +205,18 @@ switch ($VARS['action']) { } break; case "adult": + if (!empty($people["child_care"])) { + $items = preg_split("/[^\d]+/", $people["child_care"]); + $ages = []; + foreach ($items as $it) { + $ages[] = $it; + } + $people["child_care"] = implode(",", $ages); + } $data = [ "position" => $people["position"], - "days" => $days + "days" => $days, + "child_care" => empty($people["child_care"]) ? null : $people["child_care"] ]; if ($editing) { $database->update("adults", $data, ['adultid' => $person['adultid']]); @@ -255,7 +265,6 @@ switch ($VARS['action']) { } else { $database->insert("people", $data); } - } catch (Exception $ex) { errorBack($ex->getMessage()); } diff --git a/database.mwb b/database.mwb index 4ede81300e4fe3e96867152a1a8318e635cfd190..c374162deaad5cfd60858c34acd3fe51eed114d1 100644 GIT binary patch delta 11489 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 C;r+M( diff --git a/langs/en/labels.json b/langs/en/labels.json index 133c2c2..a8e3369 100644 --- a/langs/en/labels.json +++ b/langs/en/labels.json @@ -33,6 +33,9 @@ "Den": "Den", "Health": "Health", "Notes": "Notes", + "Child Care Ages": "Child Care Ages", + "Age": "Age", + "Count": "Count", "Total": "Total", "Yes": "Yes", "No": "No", diff --git a/lib/reports.php b/lib/reports.php index 94c6d38..e17d64d 100644 --- a/lib/reports.php +++ b/lib/reports.php @@ -29,7 +29,7 @@ if (LOADED) { /** * Get a 2d array of the families in the database. * @global type $database - * @param array $filter Medoo WHERE clause. + * @param string $filter * @return string */ function getPeopleReport($filter = ""): Report { @@ -80,6 +80,7 @@ function getPeopleReport($filter = ""): Report { $Strings->get("Position", false), $Strings->get("Shirt", false), $Strings->get("Sex", false), + $Strings->get("Child Care Ages", false), $Strings->get("Notes", false) ]; break; @@ -168,6 +169,7 @@ function getPeopleReport($filter = ""): Report { $p['position'], $p['shirt'], $p['sex'], + $p['child_care'], $p['notes'] ]; break; @@ -208,6 +210,62 @@ function getPeopleReport($filter = ""): Report { return $report; } +/** + * Get a report of the children who need child care. + * @global type $database + * @return string + */ +function getChildCareReport(): Report { + global $database, $Strings; + + if (empty($filter)) { + $report = new Report($Strings->get("Child Care Ages", false)); + $filter = ["ORDER" => ["familyname" => "ASC"]]; + } else { + $report = new Report($Strings->get("$filter", false)); + } + + $join = []; + $where = []; + + $header = [ + $Strings->get("Age", false), + $Strings->get("Count", false) + ]; + + + $results = $database->select("adults", 'child_care', ["child_care[!]" => null]); + + + $report->setHeader($header); + + $ages = []; + + $totalcount = 0; + + foreach ($results as $r) { + $items = preg_split("/[^\d]+/", $r); + foreach ($items as $it) { + if (!isset($ages[$it])) { + $ages[$it] = 1; + } else { + $ages[$it]++; + } + $totalcount++; + } + } + + ksort($ages); + + foreach ($ages as $age => $count) { + $report->addDataRow(["$age", "$count"]); + } + + $report->addDataRow([$Strings->get("Total", false), "$totalcount"]); + + return $report; +} + function getReport($type): Report { switch ($type) { case "campers": @@ -222,6 +280,9 @@ function getReport($type): Report { case "people": return getPeopleReport(""); break; + case "childcare": + return getChildCareReport(); + break; default: return new Report("error", ["ERROR"], ["Invalid report type."]); } diff --git a/pages/editperson.php b/pages/editperson.php index 7ce04ca..f22b185 100644 --- a/pages/editperson.php +++ b/pages/editperson.php @@ -29,7 +29,8 @@ $data = [ "days" => "", "den" => "", "health" => "", - "notes" => "" + "notes" => "", + "child_care" => "" ]; $type = "camper"; if (!empty($VARS['type']) && preg_match("/(camper|adult|youth)/", $VARS['type'])) { @@ -58,7 +59,7 @@ if (!empty($VARS['id']) && $database->has('people', ['personid' => $VARS['id']]) $data = array_merge($data, $database->get('campers', ['parentname', 'rank', 'den', 'health'], ['camperid' => $data["camperid"]])); } else if (!empty($data["adultid"])) { $type = "adult"; - $data = array_merge($data, $database->get('adults', ['days', 'position'], ['adultid' => $data["adultid"]])); + $data = array_merge($data, $database->get('adults', ['days', 'position', 'child_care'], ['adultid' => $data["adultid"]])); } else if (!empty($data["youthid"])) { $type = "youth"; $data = array_merge($data, $database->get('youth', ['days', 'position', 'parentname'], ['youthid' => $data["youthid"]])); @@ -382,6 +383,17 @@ if (!empty($VARS['id']) && $database->has('people', ['personid' => $VARS['id']]) ] ]); } + if ($type == "adult") { + $textboxes = array_merge($textboxes, [ + [ + "label" => "Child care ages", + "name" => "child_care", + "optional" => true, + "width" => 6, + "value" => $data["child_care"] + ], + ]); + } $textboxes = array_merge($textboxes, [ [ "label" => "Notes", diff --git a/pages/reports.php b/pages/reports.php index 93ba6de..c48d228 100644 --- a/pages/reports.php +++ b/pages/reports.php @@ -15,7 +15,7 @@
-
+ - \ No newline at end of file diff --git a/public/actions/submit.php b/public/actions/submit.php index 0fb7515..cc46318 100644 --- a/public/actions/submit.php +++ b/public/actions/submit.php @@ -160,6 +160,14 @@ $database->action(function($database) { $dueusd += 10.0; } } + if (!empty($people["child_care"][$pid])) { + $items = preg_split("/[^\d]+/", $people["child_care"][$pid]); + $ages = []; + foreach ($items as $it) { + $ages[] = $it; + } + $people["child_care"][$pid] = implode(",", $ages); + } $database->insert("adults", [ "position" => $people["position"][$pid], "days" => $days,