Skip to content

Commit

Permalink
Individual Needs: Transplanting SQL queries into gateway classes
Browse files Browse the repository at this point in the history
  • Loading branch information
ali-ichk committed May 17, 2024
1 parent 4848d4d commit f5b8825
Show file tree
Hide file tree
Showing 7 changed files with 58 additions and 42 deletions.
21 changes: 8 additions & 13 deletions modules/Individual Needs/in_edit.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,13 @@
use Gibbon\Domain\DataSet;
use Gibbon\Services\Format;
use Gibbon\Tables\DataTable;
use Gibbon\Domain\User\UserGateway;
use Gibbon\Forms\CustomFieldHandler;
use Gibbon\Forms\DatabaseFormFactory;
use Gibbon\Domain\System\SettingGateway;
use Gibbon\Domain\IndividualNeeds\INGateway;
use Gibbon\Domain\System\CustomFieldGateway;
use Gibbon\Domain\IndividualNeeds\INArchiveGateway;
use Gibbon\Domain\IndividualNeeds\INAssistantGateway;

//Module includes
Expand Down Expand Up @@ -58,16 +61,12 @@
->add(__('Edit Individual Needs Record'));
}

$result = $container->get(UserGateway::class)->getUserDetails($gibbonPersonID, $session->get('gibbonSchoolYearID'));

$data = array('gibbonSchoolYearID' => $session->get('gibbonSchoolYearID'), 'gibbonPersonID' => $gibbonPersonID);
$sql = "SELECT gibbonPerson.gibbonPersonID, gibbonStudentEnrolmentID, surname, preferredName, gibbonYearGroup.name AS yearGroup, gibbonFormGroup.nameShort AS formGroup, dateStart, dateEnd, image_240 FROM gibbonPerson, gibbonStudentEnrolment, gibbonYearGroup, gibbonFormGroup WHERE (gibbonPerson.gibbonPersonID=gibbonStudentEnrolment.gibbonPersonID) AND (gibbonStudentEnrolment.gibbonYearGroupID=gibbonYearGroup.gibbonYearGroupID) AND (gibbonStudentEnrolment.gibbonFormGroupID=gibbonFormGroup.gibbonFormGroupID) AND gibbonFormGroup.gibbonSchoolYearID=:gibbonSchoolYearID AND gibbonPerson.gibbonPersonID=:gibbonPersonID AND gibbonPerson.status='Full' ORDER BY surname, preferredName";
$result = $connection2->prepare($sql);
$result->execute($data);

