Пример #1
0
<?php

require_once $_SERVER['DOCUMENT_ROOT'] . '/WebBristol/model/DAL/ComponentDAL.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/WebBristol/model/DAL/UserDAL.php';
require_once $_SERVER['DOCUMENT_ROOT'] . '/WebBristol/model/DAL/UserHasModuleDAL.php';
$idUser = filter_input(INPUT_POST, 'idUser');
$idExam = filter_input(INPUT_POST, 'idExam');
$mark = floatval(filter_input(INPUT_POST, 'mark'));
$component = ComponentDAL::findById($idExam);
$component->setMark($mark);
if (ComponentDAL::flush($component)) {
    $module = $component->getModule();
    $user = UserDAL::findById($idUser);
    $hasFailed = $user->hasFailed($module);
    $mustResit = $user->mustResit($module);
    $finalMark = $user->getFinalMark($module);
    $userHasModule = UserHasModuleDAL::findByStudentAndModule($idUser, $module->getId());
    $userHasModule->setHasFailed($hasFailed);
    $userHasModule->setMustPay($mustResit);
    $userHasModule->setFinalMark($finalMark);
    if ($hasFailed && $mustResit) {
        UserHasModuleDAL::flush($userHasModule);
        // Send mail -> Explain which component to resit and how to pay
        // (Always worst component to resit)
    } else {
        if ($hasFailed && !$mustResit) {
            UserHasModuleDAL::flush($userHasModule);
            // Send mail -> Tell he has failed the module and that there is no resit
        } else {
            if (!$hasFailed && $finalMark > 0) {
                UserHasModuleDAL::flush($userHasModule);
if ($role === 'Professor') {
    $componentsScheduled = ComponentDAL::findByModule($module);
    foreach ($componentsScheduled as $componentScheduled) {
        $typeScheduled = $componentScheduled->getType();
        if (!$componentScheduled->getIsResit() && $typeScheduled->getId() == $type) {
            $_SESSION['message']['warning'] = 'An ' . $typeScheduled->getTypeName() . ' has already been scheduled (' . $componentScheduled->getDate() . ') for this module.';
            header('Location: ../administration/schedule');
            die;
        }
    }
    $usersHaveModule = UserHasModuleDAL::findByModule($module);
    if (count($usersHaveModule) == 0) {
        $_SESSION['message']['warning'] = 'There is no student assigned to this module.';
        header('Location: ../administration/schedule');
        die;
    }
    foreach ($usersHaveModule as $userHasModule) {
        $component = new Component(0, 0, $dateSchedule, false);
        $component->setType($type);
        $component->setComponent(0);
        $component->setModule($module);
        $component->setUser($userHasModule->getUserId());
        ComponentDAL::flush($component);
    }
    $_SESSION['message']['success'] = 'Your exam has been scheduled with success.';
    header('Location: ../administration/schedule');
} else {
    // 403
    $_SESSION['message']['danger'] = 'You can\'t access this page.';
    header('Location: ../home');
}