diff --git a/action.php b/action.php index 3b62b21..a559371 100644 --- a/action.php +++ b/action.php @@ -232,4 +232,47 @@ switch ($VARS['action']) { } } returnToSender("events_updated"); + 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 (empty($VARS['date']) || strtotime($VARS['date']) === false) { + returnToSender("invalid_parameters"); + } + if (!empty($VARS['paymentid']) && $database->has("payments", ['paymentid' => $VARS['paymentid']])) { + $database->update("payments", [ + "familyid" => $VARS["familyid"], + "amount" => $VARS["amount"], + "paid" => !empty($VARS["paid"]) && $VARS["paid"] == "1" ? true : false, + "date" => date("Y-m-d H:i:s", strtotime($VARS['date'])), + "type" => $VARS["type"] + ], [ + "paymentid" => $VARS["paymentid"] + ]); + $paymentid = $VARS["paymentid"]; + } else { + $database->insert("payments", [ + "familyid" => $VARS["familyid"], + "amount" => $VARS["amount"], + "paid" => !empty($VARS["paid"]) && $VARS["paid"] == "1" ? true : false, + "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; } \ No newline at end of file diff --git a/langs/en/labels.json b/langs/en/labels.json index 429fd9a..6c2aefe 100644 --- a/langs/en/labels.json +++ b/langs/en/labels.json @@ -43,5 +43,8 @@ "Check": "Check", "Other": "Other", "Free": "Free", - "Expires": "Expires" + "Expires": "Expires", + "Choose...": "Choose...", + "Mark as paid": "Mark as paid", + "This payment is a membership renewal (automatically add one year to the family's membership)": "This payment is a membership renewal (automatically add one year to the family's membership)" } diff --git a/langs/en/messages.json b/langs/en/messages.json index ff489f1..e680ef8 100644 --- a/langs/en/messages.json +++ b/langs/en/messages.json @@ -8,5 +8,6 @@ "To remove a child, delete the contents of the Name box.": "To remove a child, delete the contents of the Name box.", "No interests selected.": "No interests selected.", "Events updated.": "Events updated.", - "You agree to use the information in this directory for homeschool use ONLY. All other purposes, such as soliciting, is strictly prohibited.": "You agree to use the information in this directory for homeschool use ONLY. All other purposes, such as soliciting, is strictly prohibited." + "You agree to use the information in this directory for homeschool use ONLY. All other purposes, such as soliciting, is strictly prohibited.": "You agree to use the information in this directory for homeschool use ONLY. All other purposes, such as soliciting, is strictly prohibited.", + "Payment saved.": "Payment saved." } diff --git a/langs/en/titles.json b/langs/en/titles.json index cc90524..579aed0 100644 --- a/langs/en/titles.json +++ b/langs/en/titles.json @@ -7,5 +7,7 @@ "Delete Family": "Delete Family", "Events": "Events", "Reports": "Reports", - "Payments": "Payments" + "Payments": "Payments", + "Add Payment": "Add Payment", + "Edit Payment": "Edit Payment" } diff --git a/langs/messages.php b/langs/messages.php index d4130c7..0b3c6f7 100644 --- a/langs/messages.php +++ b/langs/messages.php @@ -36,5 +36,9 @@ define("MESSAGES", [ "events_updated" => [ "string" => "Events updated.", "type" => "success" + ], + "payment_saved" => [ + "string" => "Payment saved.", + "type" => "success" ] ]); diff --git a/pages.php b/pages.php index a95c139..3ab5200 100644 --- a/pages.php +++ b/pages.php @@ -49,6 +49,9 @@ define("PAGES", [ "static/js/payments.js" ] ], + "editpayment" => [ + "title" => "Edit Payment" + ], "events" => [ "title" => "Events", "navbar" => true, diff --git a/pages/editpayment.php b/pages/editpayment.php new file mode 100644 index 0000000..62eaf1f --- /dev/null +++ b/pages/editpayment.php @@ -0,0 +1,203 @@ +hasPermission("HACHEPORTAL_EDIT")) { + header("Location: ./app.php?msg=no_permission"); + die(); +} + +$editing = false; +$data = [ + "id" => "", + "family" => "", + "amount" => 1.0, + "date" => date("Y-m-d"), + "type" => "", + "paid" => true +]; + +if (!empty($_GET['id']) && $database->has('payments', ['paymentid' => $_GET['id']])) { + $editing = true; + $payment = $database->get("payments", ['paymentid (id)', "familyid (family)", "amount", "date", "type", "paid"], ["paymentid" => $_GET['id']]); + $payment["date"] = date("Y-m-d", strtotime($payment["date"])); + $payment["paid"] = ($payment["paid"] == 1 ? true : false); + $data = $payment; +} +?> + +
\ No newline at end of file diff --git a/pages/payments.php b/pages/payments.php index e517f61..60c6c0a 100644 --- a/pages/payments.php +++ b/pages/payments.php @@ -26,7 +26,7 @@ $payments = $database->select("payments", ['paymentid (id)', 'familyid', 'amount