diff --git a/db/StoredFunctions.sql b/db/StoredFunctions.sql index 72d147e7c990a4751d8260c0f28f348735a3f95e..f3b5df1519c8539722573a28c4e59f565c9f7a9e 100644 --- a/db/StoredFunctions.sql +++ b/db/StoredFunctions.sql @@ -115,6 +115,24 @@ BEGIN END // +DROP FUNCTION IF EXISTS SetRateType// +CREATE FUNCTION `SetRateType` + ( `pStudentID` INT, `pSubmoduleID` INT, + `pType` VARCHAR(30) CHARSET utf8 # enum('absence','pass') + ) RETURNS int(11) + NO SQL +BEGIN + DECLARE EXIT HANDLER FOR SQLEXCEPTION RETURN -1; + + INSERT INTO `session_options` + (StudentID, SubmoduleID, Type) VALUES(pStudentID, pSubmoduleID, pType) + ON DUPLICATE KEY UPDATE + session_options.Type = pType; + + RETURN 0; +END // + + # check, if any module is created DROP FUNCTION IF EXISTS InternalIsMapCreated// CREATE FUNCTION `InternalIsMapCreated` diff --git a/db/StoredProcedures.sql b/db/StoredProcedures.sql index 65ab5f2dbd6f9236f224b6afd580d00b01c2af11..8a335f9c5b2a9596a5215ad74302d017a78fba85 100644 --- a/db/StoredProcedures.sql +++ b/db/StoredProcedures.sql @@ -760,10 +760,13 @@ BEGIN view_roadmap.SubmoduleType AS 'SubmoduleControl', view_roadmap.ModuleType, rating_table.Rate, - rating_table.Date + rating_table.Date, + session_options.Type FROM `view_roadmap` - LEFT JOIN `rating_table` ON view_roadmap.SubmoduleID = rating_table.SubmoduleID AND + LEFT JOIN `rating_table` ON view_roadmap.SubmoduleID = rating_table.SubmoduleID AND rating_table.StudentID = pStudentID + LEFT JOIN `session_options` ON session_options.StudentID = pStudentID AND + session_options.SubmoduleID = rating_table.SubmoduleID WHERE view_roadmap.DisciplineID = pDisciplineID AND ( view_roadmap.ModuleType != 'exam' OR diff --git a/db/Structure.sql b/db/Structure.sql index 50de4f99ce491d4ea3c5abb9df18bcca082e4970..e88e11cb9300dbe05c60cdd13d92332332acc50f 100644 --- a/db/Structure.sql +++ b/db/Structure.sql @@ -90,7 +90,7 @@ CREATE TABLE IF NOT EXISTS `disciplines` ( `LectureCount` int(11) NOT NULL DEFAULT '0', `LabCount` int(11) NOT NULL DEFAULT '0', `FacultyID` int(11) NOT NULL, - -- isLocked (for editing structure) + -- IsLocked (for editing structure) `IsLocked` tinyint(1) NOT NULL DEFAULT '0', -- Milestone semester time (or is session time) @@ -536,6 +536,26 @@ CREATE TABLE IF NOT EXISTS `students_groups` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8; +-- -------------------------------------------------------- + +-- +-- Структура таблицы `session_options` +-- + +CREATE TABLE IF NOT EXISTS `session_options` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `SubmoduleID` int(11) NOT NULL, + `StudentID` int(11) NOT NULL, + `Type` enum('absence','pass') NOT NULL, + PRIMARY KEY (`ID`), + UNIQUE KEY `SubmoduleID` (`SubmoduleID`,`StudentID`), + KEY `SubmoduleID_2` (`SubmoduleID`), + KEY `StudentID` (`StudentID`), + KEY `StudentID_2` (`StudentID`), + KEY `StudentID_3` (`StudentID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + + -- -- Дамп данных таблицы `user_roles` @@ -736,6 +756,14 @@ ALTER TABLE `students_groups` ADD CONSTRAINT `students_groups_ibfk_3` FOREIGN KEY (`SemesterID`) REFERENCES `semesters` (`ID`); +-- +-- Ограничения внешнего ключа таблицы `session_options` +-- +ALTER TABLE `session_options` + ADD CONSTRAINT `session_options_ibfk_2` FOREIGN KEY (`StudentID`) REFERENCES `students` (`ID`), + ADD CONSTRAINT `session_options_ibfk_1` FOREIGN KEY (`SubmoduleID`) REFERENCES `submodules` (`ID`); + + /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; diff --git a/db/fix.sql b/db/fix.sql index bcc10aba3f3afaa01c4b76e60dcb1221c2e3bca3..2e734d53b47f4b5f88d141dd19ccb727f301e9f6 100644 --- a/db/fix.sql +++ b/db/fix.sql @@ -2,4 +2,22 @@ ALTER TABLE `disciplines` CHANGE `ExamType` `ExamType` ENUM( 'exam', 'credit', 'grading_credit' ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ; ALTER TABLE `disciplines` ADD `Subtype` ENUM( 'scientific_coursework', 'disciplinary_coursework' ) NULL DEFAULT NULL ; -ALTER TABLE `disciplines` CHANGE `isMilestone` `Milestone` INT( 11 ) NOT NULL DEFAULT '0'; \ No newline at end of file +ALTER TABLE `disciplines` CHANGE `isMilestone` `Milestone` INT( 11 ) NOT NULL DEFAULT '0'; + + +CREATE TABLE IF NOT EXISTS `session_options` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `SubmoduleID` int(11) NOT NULL, + `StudentID` int(11) NOT NULL, + `Type` enum('absence','pass') NOT NULL, + PRIMARY KEY (`ID`), + UNIQUE KEY `SubmoduleID` (`SubmoduleID`,`StudentID`), + KEY `SubmoduleID_2` (`SubmoduleID`), + KEY `StudentID` (`StudentID`), + KEY `StudentID_2` (`StudentID`), + KEY `StudentID_3` (`StudentID`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +ALTER TABLE `session_options` +ADD CONSTRAINT `session_options_ibfk_2` FOREIGN KEY (`StudentID`) REFERENCES `students` (`ID`), +ADD CONSTRAINT `session_options_ibfk_1` FOREIGN KEY (`SubmoduleID`) REFERENCES `submodules` (`ID`);