diff --git a/db/StoredProcedures.sql b/db/StoredProcedures.sql index c9b3cb3fdfaeaaf5ff45a768a2f80c67118cc53f..3a7cbccf4a1b5ecefae564effe23d305265dfc42 100644 --- a/db/StoredProcedures.sql +++ b/db/StoredProcedures.sql @@ -1,11 +1,42 @@ DELIMITER // --- ChangePersonalDataForTeacher --- deprecated block -DROP FUNCTION IF EXISTS InternalCheckRate// -DROP FUNCTION IF EXISTS ChangeStudentRate// -DROP PROCEDURE IF EXISTS GetDepartmentsByFaculty// -DROP PROCEDURE IF EXISTS GetStudentsByGrade// + +-- ------------------------------------------------------------------------------------------- +-- ====== Triggers ======= -- +-- ------------------------------------------------------------------------------------------- + +-- CREATE TRIGGER `rating_table_bi` +-- BEFORE INSERT ON `rating_table` +-- FOR EACH ROW +-- BEGIN +-- INSERT INTO `logs_rating` +-- (logs_rating.StudentID, logs_rating.SubmoduleID, logs_rating.TeacherID, logs_rating.Rate, logs_rating.Action ) +-- VALUES (NEW.StudentID, NEW.SubModuleID, NEW.TeacherID, NEW.Rate, 'change'); +-- END// + + +-- CREATE TRIGGER `rating_table_bd` +-- BEFORE DELETE ON `rating_table` +-- FOR EACH ROW +-- BEGIN +-- INSERT INTO `logs_rating` +-- (logs_rating.StudentID, logs_rating.SubmoduleID, logs_rating.TeacherID, logs_rating.Rate, logs_rating.Action ) +-- VALUES (OLD.StudentID, OLD.SubModuleID, OLD.TeacherID, OLD.Rate, 'delete'); +-- END// + + +-- CREATE TRIGGER `rating_table_bu` +-- BEFORE UPDATE ON `rating_table` +-- FOR EACH ROW +-- BEGIN +-- INSERT INTO `logs_rating` +-- (logs_rating.StudentID, logs_rating.SubmoduleID, logs_rating.TeacherID, logs_rating.Rate, logs_rating.Action ) +-- VALUES (NEW.StudentID, NEW.SubModuleID, NEW.TeacherID, NEW.Rate, 'add'); +-- END// + +-- INSERT INTO `logs_rating` +-- (logs_rating.StudentID, logs_rating.SubmoduleID, logs_rating.TeacherID, logs_rating.Rate, logs_rating.Action ) +-- VALUES (StudentID, SubModuleID, TeacherID, Rate, 'change'); -- ------------------------------------------------------------------------------------------- -- ====== Internals ======= -- @@ -3055,56 +3086,53 @@ END // -- ====== Requests ======= -- -- ------------------------------------------------------------------------------------------- --- DROP PROCEDURE IF EXISTS GetLastRequests// --- CREATE PROCEDURE `GetLastRequests` ( IN `CountN` INT --- ) --- NO SQL --- BEGIN --- DECLARE offsetN, allNum, countClone INT; --- SELECT COUNT(requests.ID) INTO allNum FROM `requests`; --- SET countClone = CountN; --- IF CountN = -1 THEN --- SET countClone = allNum; --- END IF; - --- SET offsetN = allNum - CountN; --- IF offsetN < 0 THEN --- SET offsetN = 0; --- END IF; - --- SELECT requests.ID, --- requests.AccountID, --- requests.Information, --- requests.Date, --- requests.Status --- FROM `requests` --- WHERE requests.Status = 0 --- LIMIT countClone OFFSET offsetN; - --- END // - - --- DROP PROCEDURE IF EXISTS GetFirstRequests// --- CREATE PROCEDURE `GetFirstRequests` ( IN `CountN` INT --- ) --- NO SQL --- BEGIN --- DECLARE allNum, countClone INT; --- SELECT COUNT(requests.ID) INTO allNum FROM `requests`; --- SET countClone = CountN; --- IF CountN = -1 THEN --- SET countClone = allNum; --- END IF; - --- SELECT requests.ID, --- requests.AccountID, --- requests.Information, --- requests.Date, --- requests.Status --- FROM `requests` --- WHERE requests.Status = 0 --- LIMIT countClone; --- END // +DROP PROCEDURE IF EXISTS GetRequests// +CREATE PROCEDURE `GetRequests` ( IN `OffsetN` INT, + IN `CountN` INT, + IN `AccountID` INT, + IN `vStatus` VARCHAR(20) charset utf8 + ) + NO SQL +BEGIN + SELECT requests.ID, + requests.AccountID, + requests.Title, + requests.Description, + requests.Date, + requests.Status + FROM `requests` + WHERE ( AccountID = 0 OR AccountID = requests.AccountID ) AND + ( vStatus = 'all' OR requests.Status = vStatus ) + LIMIT CountN OFFSET OffsetN; +END // + + +DROP FUNCTION IF EXISTS SetRequestStatus// +CREATE FUNCTION `SetRequestStatus` ( `RequestID` INT, + `vStatus` VARCHAR(20) charset utf8 + ) RETURNS int(11) + NO SQL +BEGIN + UPDATE `requests` + SET requests.Status = vStatus + WHERE RequestID = requests.ID + LIMIT 1; + RETURN 0; +END// + + +DROP FUNCTION IF EXISTS CreateRequest// +CREATE FUNCTION `CreateRequest` ( `AccountID` INT, + `vTitle` VARCHAR(50) charset utf8, + `vDescription` VARCHAR(50) charset utf8 + ) RETURNS int(11) + NO SQL +BEGIN + INSERT INTO `requests` + (requests.AccountID, requests.Title, requests.Description, requests.Status) + VALUES (AccountID, vTitle, vDescription, 'opened'); + RETURN 0; +END// diff --git a/db/Structure.sql b/db/Structure.sql index edd2bc8255096edc3be68251f76850a4ed317255..48f2f59d3d7763c8506c0c5c51bb376fe2743819 100644 --- a/db/Structure.sql +++ b/db/Structure.sql @@ -268,9 +268,10 @@ CREATE TABLE IF NOT EXISTS `rating_table` ( CREATE TABLE IF NOT EXISTS `requests` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `AccountID` int(11) DEFAULT NULL, - `Information` text NOT NULL, - `Date` date NOT NULL, - `Status` int(11) NOT NULL DEFAULT '0', + `Title` varchar(50) NULL DEFAULT NULL, + `Description` text NOT NULL, + `Date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + `Status` enum('opened','processed','closed') NOT NULL DEFAULT 'opened', PRIMARY KEY (`ID`), KEY `AccountID` (`AccountID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;