Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 13 additions & 24 deletions modules/Activities/activities_attendance.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,13 @@

use Gibbon\Forms\Form;
use Gibbon\Services\Format;
use Gibbon\Domain\Attendance\AttendanceLogPersonGateway;
use Gibbon\Domain\User\UserGateway;
use Gibbon\Domain\System\SettingGateway;
use Gibbon\Domain\Activities\ActivityGateway;
use Gibbon\Domain\Activities\ActivityStaffGateway;
use Gibbon\Domain\Activities\ActivityStudentGateway;
use Gibbon\Domain\Activities\ActivityAttendanceGateway;
use Gibbon\Domain\Attendance\AttendanceLogPersonGateway;

//Module includes
require_once __DIR__ . '/moduleFunctions.php';
Expand All @@ -45,14 +50,11 @@
}

$settingGateway = $container->get(SettingGateway::class);
$data = array('gibbonSchoolYearID' => $session->get('gibbonSchoolYearID'));

$sql = "";
if($highestAction == "Enter Activity Attendance") {
$sql = "SELECT gibbonActivity.gibbonActivityID AS value, name, programStart FROM gibbonActivity WHERE gibbonSchoolYearID=:gibbonSchoolYearID AND active='Y' ORDER BY name, programStart";
$result = $container->get(ActivityGateway::class)->selectActivitiesBySchoolYear($session->get('gibbonSchoolYearID'));
} elseif($highestAction == "Enter Activity Attendance_leader") {
$data["gibbonPersonID"] = $session->get("gibbonPersonID");
$sql = "SELECT gibbonActivity.gibbonActivityID AS value, name, programStart FROM gibbonActivityStaff JOIN gibbonActivity ON (gibbonActivityStaff.gibbonActivityID = gibbonActivity.gibbonActivityID) WHERE gibbonSchoolYearID=:gibbonSchoolYearID AND active='Y' AND gibbonActivityStaff.gibbonPersonID=:gibbonPersonID AND (gibbonActivityStaff.role='Organiser' OR gibbonActivityStaff.role='Assistant' OR gibbonActivityStaff.role='Coach') ORDER BY name, programStart";
$result = $container->get(ActivityStaffGateway::class)-> selectActivityByStaff($session->get('gibbonPersonID'));
}

$form = Form::create('action', $session->get('absoluteURL').'/index.php','get');
Expand All @@ -62,7 +64,7 @@

$row = $form->addRow();
$row->addLabel('gibbonActivityID', __('Activity'));
$row->addSearchSelect('gibbonActivityID')->fromQuery($pdo, $sql, $data)->selected($gibbonActivityID)->required()->placeholder();
$row->addSearchSelect('gibbonActivityID')->fromResults($result)->selected($gibbonActivityID)->required()->placeholder();

$row = $form->addRow();
$row->addSearchSubmit($session);
Expand All @@ -73,40 +75,27 @@
if (empty($gibbonActivityID)) {
return;
}
$studentResult = $container->get(UserGateway::class)->selectStudentsByActivity($session->get('gibbonSchoolYearID'), $gibbonActivityID);


$data = array('gibbonSchoolYearID' => $session->get('gibbonSchoolYearID'), 'gibbonActivityID' => $gibbonActivityID);
$sql = "SELECT gibbonPerson.gibbonPersonID, surname, preferredName, gibbonFormGroup.gibbonFormGroupID, gibbonActivityStudent.status, gibbonFormGroup.nameShort as formGroup FROM gibbonPerson JOIN gibbonStudentEnrolment ON (gibbonPerson.gibbonPersonID=gibbonStudentEnrolment.gibbonPersonID) JOIN gibbonFormGroup ON (gibbonFormGroup.gibbonFormGroupID=gibbonStudentEnrolment.gibbonFormGroupID) JOIN gibbonActivityStudent ON (gibbonActivityStudent.gibbonPersonID=gibbonPerson.gibbonPersonID) WHERE gibbonPerson.status='Full' AND (dateStart IS NULL OR dateStart<='".date('Y-m-d')."') AND (dateEnd IS NULL OR dateEnd>='".date('Y-m-d')."') AND gibbonStudentEnrolment.gibbonSchoolYearID=:gibbonSchoolYearID AND gibbonActivityStudent.status='Accepted' AND gibbonActivityID=:gibbonActivityID ORDER BY gibbonActivityStudent.status, surname, preferredName";
$studentResult = $connection2->prepare($sql);
$studentResult->execute($data);


