Add reports
This commit is contained in:
parent
628366379b
commit
2b38c39dda
@ -7,8 +7,12 @@
|
|||||||
"Adult": "Adult",
|
"Adult": "Adult",
|
||||||
"Adults": "Adults",
|
"Adults": "Adults",
|
||||||
"Youth": "Youth",
|
"Youth": "Youth",
|
||||||
|
"Days": "Days",
|
||||||
|
"Position": "Position",
|
||||||
|
"Parent Phone": "Parent Phone",
|
||||||
"Total Income": "Total Income",
|
"Total Income": "Total Income",
|
||||||
"Card Payments": "Card Payments",
|
"Card Payments": "Card Payments",
|
||||||
|
"Camp Coupon/Scout Bucks": "Camp Coupon/Scout Bucks",
|
||||||
"First": "First",
|
"First": "First",
|
||||||
"Last": "Last",
|
"Last": "Last",
|
||||||
"Last Name": "Last Name",
|
"Last Name": "Last Name",
|
||||||
|
File diff suppressed because one or more lines are too long
210
lib/reports.php
210
lib/reports.php
@ -32,85 +32,183 @@ if (LOADED) {
|
|||||||
* @param array $filter Medoo WHERE clause.
|
* @param array $filter Medoo WHERE clause.
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function getMemberReport($filter = []): Report {
|
function getPeopleReport($filter = ""): Report {
|
||||||
global $database, $Strings;
|
global $database, $Strings;
|
||||||
|
|
||||||
if (empty($filter)) {
|
if (empty($filter)) {
|
||||||
$report = new Report($Strings->get("Families", false));
|
$report = new Report($Strings->get("People", false));
|
||||||
$filter = ["ORDER" => ["familyname" => "ASC"]];
|
$filter = ["ORDER" => ["familyname" => "ASC"]];
|
||||||
} else {
|
} else {
|
||||||
$report = new Report($Strings->get("Expiring Memberships", false));
|
$report = new Report($Strings->get("$filter", false));
|
||||||
}
|
}
|
||||||
|
|
||||||
$familyids = $database->select(
|
$join = [];
|
||||||
"families", "familyid", $filter
|
$where = [];
|
||||||
);
|
$header = [];
|
||||||
|
switch ($filter) {
|
||||||
$report->setHeader([
|
case "Campers":
|
||||||
$Strings->get("Name", false),
|
$join = ["[>]campers" => ["camperid" => "camperid"]];
|
||||||
$Strings->get("Father", false),
|
$where = ["people.camperid[!]" => null];
|
||||||
$Strings->get("Mother", false),
|
$header = [
|
||||||
|
$Strings->get("First", false),
|
||||||
|
$Strings->get("Last", false),
|
||||||
|
$Strings->get("Parent", false),
|
||||||
|
$Strings->get("Unit", false),
|
||||||
|
$Strings->get("Rank", false),
|
||||||
$Strings->get("Phone", false),
|
$Strings->get("Phone", false),
|
||||||
$Strings->get("Email", false),
|
$Strings->get("Email", false),
|
||||||
$Strings->get("Address", false),
|
$Strings->get("Address", false),
|
||||||
$Strings->get("City", false),
|
|
||||||
$Strings->get("State", false),
|
|
||||||
$Strings->get("ZIP", false),
|
$Strings->get("ZIP", false),
|
||||||
$Strings->get("Photo Permission", false),
|
$Strings->get("Shirt", false),
|
||||||
$Strings->get("Newsletter", false),
|
$Strings->get("Sex", false)
|
||||||
$Strings->get("Expires", false),
|
];
|
||||||
$Strings->get("Private", false),
|
|
||||||
$Strings->get("Children", false),
|
|
||||||
]);
|
|
||||||
$families = [];
|
|
||||||
foreach ($familyids as $id) {
|
|
||||||
$f = (new Family())->load($id);
|
|
||||||
$families[] = $f;
|
|
||||||
}
|
|
||||||
foreach ($families as $f) {
|
|
||||||
$newsletter = "";
|
|
||||||
switch ($f->getNewsletter()) {
|
|
||||||
case 1:
|
|
||||||
$newsletter = $Strings->get("Email", false);
|
|
||||||
break;
|
break;
|
||||||
case 2:
|
case "Adults":
|
||||||
$newsletter = $Strings->get("Print", false);
|
$join = ["[>]adults" => ["adultid" => "adultid"]];
|
||||||
|
$where = ["people.adultid[!]" => null];
|
||||||
|
$header = [
|
||||||
|
$Strings->get("First", false),
|
||||||
|
$Strings->get("Last", false),
|
||||||
|
$Strings->get("Phone", false),
|
||||||
|
$Strings->get("Email", false),
|
||||||
|
$Strings->get("Address", false),
|
||||||
|
$Strings->get("ZIP", false),
|
||||||
|
$Strings->get("Days", false),
|
||||||
|
$Strings->get("Position", false),
|
||||||
|
$Strings->get("Shirt", false),
|
||||||
|
$Strings->get("Sex", false)
|
||||||
|
];
|
||||||
break;
|
break;
|
||||||
case 3:
|
case "Youth":
|
||||||
$newsletter = $Strings->get("Email+Print", false);
|
$join = ["[>]youth" => ["youthid" => "youthid"]];
|
||||||
|
$where = ["people.youthid[!]" => null];
|
||||||
|
$header = [
|
||||||
|
$Strings->get("First", false),
|
||||||
|
$Strings->get("Last", false),
|
||||||
|
$Strings->get("Parent", false),
|
||||||
|
$Strings->get("Phone", false),
|
||||||
|
$Strings->get("Parent Phone", false),
|
||||||
|
$Strings->get("Email", false),
|
||||||
|
$Strings->get("Address", false),
|
||||||
|
$Strings->get("ZIP", false),
|
||||||
|
$Strings->get("Days", false),
|
||||||
|
$Strings->get("Position", false),
|
||||||
|
$Strings->get("Shirt", false),
|
||||||
|
$Strings->get("Sex", false)
|
||||||
|
];
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
$header = [
|
||||||
|
$Strings->get("First", false),
|
||||||
|
$Strings->get("Last", false),
|
||||||
|
$Strings->get("Type", false),
|
||||||
|
$Strings->get("Phone", false),
|
||||||
|
$Strings->get("Email", false),
|
||||||
|
$Strings->get("Address", false),
|
||||||
|
$Strings->get("ZIP", false),
|
||||||
|
$Strings->get("Shirt", false),
|
||||||
|
$Strings->get("Sex", false)
|
||||||
|
];
|
||||||
}
|
}
|
||||||
$children = [];
|
|
||||||
foreach ($f->getChildren() as $c) {
|
if (empty($join)) {
|
||||||
$children[] = $c->getName() . " (" . date("n/d", $c->getBirthday()) . ")";
|
$people = $database->select("people", '*', $where);
|
||||||
|
} else {
|
||||||
|
$people = $database->select("people", $join, '*', $where);
|
||||||
}
|
}
|
||||||
$report->addDataRow([
|
|
||||||
$f->getName(),
|
$report->setHeader($header);
|
||||||
$f->getFather(),
|
|
||||||
$f->getMother(),
|
foreach ($people as $p) {
|
||||||
$f->getPhone() . "",
|
$row = [];
|
||||||
$f->getEmail(),
|
|
||||||
$f->getAddress(),
|
$type = "Unknown";
|
||||||
$f->getCity(),
|
if (!empty($p['camperid'])) {
|
||||||
$f->getState(),
|
$type = $Strings->get("Camper", false);
|
||||||
$f->getZip() . "",
|
} else if (!empty($p['adultid'])) {
|
||||||
$f->getPhotoPermission() ? $Strings->get("Yes", false) : $Strings->get("No", false),
|
$type = $Strings->get("Adult", false);
|
||||||
$newsletter,
|
} else if (!empty($p['youthid'])) {
|
||||||
date("Y-m-d", $f->getExpires()),
|
$type = $Strings->get("Youth", false);
|
||||||
$f->getPrivate() ? $Strings->get("Yes", false) : $Strings->get("No", false),
|
}
|
||||||
implode(", ", $children)
|
|
||||||
]);
|
switch ($filter) {
|
||||||
|
case "Campers":
|
||||||
|
$row = [
|
||||||
|
$p['firstname'],
|
||||||
|
$p['lastname'],
|
||||||
|
$p['parentname'],
|
||||||
|
$p['unit'],
|
||||||
|
$p['rank'],
|
||||||
|
$p['phone1'],
|
||||||
|
$p['email'],
|
||||||
|
$p['address'],
|
||||||
|
$p['zip'],
|
||||||
|
$p['shirt'],
|
||||||
|
$p['sex']
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
case "Adults":
|
||||||
|
$row = [
|
||||||
|
$p['firstname'],
|
||||||
|
$p['lastname'],
|
||||||
|
$p['phone1'],
|
||||||
|
$p['email'],
|
||||||
|
$p['address'],
|
||||||
|
$p['zip'],
|
||||||
|
$p['days'],
|
||||||
|
$p['position'],
|
||||||
|
$p['shirt'],
|
||||||
|
$p['sex']
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
case "Youth":
|
||||||
|
$row = [
|
||||||
|
$p['firstname'],
|
||||||
|
$p['lastname'],
|
||||||
|
$p['parentname'],
|
||||||
|
$p['phone1'],
|
||||||
|
$p['phone2'],
|
||||||
|
$p['email'],
|
||||||
|
$p['address'],
|
||||||
|
$p['zip'],
|
||||||
|
$p['days'],
|
||||||
|
$p['position'],
|
||||||
|
$p['shirt'],
|
||||||
|
$p['sex']
|
||||||
|
];
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$row = [
|
||||||
|
$p['firstname'],
|
||||||
|
$p['lastname'],
|
||||||
|
$type,
|
||||||
|
$p['phone1'] . (empty($p['phone2']) ? "" : " " . $p['phone2']),
|
||||||
|
$p['email'],
|
||||||
|
$p['address'],
|
||||||
|
$p['zip'],
|
||||||
|
$p['shirt'],
|
||||||
|
$p['sex']
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
$report->addDataRow($row);
|
||||||
}
|
}
|
||||||
return $report;
|
return $report;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getReport($type): Report {
|
function getReport($type): Report {
|
||||||
switch ($type) {
|
switch ($type) {
|
||||||
case "members":
|
case "campers":
|
||||||
return getMemberReport();
|
return getPeopleReport("Campers");
|
||||||
break;
|
break;
|
||||||
case "expiring":
|
case "adults":
|
||||||
return getMemberReport(["expires[<]" => date("Y-m-d", strtotime("+1 month")), "ORDER" => ["expires" => "ASC"]]);
|
return getPeopleReport("Adults");
|
||||||
|
break;
|
||||||
|
case "youth":
|
||||||
|
return getPeopleReport("Youth");
|
||||||
|
break;
|
||||||
|
case "people":
|
||||||
|
return getPeopleReport("");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return new Report("error", ["ERROR"], ["Invalid report type."]);
|
return new Report("error", ["ERROR"], ["Invalid report type."]);
|
||||||
|
@ -20,47 +20,58 @@ if (!$user->hasPermission("HACHEPORTAL_VIEW")) {
|
|||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12 col-md-4">
|
<div class="col-12 col-md-3">
|
||||||
<h4><?php $Strings->get("Member Directory"); ?></h4>
|
<h4><?php $Strings->get("Campers"); ?></h4>
|
||||||
<p><?php $Strings->get("A formatted and up-to-date HACHE member directory."); ?></p>
|
<a class="btn btn-success mb-1" href="./lib/reports.php?type=campers&format=ods">
|
||||||
<a class="btn btn-primary mb-1" href="./lib/mkmemberdirectory.php?format=odt">
|
|
||||||
<i class="far fa-file-alt"></i> <?php $Strings->get("Office (ODT)"); ?>
|
|
||||||
</a>
|
|
||||||
<br />
|
|
||||||
<a class="btn btn-orange btn-sm mr-1" href="./lib/mkmemberdirectory.php?format=html">
|
|
||||||
<i class="fas fa-globe"></i> <?php $Strings->get("HTML"); ?>
|
|
||||||
</a>
|
|
||||||
<a class="btn btn-secondary btn-sm" href="./lib/mkmemberdirectory.php?format=docx">
|
|
||||||
<i class="fas fa-file-word"></i> <?php $Strings->get("DOCX"); ?>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-12 col-md-4">
|
|
||||||
<h4><?php $Strings->get("Family List"); ?></h4>
|
|
||||||
<p><?php $Strings->get("All the data from the member directory in a spreadsheet."); ?></p>
|
|
||||||
<a class="btn btn-success mb-1" href="./lib/reports.php?type=members&format=ods">
|
|
||||||
<i class="fas fa-table"></i> <?php $Strings->get("Spreadsheet (ODS)"); ?>
|
<i class="fas fa-table"></i> <?php $Strings->get("Spreadsheet (ODS)"); ?>
|
||||||
</a>
|
</a>
|
||||||
<br />
|
<br />
|
||||||
<a class="btn btn-orange btn-sm mr-1" href="./lib/reports.php?type=members&format=html">
|
<a class="btn btn-orange btn-sm mr-1" href="./lib/reports.php?type=campers&format=html">
|
||||||
<i class="fas fa-globe"></i> <?php $Strings->get("HTML"); ?>
|
<i class="fab fa-html5"></i> <?php $Strings->get("HTML"); ?>
|
||||||
</a>
|
</a>
|
||||||
<a class="btn btn-secondary btn-sm" href="./lib/reports.php?type=members&format=csv">
|
<a class="btn btn-secondary btn-sm" href="./lib/reports.php?type=campers&format=csv">
|
||||||
<i class="fas fa-file-csv"></i> <?php $Strings->get("CSV"); ?>
|
<i class="fas fa-file-csv"></i> <?php $Strings->get("CSV"); ?>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-12 col-md-4">
|
<div class="col-12 col-md-3">
|
||||||
<h4><?php $Strings->get("Expiring Memberships"); ?></h4>
|
<h4><?php $Strings->get("Adults"); ?></h4>
|
||||||
<p><?php $Strings->get("All members expired or expiring within a month."); ?></p>
|
<a class="btn btn-success mb-1" href="./lib/reports.php?type=adults&format=ods">
|
||||||
<a class="btn btn-success mb-1" href="./lib/reports.php?type=expiring&format=ods">
|
|
||||||
<i class="fas fa-table"></i> <?php $Strings->get("Spreadsheet (ODS)"); ?>
|
<i class="fas fa-table"></i> <?php $Strings->get("Spreadsheet (ODS)"); ?>
|
||||||
</a>
|
</a>
|
||||||
<br />
|
<br />
|
||||||
<a class="btn btn-orange btn-sm mr-1" href="./lib/reports.php?type=expiring&format=html">
|
<a class="btn btn-orange btn-sm mr-1" href="./lib/reports.php?type=adults&format=html">
|
||||||
<i class="fas fa-globe"></i> <?php $Strings->get("HTML"); ?>
|
<i class="fab fa-html5"></i> <?php $Strings->get("HTML"); ?>
|
||||||
</a>
|
</a>
|
||||||
<a class="btn btn-secondary btn-sm" href="./lib/reports.php?type=expiring&format=csv">
|
<a class="btn btn-secondary btn-sm" href="./lib/reports.php?type=adults&format=csv">
|
||||||
|
<i class="fas fa-file-csv"></i> <?php $Strings->get("CSV"); ?>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-12 col-md-3">
|
||||||
|
<h4><?php $Strings->get("Youth"); ?></h4>
|
||||||
|
<a class="btn btn-success mb-1" href="./lib/reports.php?type=youth&format=ods">
|
||||||
|
<i class="fas fa-table"></i> <?php $Strings->get("Spreadsheet (ODS)"); ?>
|
||||||
|
</a>
|
||||||
|
<br />
|
||||||
|
<a class="btn btn-orange btn-sm mr-1" href="./lib/reports.php?type=youth&format=html">
|
||||||
|
<i class="fab fa-html5"></i> <?php $Strings->get("HTML"); ?>
|
||||||
|
</a>
|
||||||
|
<a class="btn btn-secondary btn-sm" href="./lib/reports.php?type=youth&format=csv">
|
||||||
|
<i class="fas fa-file-csv"></i> <?php $Strings->get("CSV"); ?>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-12 col-md-3">
|
||||||
|
<h4><?php $Strings->get("People"); ?></h4>
|
||||||
|
<a class="btn btn-success mb-1" href="./lib/reports.php?type=people&format=ods">
|
||||||
|
<i class="fas fa-table"></i> <?php $Strings->get("Spreadsheet (ODS)"); ?>
|
||||||
|
</a>
|
||||||
|
<br />
|
||||||
|
<a class="btn btn-orange btn-sm mr-1" href="./lib/reports.php?type=people&format=html">
|
||||||
|
<i class="fab fa-html5"></i> <?php $Strings->get("HTML"); ?>
|
||||||
|
</a>
|
||||||
|
<a class="btn btn-secondary btn-sm" href="./lib/reports.php?type=people&format=csv">
|
||||||
<i class="fas fa-file-csv"></i> <?php $Strings->get("CSV"); ?>
|
<i class="fas fa-file-csv"></i> <?php $Strings->get("CSV"); ?>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user