From 628366379b28354934bb9933b3d7d42da50d74f1 Mon Sep 17 00:00:00 2001 From: Skylar Ittner Date: Mon, 11 Mar 2019 18:53:47 -0600 Subject: [PATCH] Add family ID search tool, fixes --- action.php | 46 ++++++++++++++++++++++------------- database.mwb | Bin 13333 -> 13412 bytes langs/messages.php | 16 +++++-------- pages.php | 6 +++-- pages/editpayment.php | 49 +++++++++++++++++++++++++++++++++++--- pages/editperson.php | 47 +++++++++++++++++++++++++++++++++--- static/js/families.js | 34 -------------------------- static/js/familysearch.js | 24 +++++++++++++++++++ 8 files changed, 153 insertions(+), 69 deletions(-) delete mode 100644 static/js/families.js create mode 100644 static/js/familysearch.js diff --git a/action.php b/action.php index da11934..82b702d 100644 --- a/action.php +++ b/action.php @@ -83,8 +83,9 @@ switch ($VARS['action']) { global $person, $VARS, $editing; try { - - if ($editing) { + if (!empty($VARS['familyid']) && $database->has('families', ['familyid' => $VARS['familyid']])) { + $familyid = $VARS['familyid']; + } else if ($editing) { $familyid = $person['familyid']; } else { $database->insert("families", []); @@ -132,7 +133,8 @@ switch ($VARS['action']) { "Station", "Tot Lot", "Floater" - ] + ], + "parentname" => ".+" ]); break; default: @@ -208,7 +210,8 @@ switch ($VARS['action']) { case "youth": $data = [ "position" => $people["position"], - "days" => $days + "days" => $days, + "parentname" => $people["parentname"] ]; if ($editing) { $database->update("youth", $data, ['youthid' => $person['youthid']]); @@ -219,7 +222,6 @@ switch ($VARS['action']) { break; } - $data = [ "familyid" => $familyid, "camperid" => $camperid, @@ -242,6 +244,7 @@ switch ($VARS['action']) { } else { $database->insert("people", $data); } + } catch (Exception $ex) { errorBack($ex->getMessage()); } @@ -266,15 +269,15 @@ switch ($VARS['action']) { } break; case "editpayment": - if (!(new User($_SESSION['uid']))->hasPermission("HACHEPORTAL_EDIT")) { - returnToSender("no_permission"); - } if (!$database->has("families", ['familyid' => $VARS['familyid']])) { returnToSender("invalid_parameters"); } if (!is_numeric($VARS["amount"]) || $VARS["amount"] < 0) { returnToSender("invalid_parameters"); } + if (!is_numeric($VARS["amountpaid"]) || $VARS["amountpaid"] < 0) { + returnToSender("invalid_parameters"); + } if (empty($VARS['date']) || strtotime($VARS['date']) === false) { returnToSender("invalid_parameters"); } @@ -282,7 +285,7 @@ switch ($VARS['action']) { $database->update("payments", [ "familyid" => $VARS["familyid"], "amount" => $VARS["amount"], - "paid" => !empty($VARS["paid"]) && $VARS["paid"] == "1" ? true : false, + "amountpaid" => $VARS["amountpaid"], "date" => date("Y-m-d H:i:s", strtotime($VARS['date'])), "type" => $VARS["type"] ], [ @@ -293,19 +296,28 @@ switch ($VARS['action']) { $database->insert("payments", [ "familyid" => $VARS["familyid"], "amount" => $VARS["amount"], - "paid" => !empty($VARS["paid"]) && $VARS["paid"] == "1" ? true : false, + "amountpaid" => $VARS["amountpaid"], "date" => date("Y-m-d H:i:s", strtotime($VARS['date'])), "type" => $VARS["type"] ]); $paymentid = $database->id(); - $family = (new Family())->load($VARS['familyid']); - if ($family->getExpires() < time()) { - $family->setExpires(strtotime("+1 year")); - } else { - $family->setExpires(strtotime("+1 year", $family->getExpires())); - } - $family->save(); } returnToSender("payment_saved", "&id=$paymentid"); break; + case "familysearch": + $people = $database->select('people', ['familyid (id)', 'firstname', 'lastname'], ['OR' => ['familyid' => $VARS['q'], 'lastname[~]' => $VARS['q'], 'firstname[~]' => $VARS['q']]]); + $data = []; + foreach ($people as $p) { + $data[$p['id']]['names'][] = $p['firstname'] . " " . $p['lastname']; + $data[$p['id']]['id'] = $p['id']; + } + $out = []; + foreach ($data as $i) { + $out[] = [ + 'id' => $i['id'], + 'name' => implode(", ", $i['names']) + ]; + } + header('Content-Type: application/json'); + echo json_encode($out); } \ No newline at end of file diff --git a/database.mwb b/database.mwb index 7b28f0c296c17275cb8b13eb0d6676964c059091..416b04693dd67c6a2258fd6829e5a9472c21190c 100644 GIT binary patch literal 13412 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 literal 13333 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 "You do not have permission to do that.", "type" => "danger" ], - "family_doesnt_exist" => [ - "string" => "That family ID does not exist.", + "person_doesnt_exist" => [ + "string" => "That person does not exist.", "type" => "warning" ], - "family_saved" => [ - "string" => "Family saved.", + "person_saved" => [ + "string" => "Person saved.", "type" => "success" ], - "family_deleted" => [ - "string" => "Family deleted.", - "type" => "success" - ], - "events_updated" => [ - "string" => "Events updated.", + "person_deleted" => [ + "string" => "Person deleted.", "type" => "success" ], "payment_saved" => [ diff --git a/pages.php b/pages.php index 3cc7a78..de0a66a 100644 --- a/pages.php +++ b/pages.php @@ -27,7 +27,8 @@ define("PAGES", [ "editperson" => [ "title" => "Edit Person", "scripts" => [ - "static/js/editperson.js" + "static/js/editperson.js", + "static/js/familysearch.js" ], ], "confirmdelete" => [ @@ -49,7 +50,8 @@ define("PAGES", [ "editpayment" => [ "title" => "Edit Payment", "scripts" => [ - "static/js/editpayment.js" + "static/js/editpayment.js", + "static/js/familysearch.js" ] ], "reports" => [ diff --git a/pages/editpayment.php b/pages/editpayment.php index dbb7f15..f22e4b4 100644 --- a/pages/editpayment.php +++ b/pages/editpayment.php @@ -16,10 +16,10 @@ $editing = false; $data = [ "id" => "", "family" => "", - "amount" => 1.0, + "amount" => 0.0, + "amountpaid" => 0.0, "date" => date("Y-m-d"), - "type" => "", - "paid" => true + "type" => "" ]; if (!empty($_GET['id']) && $database->has('payments', ['paymentid' => $_GET['id']])) { @@ -30,6 +30,24 @@ if (!empty($_GET['id']) && $database->has('payments', ['paymentid' => $_GET['id' } ?> + +
@@ -52,6 +70,29 @@ if (!empty($_GET['id']) && $database->has('payments', ['paymentid' => $_GET['id'
+
+
+ +
+
+ +
+ +
+ Enter a family ID. +
+
+
+
+ + has('payments', ['paymentid' => $_GET['id' "Online" => "Online", "Cash" => "Cash", "Check" => "Check", + "Camp Coupon/Scout Bucks" => "Camp Coupon/Scout Bucks", "Free" => "Free", + "Multiple" => "Multiple", "Other" => "Other" ], "width" => 3, diff --git a/pages/editperson.php b/pages/editperson.php index 5875e19..eb73f6e 100644 --- a/pages/editperson.php +++ b/pages/editperson.php @@ -10,6 +10,7 @@ redirectIfNotLoggedIn(); $editing = false; $data = [ "id" => null, + "familyid" => "", "camperid" => null, "adultid" => null, "youthid" => null, @@ -34,6 +35,7 @@ if (!empty($VARS['type']) && preg_match("/(camper|adult|youth)/", $VARS['type']) if (!empty($VARS['id']) && $database->has('people', ['personid' => $VARS['id']])) { $personid = $VARS['id']; $data = $database->get('people', ['personid (id)', + 'familyid', 'camperid', 'adultid', 'youthid', @@ -55,12 +57,30 @@ if (!empty($VARS['id']) && $database->has('people', ['personid' => $VARS['id']]) $data = array_merge($data, $database->get('adults', ['days', 'position'], ['adultid' => $data["adultid"]])); } else if (!empty($data["youthid"])) { $type = "youth"; - $data = array_merge($data, $database->get('youth', ['days', 'position'], ['youthid' => $data["youthid"]])); + $data = array_merge($data, $database->get('youth', ['days', 'position', 'parentname'], ['youthid' => $data["youthid"]])); } $editing = true; } ?> + +
@@ -88,20 +108,41 @@ if (!empty($VARS['id']) && $database->has('people', ['personid' => $VARS['id']])
+
+
+ +
+
+ +
+ +
+ Enter a family ID. +
+
+
+
+ "First Name", "name" => "firstname", "maxlength" => 255, - "width" => 6, + "width" => 5, "value" => $data["firstname"], "error" => "Enter the person's first name." ], [ "label" => "Last Name", "name" => "lastname", - "width" => 6, + "width" => 5, "maxlength" => 255, "value" => $data["lastname"], "error" => "Enter the person's last name." diff --git a/static/js/families.js b/static/js/families.js deleted file mode 100644 index 60d92eb..0000000 --- a/static/js/families.js +++ /dev/null @@ -1,34 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -$('#famtable').DataTable({ - responsive: { - details: { - display: $.fn.dataTable.Responsive.display.modal({ - header: function (row) { - var data = row.data(); - return " " + data[2]; - } - }), - renderer: $.fn.dataTable.Responsive.renderer.tableAll({ - tableClass: 'table' - }), - type: "column" - } - }, - columnDefs: [ - { - targets: 0, - className: 'control', - orderable: false - }, - { - targets: 1, - orderable: false - } - ], - order: [ - [2, 'asc'] - ] -}); \ No newline at end of file diff --git a/static/js/familysearch.js b/static/js/familysearch.js new file mode 100644 index 0000000..54bd239 --- /dev/null +++ b/static/js/familysearch.js @@ -0,0 +1,24 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +$("#familysearchbtn").click(function () { + $("#familysearchmodal").modal("show"); +}); + +$("#familysearchmodal #familysearchbox").on("input propertychange paste", function () { + $.getJSON("action.php", { + action: "familysearch", + q: $("#familysearchbox").val() + }, function (resp) { + $("#familysearchresults").html(""); + for (var i = 0; i < resp.length; i++) { + $("#familysearchresults").append('
' + resp[i]['name'] + '
'); + } + }); +}); + +$("#familysearchmodal").on("click", ".familysearchresult", function () { + $("input[name=familyid]").val($(this).data("familyid")); + $("#familysearchmodal").modal("hide"); +}); \ No newline at end of file