Add reports

master
Skylar Ittner 5 years ago
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

@ -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("Phone", false), $Strings->get("First", false),
$Strings->get("Email", false), $Strings->get("Last", false),
$Strings->get("Address", false), $Strings->get("Parent", false),
$Strings->get("City", false), $Strings->get("Unit", false),
$Strings->get("State", false), $Strings->get("Rank", false),
$Strings->get("ZIP", false), $Strings->get("Phone", false),
$Strings->get("Photo Permission", false), $Strings->get("Email", false),
$Strings->get("Newsletter", false), $Strings->get("Address", false),
$Strings->get("Expires", false), $Strings->get("ZIP", false),
$Strings->get("Private", false), $Strings->get("Shirt", false),
$Strings->get("Children", false), $Strings->get("Sex", false)
]); ];
$families = []; break;
foreach ($familyids as $id) { case "Adults":
$f = (new Family())->load($id); $join = ["[>]adults" => ["adultid" => "adultid"]];
$families[] = $f; $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;
case "Youth":
$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;
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)
];
} }
foreach ($families as $f) {
$newsletter = ""; if (empty($join)) {
switch ($f->getNewsletter()) { $people = $database->select("people", '*', $where);
case 1: } else {
$newsletter = $Strings->get("Email", false); $people = $database->select("people", $join, '*', $where);
}
$report->setHeader($header);
foreach ($people as $p) {
$row = [];
$type = "Unknown";
if (!empty($p['camperid'])) {
$type = $Strings->get("Camper", false);
} else if (!empty($p['adultid'])) {
$type = $Strings->get("Adult", false);
} else if (!empty($p['youthid'])) {
$type = $Strings->get("Youth", false);
}
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; break;
case 2: case "Adults":
$newsletter = $Strings->get("Print", false); $row = [
$p['firstname'],
$p['lastname'],
$p['phone1'],
$p['email'],
$p['address'],
$p['zip'],
$p['days'],
$p['position'],
$p['shirt'],
$p['sex']
];
break; break;
case 3: case "Youth":
$newsletter = $Strings->get("Email+Print", false); $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; 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']
];
} }
$children = [];
foreach ($f->getChildren() as $c) { $report->addDataRow($row);
$children[] = $c->getName() . " (" . date("n/d", $c->getBirthday()) . ")";
}
$report->addDataRow([
$f->getName(),
$f->getFather(),
$f->getMother(),
$f->getPhone() . "",
$f->getEmail(),
$f->getAddress(),
$f->getCity(),
$f->getState(),
$f->getZip() . "",
$f->getPhotoPermission() ? $Strings->get("Yes", false) : $Strings->get("No", false),
$newsletter,
date("Y-m-d", $f->getExpires()),
$f->getPrivate() ? $Strings->get("Yes", false) : $Strings->get("No", false),
implode(", ", $children)
]);
} }
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;
case "adults":
return getPeopleReport("Adults");
break;
case "youth":
return getPeopleReport("Youth");
break; break;
case "expiring": case "people":
return getMemberReport(["expires[<]" => date("Y-m-d", strtotime("+1 month")), "ORDER" => ["expires" => "ASC"]]); 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="fas fa-table"></i> <?php $Strings->get("Spreadsheet (ODS)"); ?>
<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/reports.php?type=campers&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=campers&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("Adults"); ?></h4>
<a class="btn btn-success mb-1" href="./lib/reports.php?type=adults&format=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/mkmemberdirectory.php?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/mkmemberdirectory.php?format=docx"> <a class="btn btn-secondary btn-sm" href="./lib/reports.php?type=adults&format=csv">
<i class="fas fa-file-word"></i> <?php $Strings->get("DOCX"); ?> <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("Family List"); ?></h4> <h4><?php $Strings->get("Youth"); ?></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=youth&format=ods">
<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=youth&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=youth&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("People"); ?></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=people&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=people&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=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…
Cancel
Save