public static function updateSubmission() { // Process updating submissions $submissions = SubmissionsDB::getSubmissionsBy('submissionId', $_SESSION['arguments']); if (empty($submissions)) { HomeView::show(); header('Location: /' . $_SESSION['base']); } elseif ($_SERVER["REQUEST_METHOD"] == "GET") { $_SESSION['submissions'] = $submissions; SubmissionView::showUpdate(); } else { $parms = $submissions[0]->getParameters(); $parms['submissionFile'] = array_key_exists('submissionFile', $_POST) ? $_POST['submissionFile'] : ""; $newSubmission = new Submission($parms); $newSubmission->setSubmissionId($submissions[0]->getSubmissionId()); $submission = SubmissionsDB::updateSubmission($newSubmission); if ($submission->getErrorCount() != 0) { $_SESSION['submissions'] = array($newSubmission); SubmissionView::showUpdate(); } else { HomeView::show(); header('Location: /' . $_SESSION['base']); } } }
public function testGetSubmissionBySubmitterName() { $myDb = DBMaker::create('ptest'); Database::clearDB(); $db = Database::getDB('ptest', 'C:\\xampp\\myConfig.ini'); $submissions = SubmissionsDB::getSubmissionsBy('submitterName', 'Kay'); $this->assertEquals(count($submissions), 2, 'Kay should have two submissions'); foreach ($submissions as $submission) { $this->assertTrue(is_a($submission, "Submission"), 'The returned values should be Submission objects'); $this->assertTrue(empty($submission->getErrors()), "The returned submissions should have no errors"); } }
public static function show() { $arguments = array_key_exists('arguments', $_SESSION) ? $_SESSION['arguments'] : 0; $user = $_SESSION['user']; if (!is_null($user)) { $_SESSION['user'] = $user; $_SESSION['userSubmissions'] = SubmissionsDB::getSubmissionsBy('submitterName', $user->getUserName()); $_SESSION['userReviews'] = ReviewsDB::getReviewsBy('reviewerName', $user->getUserName()); UserView::show(); } else { HomeView::show(); } }
?> <h2>It should not allow insertion of a duplicate submission</h2> <?php DBMaker::create('ptest'); Database::clearDB(); $db = Database::getDB('ptest', 'C:\\xampp\\myConfig.ini'); $beforeCount = count(SubmissionsDB::getSubmissionsBy()); $duplicateTest = array("submitterName" => "Kay", "assignmentNumber" => "1", "submissionFile" => "V:\test.txt"); $s1 = new Submission($duplicateTest); $newS1 = SubmissionsDB::addSubmission($s1); $afterCount = count(SubmissionsDB::getSubmissionsBy()); echo "The inserted submission errors:"; print_r($newS1->getErrors()); echo "Before the database has {$beforeCount}"; echo "Now the database has {$afterCount}"; ?> <h2>It should get a submission by submitter name</h2> <?php DBMaker::create('ptest'); Database::clearDB(); $db = Database::getDB('ptest', 'C:\\xampp\\myConfig.ini'); $submissions = SubmissionsDB::getSubmissionsBy('submitterName', 'Kay'); echo "<br>Number of submissions by Kay is " . count($submissions); foreach ($submissions as $submission) { echo "<br>Submission: {$submission}<br>"; } ?> </body> </html>
public static function updateSubmission($submission) { // Update a submission try { $db = Database::getDB(); if (is_null($submission) || $submission->getErrorCount() > 0) { return $submission; } $checkSubmission = SubmissionsDB::getSubmissionsBy('submissionId', $submission->getSubmissionId()); if (empty($checkSubmission)) { $submission->setError('submissionId', 'SUBMISSION_DOES_NOT_EXIST'); } elseif ($checkSubmission[0]->getSubmitterName() != $submission->getSubmitterName()) { $submission->setError('submitterName', 'SUBMITTER_NAME_DOES_NOT_MATCH'); } elseif ($checkSubmission[0]->getAssignmentNumber() != $submission->getAssignmentNumber()) { $submission->setError('assignmentNumber', 'SUBMISSION_ASSIGNMENT_NUMBERS_DO_NOT_MATCH'); } if ($submission->getErrorCount() > 0) { return $submission; } $query = "UPDATE Submissions SET submissionFile = :submissionFile\r\n\t \t\t\t WHERE submissionId = :submissionId"; $statement = $db->prepare($query); $statement->bindValue(":submissionFile", $submission->getSubmissionFile()); $statement->bindValue(":submissionId", $submission->getSubmissionId()); $statement->execute(); $statement->closeCursor(); } catch (Exception $e) { // Not permanent error handling $submission->setError('submissionId', 'SUBMISSION_COULD_NOT_BE_UPDATED'); } return $submission; }