if ($result->rowCount() != 1) {
if (empty($result)) {
$page->addError(__('The selected record does not exist, or you do not have access to it.'));
} else {
$student = $result->fetch();
$student = $result;

$search = $_GET['search'] ?? null;
$allStudents = $_GET['allStudents'] ?? null;
Expand Down Expand Up @@ -98,15 +97,11 @@
$educationalAssistants = $container->get(INAssistantGateway::class)->selectINAssistantsByStudent($gibbonPersonID)->fetchAll();

// Grab IEP data
$data = array('gibbonPersonID' => $gibbonPersonID);
$sql = "SELECT * FROM gibbonIN WHERE gibbonPersonID=:gibbonPersonID";
$result = $pdo->executeQuery($data, $sql);
$result = $container->get(INGateway::class)->selectBy(['gibbonPersonID' => $gibbonPersonID]);
$IEP = ($result->rowCount() > 0)? $result->fetch() : array();

// Grab archived data
$data = array('gibbonPersonID' => $gibbonPersonID);
$sql = "SELECT gibbonINArchiveID as groupBy, gibbonINArchive.* FROM gibbonINArchive WHERE gibbonPersonID=:gibbonPersonID ORDER BY archiveTimestamp DESC";
$result = $pdo->executeQuery($data, $sql);
$result = $container->get(INArchiveGateway::class)->selectINArchivesByPersonID($gibbonPersonID);
$archivedIEPs = ($result->rowCount() > 0)? $result->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_UNIQUE) : array();

$gibbonINArchiveID = !empty($_POST['gibbonINArchiveID'])? $_POST['gibbonINArchiveID'] : '';
Expand Down
33 changes: 14 additions & 19 deletions modules/Individual Needs/in_editProcess.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,13 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

use Gibbon\Data\Validator;
use Gibbon\Services\Format;
use Gibbon\Comms\NotificationEvent;
use Gibbon\Domain\User\UserGateway;
use Gibbon\Forms\CustomFieldHandler;
use Gibbon\Data\Validator;
use Gibbon\Domain\IndividualNeeds\INGateway;
use Gibbon\Domain\IndividualNeeds\INAssistantGateway;

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

Expand Down Expand Up @@ -50,22 +53,20 @@
} else {
//Check access to specified student
try {
$data = array('gibbonSchoolYearID' => $session->get('gibbonSchoolYearID'), 'gibbonPersonID' => $gibbonPersonID);
$sql = "SELECT gibbonPerson.gibbonPersonID, gibbonStudentEnrolmentID, surname, preferredName, gibbonYearGroup.nameShort AS yearGroup, gibbonFormGroup.nameShort AS formGroup, dateStart, dateEnd, gibbonYearGroup.gibbonYearGroupID FROM gibbonPerson, gibbonStudentEnrolment, gibbonYearGroup, gibbonFormGroup WHERE (gibbonPerson.gibbonPersonID=gibbonStudentEnrolment.gibbonPersonID) AND (gibbonStudentEnrolment.gibbonYearGroupID=gibbonYearGroup.gibbonYearGroupID) AND (gibbonStudentEnrolment.gibbonFormGroupID=gibbonFormGroup.gibbonFormGroupID) AND gibbonFormGroup.gibbonSchoolYearID=:gibbonSchoolYearID AND gibbonPerson.gibbonPersonID=:gibbonPersonID AND gibbonPerson.status='Full' ORDER BY surname, preferredName";
$result = $connection2->prepare($sql);
$result->execute($data);
$result = $container->get(UserGateway::class)->getUserDetails($gibbonPersonID, $session->get('gibbonSchoolYearID'));

} catch (PDOException $e) {
$URL .= '&return=error2';
header("Location: {$URL}");
exit();
}

if ($result->rowCount() != 1) {
if (empty($result)) {
$URL .= '&return=error1';
header("Location: {$URL}");
} else {
$partialFail = false;
$row = $result->fetch();
$row = $result;

if ($highestAction == 'Individual Needs Records_viewEdit') {
//UPDATE STATUS
Expand Down Expand Up @@ -101,10 +102,8 @@
$fields = $container->get(CustomFieldHandler::class)->getFieldDataFromPOST('Individual Needs', [], $customRequireFail);

try {
$data = array('gibbonPersonID' => $gibbonPersonID);
$sql = 'SELECT * FROM gibbonIN WHERE gibbonPersonID=:gibbonPersonID';
$result = $connection2->prepare($sql);
$result->execute($data);
$result = $container->get(INGateway::class)->selectBy(['gibbonPersonID' => $gibbonPersonID]);

} catch (PDOException $e) {
$partialFail = true;
}
Expand Down Expand Up @@ -135,10 +134,8 @@
foreach ($staff as $t) {
//Check to see if person is already registered as an assistant
try {
$dataGuest = array('gibbonPersonIDAssistant' => $t, 'gibbonPersonIDStudent' => $gibbonPersonID);
$sqlGuest = 'SELECT * FROM gibbonINAssistant WHERE gibbonPersonIDAssistant=:gibbonPersonIDAssistant AND gibbonPersonIDStudent=:gibbonPersonIDStudent';
$resultGuest = $connection2->prepare($sqlGuest);
$resultGuest->execute($dataGuest);
$resultGuest = $container->get(INAssistantGateway::class)->selectBy(['gibbonPersonIDAssistant' => $t, 'gibbonPersonIDStudent' => $gibbonPersonID]);

} catch (PDOException $e) {
$partialFail = true;
}
Expand All @@ -158,10 +155,8 @@
//UPDATE IEP
$strategies = $_POST['strategies'] ?? '';
try {
$data = array('gibbonPersonID' => $gibbonPersonID);
$sql = 'SELECT * FROM gibbonIN WHERE gibbonPersonID=:gibbonPersonID';
$result = $connection2->prepare($sql);
$result->execute($data);
$result = $container->get(INGateway::class)->selectBy(['gibbonPersonID' => $gibbonPersonID]);

} catch (PDOException $e) {
$partialFail = true;
}
Expand Down
7 changes: 3 additions & 4 deletions modules/Individual Needs/in_edit_assistant_deleteProcess.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\Domain\IndividualNeeds\INAssistantGateway;

include '../../gibbon.php';

$gibbonPersonIDAssistant = $_GET['gibbonPersonIDAssistant'] ?? '';
Expand All @@ -43,10 +45,7 @@
header("Location: {$URL}");
} else {
try {
$data = array('gibbonPersonIDStudent' => $gibbonPersonIDStudent, 'gibbonPersonIDAssistant' => $gibbonPersonIDAssistant);
$sql = 'SELECT * FROM gibbonINAssistant WHERE gibbonPersonIDStudent=:gibbonPersonIDStudent AND gibbonPersonIDAssistant=:gibbonPersonIDAssistant';
$result = $connection2->prepare($sql);
$result->execute($data);
$result = $container->get(INAssistantGateway::class)->selectBy(['gibbonPersonIDStudent' => $gibbonPersonIDStudent, 'gibbonPersonIDAssistant' => $gibbonPersonIDAssistant]);
} catch (PDOException $e) {
$URL .= '&return=error2';
header("Location: {$URL}");
Expand Down
15 changes: 9 additions & 6 deletions modules/Individual Needs/in_summary.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,10 @@
*/

use Gibbon\Forms\Form;
use Gibbon\Forms\DatabaseFormFactory;
use Gibbon\Tables\DataTable;
use Gibbon\Services\Format;
use Gibbon\Tables\DataTable;
use Gibbon\Forms\DatabaseFormFactory;
use Gibbon\Domain\System\AlertLevelGateway;
use Gibbon\Domain\IndividualNeeds\INGateway;

//Module includes
Expand Down Expand Up @@ -63,15 +64,17 @@
$form->addHiddenValue('address', $session->get('address'));

//SELECT FROM ARRAY
$sql = "SELECT gibbonINDescriptorID as value, name FROM gibbonINDescriptor ORDER BY sequenceNumber";
$result = $container->get(INGateway::class)->selecINDescriptor();

$row = $form->addRow();
$row->addLabel('gibbonINDescriptorID', __('Descriptor'));
$row->addSelect('gibbonINDescriptorID')->fromQuery($pdo, $sql)->selected($gibbonINDescriptorID)->placeholder();
$row->addSelect('gibbonINDescriptorID')->fromResults($result)->selected($gibbonINDescriptorID)->placeholder();

$result = $container->get(AlertLevelGateway::class)->selectAlertLevels();

$sql = "SELECT gibbonAlertLevelID as value, name FROM gibbonAlertLevel ORDER BY sequenceNumber";
$row = $form->addRow();
$row->addLabel('gibbonAlertLevelID', __('Alert Level'));
$row->addSelect('gibbonAlertLevelID')->fromQuery($pdo, $sql)->selected($gibbonAlertLevelID)->placeholder();
$row->addSelect('gibbonAlertLevelID')->fromResults($result)->selected($gibbonAlertLevelID)->placeholder();

$row = $form->addRow();
$row->addLabel('gibbonFormGroupID', __('Form Group'));
Expand Down
8 changes: 8 additions & 0 deletions src/Domain/IndividualNeeds/INArchiveGateway.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,5 +45,13 @@ class INArchiveGateway extends QueryableGateway implements ScrubbableGateway

private static $scrubbableKey = 'gibbonPersonID';
private static $scrubbableColumns = ['strategies' => '','targets' => '','notes' => '','descriptors' => ''];

public function selectINArchivesByPersonID($gibbonPersonID)
{
$data = ['gibbonPersonID' => $gibbonPersonID];
$sql = "SELECT gibbonINArchiveID as groupBy, gibbonINArchive.* FROM gibbonINArchive WHERE gibbonPersonID=:gibbonPersonID ORDER BY archiveTimestamp DESC";

return $this->db()->select($sql, $data);
}

}
8 changes: 8 additions & 0 deletions src/Domain/IndividualNeeds/INGateway.php
Original file line number Diff line number Diff line change
Expand Up @@ -235,4 +235,12 @@ public function getINStudentByPersonID($gibbonPersonID)

return $this->db()->select($sql, $data);
}

public function selecINDescriptor()
{
$data = [];
$sql = "SELECT gibbonINDescriptorID as value, name FROM gibbonINDescriptor ORDER BY sequenceNumber";

return $this->db()->select($sql, $data);
}
}
8 changes: 8 additions & 0 deletions src/Domain/System/AlertLevelGateway.php
Original file line number Diff line number Diff line change
Expand Up @@ -75,4 +75,12 @@ public function getByID(int $gibbonAlertLevelID, bool $translated = true)
]
: $row;
}

public function selectAlertLevels()
{
$data= [];
$sql = "SELECT gibbonAlertLevelID as value, name FROM gibbonAlertLevel ORDER BY sequenceNumber";

return $this->db()->select($sql, $data);
}
}

0 comments on commit f5b8825

Please sign in to comment.