Skip to content
Snippets Groups Projects
Map.php 8.55 KiB
Newer Older
<?php defined('SYSPATH') or die('No direct script access.');
class Model_Map extends Model
    public $discipline;


    private function __construct(Model_Discipline $discipline) {
        $this->discipline = $discipline;
    }

    public static function of(Model_Discipline $discipline) {
        return new self($discipline);
    }

    public static function addModuleBonus($teacherID, $disciplineID) {
        $sql = "SELECT `AddModuleBonus`(:teacher, :discipline) AS `Num`";
        return DB::query(Database::SELECT, $sql)
            ->param(':teacher', $teacherID)
            ->param(':discipline', $disciplineID)
            ->execute();
    }

    public static function deleteModuleBonus($teacherID, $disciplineID) {
        $sql = "SELECT `DeleteModuleBonus`(:teacher, :discipline) AS `Num`";
        return DB::query(Database::SELECT, $sql)
            ->param(':teacher', $teacherID)
            ->param(':discipline', $disciplineID)
            ->execute();
    }

    public static function addModule($teacherID, $disciplineID, $title) {
        $sql = "SELECT `AddModule`(:teacher, :discipline, :title) AS `Num`";
        return DB::query(Database::SELECT, $sql)
            ->parameters([
                ':teacher'    => $teacherID,
                ':discipline' => $disciplineID,
                ':title'       => $title,
            ])->execute();
    }

    public static function deleteModule($teacherID, $moduleID) {
        $sql = "SELECT `DeleteModule`(:teacher, :module) AS `Num`";
        return DB::query(Database::SELECT, $sql)
            ->param(':teacher', $teacherID)
            ->param(':module', $moduleID)
            ->execute();
    }

    public static function changeModuleName($teacherID, $moduleID, $name) {
        $sql = "SELECT `ChangeModuleName`(:teacher, :module, :name) AS `Num`";
        return DB::query(Database::SELECT, $sql)
            ->parameters([
                ':teacher' => $teacherID,
                ':module'  => $moduleID,
                ':name'    => $name,
            ])->execute();
    }

    public static function addSubmodule($teacherID, $moduleID, $maxRate, $title, $description, $typeControl) {
        $sql = "SELECT `AddSubmodule`(:teacher, :moduleID, :maxRate, :title, :desc, :control) AS `Num`";
        return DB::query(Database::SELECT, $sql)
            ->parameters([
                ':teacher'  => $teacherID,
                ':moduleID' => $moduleID,
                ':maxRate'  => $maxRate,
                ':title'    => $title,
                ':desc'     => $description,
                ':control'  => $typeControl,
            ])->execute();
    }

    public static function deleteSubmodule($teacherID, $submoduleID) {
        $sql = "SELECT `DeleteSubmodule`(:teacher, :submodule) AS `Num`";
        return DB::query(Database::SELECT, $sql)
            ->parameters([
                ':teacher'   => $teacherID,
                ':submodule' => $submoduleID,
            ])->execute();
    }

    public static function changeSubmoduleName($teacherID, $submoduleID, $name) {
        $sql = "SELECT `ChangeSubmoduleName`(:teacher, :submodule, :name) AS `Num`";
        return DB::query(Database::SELECT, $sql)
            ->parameters([
                ':teacher'   => $teacherID,
                ':submodule' => $submoduleID,
                ':name'      => $name,
            ])->execute();
    }


    public static function swapModuleOrder($teacherID, $moduleID1, $moduleID2) {
        $sql = "SELECT `SwapModuleOrder`(:teacher, :moduleID1, :moduleID2) AS `Num`";
        return DB::query(Database::SELECT, $sql)
            ->parameters([
                ':teacher'   => $teacherID,
                ':moduleID1' => $moduleID1,
                ':moduleID2' => $moduleID2,
            ])->execute();
    }

    public static function swapSubmoduleOrder($teacherID, $submoduleID1, $submoduleID2) {
        $sql = "SELECT `SwapSubmoduleOrder`(:teacher, :submodule1, :submodule2) AS `Num`";
        return DB::query(Database::SELECT, $sql)
            ->parameters([
                ':teacher'    => $teacherID,
                ':submodule1' => $submoduleID1,
                ':submodule2' => $submoduleID2,
            ])->execute();
    }

    public static function changeSubmoduleMaxAndControl($teacherID, $submoduleID, $maxRate, $controlType) {
        $sql = "SELECT `ChangeSubmoduleMaxAndControl`(:teacher, :submodule, :maxRate, :control) AS `Num`";
        return DB::query(Database::SELECT, $sql)
            ->parameters([
                ':teacher'   => $teacherID,
                ':submodule' => $submoduleID,
                ':maxRate'   => $maxRate,
                ':control'   => $controlType,
            ])->execute();
    }

    public static function changeDisciplineSubject($teacherID, $disciplineID, $subjectID) {
        $sql = "SELECT `ChangeDisciplineSubject`(:teacher, :discipline, :subject) AS `Num`";
        return DB::query(Database::SELECT, $sql)
            ->parameters([
                ':teacher'    => $teacherID,
                ':discipline' => $disciplineID,
                ':subject'    => $subjectID,
            ])->execute();
    }

    public static function changeDisciplineControl($teacherID, $disciplineID, $control) {
        $sql = "SELECT `ChangeDisciplineControl`(:teacher, :discipline, :control) AS `Num`";
        return DB::query(Database::SELECT, $sql)
            ->parameters([
                ':teacher'    => $teacherID,
                ':discipline' => $disciplineID,
                ':control'    => $control,
            ])->execute();
    }

    public static function changeDisciplineHours($teacherID, $disciplineID, $hours, $type) {
        $sql = "SELECT `ChangeDisciplineHours`(:teacher, :discipline, :hours, :type) AS `Num`";
        return DB::query(Database::SELECT, $sql)
            ->parameters([
                ':teacher'    => $teacherID,
                ':discipline' => $disciplineID,
                ':hours'      => $hours,
                ':type'       => $type,
            ])->execute();
    }

    public static function bindGroup($teacherID, $disciplineID, $groupID) {
        $sql = "SELECT `BindGroup`(:teacher, :discipline, :group) AS `Num`";
        return DB::query(Database::SELECT, $sql)
            ->parameters([
                ':teacher'    => $teacherID,
                ':discipline' => $disciplineID,
                ':group'      => $groupID,
            ])->execute();
    }

    /**
     * Get the disciplines's roadmap (учебная карта).
     * @param $discipline int discipline id
     * @return Database_Result select from <tt>view_roadmap</tt> table
     */
    public static function getRoadmap($discipline, $type) {
        $sql = "CALL `GetRoadmap`(:discipline, :type)";
        return DB::query(Database::SELECT, $sql)
            ->param(':discipline', $discipline)
            ->param(':type', $type)
            ->execute();
    }

    public function getModules($type) {
        $sql = "CALL `Discipline_GetModules`(:discipline, :type)";
        return DB::query(Database::SELECT, $sql)
            ->param(':discipline', $this->discipline->ID)
            ->param(':type', $type)
            ->execute();
    }

    public function getSubmodules($type) {
        $sql = "CALL `Discipline_GetSubmodules`(:discipline, :type)";
        return DB::query(Database::SELECT, $sql)
            ->param(':discipline', $this->discipline->ID)
            ->param(':type', $type)
            ->execute();
    }

    public static function unbindGroup($teacherID, $disciplineID, $groupID) {
        $sql = "SELECT `UnbindGroup`(:teacher, :discipline, :group) AS `Num`";
        return DB::query(Database::SELECT, $sql)
            ->parameters([
                ':teacher'    => $teacherID,
                ':discipline' => $disciplineID,
                ':group'      => $groupID,
            ])->execute();
    }

    public static function bindStudent($teacherID, $disciplineID, $studentID) {
        $sql = "SELECT `BindStudent`(:teacher, :discipline, :student) AS `Num`";
        return DB::query(Database::SELECT, $sql)
            ->parameters([
                ':teacher'    => $teacherID,
                ':discipline' => $disciplineID,
                ':student'    => $studentID,
            ])->execute();
    }

    public static function UnbindStudent($teacherID, $disciplineID, $studentID) {
        $sql = "SELECT `UnbindStudent`(:teacher, :discipline, :student) AS `Num`";
        return DB::query(Database::SELECT, $sql)
            ->parameters([
                ':teacher'    => $teacherID,
                ':discipline' => $disciplineID,
                ':student'    => $studentID,
            ])->execute();