$data = array('gibbonActivityID' => $gibbonActivityID);
$sql = "SELECT gibbonSchoolYearTermIDList, maxParticipants, programStart, programEnd, (SELECT COUNT(*) FROM gibbonActivityStudent JOIN gibbonPerson ON (gibbonActivityStudent.gibbonPersonID=gibbonPerson.gibbonPersonID) WHERE gibbonActivityStudent.gibbonActivityID=gibbonActivity.gibbonActivityID AND gibbonActivityStudent.status='Waiting List' AND gibbonPerson.status='Full') AS waiting FROM gibbonActivity WHERE gibbonActivityID=:gibbonActivityID";
$activityResult = $connection2->prepare($sql);
$activityResult->execute($data);
$activityResult = $container->get(ActivityStudentGateway::class)->selectActivityByStudents($gibbonActivityID);

if ($studentResult->rowCount() < 1 || $activityResult->rowCount() < 1) {
echo $page->getBlankSlate();

return;
}


$students = $studentResult->fetchAll();

$data = array('gibbonActivityID' => $gibbonActivityID);
$sql = 'SELECT gibbonActivityAttendance.date, gibbonActivityAttendance.timestampTaken, gibbonActivityAttendance.attendance, gibbonPerson.preferredName, gibbonPerson.surname FROM gibbonActivityAttendance, gibbonPerson WHERE gibbonActivityAttendance.gibbonPersonIDTaker=gibbonPerson.gibbonPersonID AND gibbonActivityAttendance.gibbonActivityID=:gibbonActivityID';
$attendanceResult = $connection2->prepare($sql);
$attendanceResult->execute($data);
$attendanceResult = $container->get(ActivityAttendanceGateway::class)->selectStudentAttendanceByActivity($gibbonActivityID);

// Gather the existing attendance data (by date and not index, should the time slots change)
$sessionAttendanceData = array();

while ($attendance = $attendanceResult->fetch()) {
$sessionAttendanceData[ $attendance['date'] ] = array(
'data' => (!empty($attendance['attendance'])) ? unserialize($attendance['attendance']) : array(),
'info' => sprintf(__('Recorded at %1$s on %2$s by %3$s.'), substr($attendance['timestampTaken'], 11), Format::date(substr($attendance['timestampTaken'], 0, 10)), Format::name('', $attendance['preferredName'], $attendance['surname'], 'Staff', false, true)),
'info' => __('Recorded at %1$s on %2$s by %3$s.'), substr($attendance['timestampTaken'], 11), Format::date(substr($attendance['timestampTaken'], 0, 10)), Format::name('', $attendance['preferredName'], $attendance['surname'], 'Staff', false, true),
);
}

Expand Down
20 changes: 10 additions & 10 deletions modules/Activities/activities_attendanceProcess.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
use Gibbon\Data\Validator;
use Gibbon\Domain\Activities\ActivityStaffGateway;
use Gibbon\Domain\Activities\ActivityAttendanceGateway;

require_once '../../gibbon.php';

Expand All @@ -39,11 +41,9 @@
$highestAction = getHighestGroupedAction($guid, '/modules/Activities/activities_attendance.php', $connection2);

if($highestAction == "Enter Activity Attendance_leader") {
try {
$dataCheck = array("gibbonPersonID" => $gibbonPersonID, "gibbonActivityID" => $gibbonActivityID);
$sqlCheck = "SELECT role FROM gibbonActivityStaff WHERE gibbonActivityID=:gibbonActivityID AND gibbonPersonID=:gibbonPersonID";
$resultCheck = $connection2->prepare($sqlCheck);
$resultCheck->execute($dataCheck);
try {

$resultCheck = $container->get(ActivityStaffGateway::class)->selectStaffRoleByActivity($gibbonPersonID, $gibbonActivityID);

if ($resultCheck->rowCount() > 0) {
$row = $resultCheck->fetch();
Expand Down Expand Up @@ -91,10 +91,8 @@
$sessionAttendance = (isset($attendance[$i])) ? serialize($attendance[$i]) : '';

try {
$data = array('gibbonActivityID' => $gibbonActivityID, 'date' => $sessionDate);
$sql = 'SELECT gibbonActivityAttendanceID FROM gibbonActivityAttendance WHERE gibbonActivityID=:gibbonActivityID AND date=:date';
$result = $connection2->prepare($sql);
$result->execute($data);
$result = $container->get(ActivityAttendanceGateway::class)->selectActivityAttendanceByActivity($gibbonActivityID, $sessionDate);

} catch (PDOException $e) {
$partialFail = true;
}
Expand All @@ -109,7 +107,8 @@

try {
$data = array('gibbonActivityID' => $gibbonActivityID, 'gibbonPersonIDTaker' => $gibbonPersonID, 'attendance' => $sessionAttendance, 'date' => $sessionDate);
$sql = 'INSERT INTO gibbonActivityAttendance SET gibbonActivityID=:gibbonActivityID, gibbonPersonIDTaker=:gibbonPersonIDTaker, attendance=:attendance, date=:date ';
$sql = 'INSERT INTO gibbonActivityAttendance
SET gibbonActivityID=:gibbonActivityID, gibbonPersonIDTaker=:gibbonPersonIDTaker, attendance=:attendance, date=:date ';
$result = $connection2->prepare($sql);
$result->execute($data);
} catch (PDOException $e) {
Expand Down Expand Up @@ -140,3 +139,4 @@
}
}
}

15 changes: 7 additions & 8 deletions modules/Activities/activities_attendance_sheet.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,11 @@
*/

use Gibbon\Forms\Form;
use Gibbon\Forms\DatabaseFormFactory;
use Gibbon\Services\Format;
use Gibbon\Domain\User\UserGateway;
use Gibbon\Forms\DatabaseFormFactory;
use Gibbon\Domain\Activities\ActivityGateway;
use Gibbon\Domain\Activities\ActivityStudentGateway;

//Module includes
require_once __DIR__ . '/moduleFunctions.php';
Expand Down Expand Up @@ -51,11 +54,10 @@

$form->addHiddenValue('q', "/modules/".$session->get('module')."/activities_attendance_sheet.php");

$data = array('gibbonSchoolYearID' => $session->get('gibbonSchoolYearID'));
$sql = "SELECT gibbonActivityID AS value, name FROM gibbonActivity WHERE gibbonSchoolYearID=:gibbonSchoolYearID AND active='Y' ORDER BY name, programStart";
$result = $container->get(ActivityGateway::class)->selectActivitiesBySchoolYear($session->get('gibbonSchoolYearID'));
$row = $form->addRow();
$row->addLabel('gibbonActivityID', __('Activity'));
$row->addSearchSelect('gibbonActivityID')->fromQuery($pdo, $sql, $data)->selected($gibbonActivityID)->required()->placeholder();
$row->addSearchSelect('gibbonActivityID')->fromResults($result)->selected($gibbonActivityID)->required()->placeholder();

$row = $form->addRow();
$row->addLabel('numberOfColumns', __('Number of Columns'));
Expand All @@ -73,10 +75,7 @@
echo __('Report Data');
echo '</h2>';

$data = array('gibbonSchoolYearID' => $session->get('gibbonSchoolYearID'), 'gibbonActivityID' => $gibbonActivityID);
$sql = "SELECT gibbonPerson.gibbonPersonID, surname, preferredName, gibbonFormGroupID, gibbonActivityStudent.status FROM gibbonPerson JOIN gibbonStudentEnrolment ON (gibbonPerson.gibbonPersonID=gibbonStudentEnrolment.gibbonPersonID) JOIN gibbonActivityStudent ON (gibbonActivityStudent.gibbonPersonID=gibbonPerson.gibbonPersonID) WHERE gibbonPerson.status='Full' AND (dateStart IS NULL OR dateStart<='".date('Y-m-d')."') AND (dateEnd IS NULL OR dateEnd>='".date('Y-m-d')."') AND gibbonSchoolYearID=:gibbonSchoolYearID AND gibbonActivityStudent.status='Accepted' AND gibbonActivityID=:gibbonActivityID ORDER BY gibbonActivityStudent.status, surname, preferredName";
$result = $connection2->prepare($sql);
$result->execute($data);
$result = $container->get(UserGateway::class)->selectStudentsByActivity($session->get('gibbonSchoolYearID'), $gibbonActivityID);

if ($result->rowCount() < 1) {
echo $page->getBlankSlate();
Expand Down
27 changes: 15 additions & 12 deletions modules/Activities/activities_manage.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,16 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

use Gibbon\Domain\Activities\ActivityGateway;
use Gibbon\Domain\School\SchoolYearTermGateway;
use Gibbon\Domain\System\SettingGateway;
use Gibbon\Forms\Prefab\BulkActionForm;
use Gibbon\Forms\Form;
use Gibbon\Tables\DataTable;
use Gibbon\Services\Format;
use Gibbon\Tables\DataTable;
use Gibbon\Forms\DatabaseFormFactory;
use Gibbon\Forms\Prefab\BulkActionForm;
use Gibbon\Domain\System\SettingGateway;
use Gibbon\Domain\School\SchoolYearGateway;
use Gibbon\Domain\Activities\ActivityGateway;
use Gibbon\Domain\School\SchoolYearTermGateway;
use Gibbon\Domain\Activities\ActivitySlotGateway;
use Gibbon\Domain\Activities\ActivityCategoryGateway;

//Module includes
Expand Down Expand Up @@ -54,6 +56,7 @@
$yearGroups = getYearGroups($connection2);

$activityGateway = $container->get(ActivityGateway::class);
$activitySlotGateway = $container->get(ActivitySlotGateway::class);

// CRITERIA
$criteria = $activityGateway->newQueryCriteria(true)
Expand Down Expand Up @@ -83,11 +86,11 @@
$row->addTextField('search')->setValue($criteria->getSearchText());

if ($dateType != 'Date') {
$data = array('gibbonSchoolYearID' => $session->get('gibbonSchoolYearID'));
$sql = "SELECT gibbonSchoolYearTermID as value, name FROM gibbonSchoolYearTerm WHERE gibbonSchoolYearID=:gibbonSchoolYearID ORDER BY sequenceNumber";
$result = $container->get(SchoolYearTermGateway::class)->selectSchoolYearTermName($session->get('gibbonSchoolYearID'));

$row = $form->addRow();
$row->addLabel('gibbonSchoolYearTermID', __('Term'));
$row->addSelect('gibbonSchoolYearTermID')->fromQuery($pdo, $sql, $data)->selected($gibbonSchoolYearTermID)->placeholder();
$row->addSelect('gibbonSchoolYearTermID')->fromResults($result)->selected($gibbonSchoolYearTermID)->placeholder();
}

$row = $form->addRow();
Expand Down Expand Up @@ -119,11 +122,11 @@
'DuplicateParticipants' => __('Duplicate With Participants'),
'Delete' => __('Delete'),
);
$sql = "SELECT gibbonSchoolYearID as value, gibbonSchoolYear.name FROM gibbonSchoolYear WHERE (status='Upcoming' OR status='Current') ORDER BY sequenceNumber LIMIT 0, 2";
$result = $container->get(SchoolYearGateway::class)->selectCurrentOrUpcomingSchoolYear();

$col = $form->createBulkActionColumn($bulkActions);
$col->addSelect('gibbonSchoolYearIDCopyTo')
->fromQuery($pdo, $sql)
->fromResults($result)
->setClass('shortWidth schoolYear');
$col->addSubmit(__('Go'));

Expand Down Expand Up @@ -170,8 +173,8 @@

$table->addColumn('days', __('Days'))
->notSortable()
->format(function($activity) use ($activityGateway) {
return implode(', ', array_map('__', $activityGateway->selectWeekdayNamesByActivity($activity['gibbonActivityID'])->fetchAll(\PDO::FETCH_COLUMN)));
->format(function($activity) use ($activitySlotGateway) {
return implode(', ', array_map('__', $activitySlotGateway->selectWeekdayNamesByActivity($activity['gibbonActivityID'])->fetchAll(\PDO::FETCH_COLUMN)));
});

$table->addColumn('yearGroups', __('Years'))
Expand Down
Loading
Loading