Skip to content
Snippets Groups Projects
Commit 5c9d4445 authored by PavelBegunkov's avatar PavelBegunkov
Browse files

fair rate counting

parent 43101c5e
Branches
Tags
No related merge requests found
......@@ -1810,7 +1810,7 @@ BEGIN
teachers.FirstName AS 'First',
teachers.SecondName AS 'Second',
GetRateForDisc(StudentID, disciplines.ID ) AS 'Rate',
GetMaxRateForDisc(StudentID, disciplines.ID ) AS 'MaxCurrentRate',
GetMaxRateForDisc(disciplines.ID ) AS 'MaxCurrentRate',
InternalIsMapCreated(disciplines.ID) AS 'isMapCreated',
rating_table.Rate AS 'ExamRate'
FROM `disciplines`
......@@ -1819,7 +1819,7 @@ BEGIN
LEFT JOIN `modules` ON disciplines.ID = modules.DisciplineID AND
modules.Type = 2
LEFT JOIN `submodules` ON modules.ID = submodules.ModuleID
LEFT JOIN `rating_table` ON submodules.ID = rating_table.SubModuleID AND
LEFT JOIN `rating_table` ON submodules.ID = rating_table.SubmoduleID AND
rating_table.StudentID = StudentID
WHERE GetCurSemesterID() = disciplines.SemesterID AND
InternalIsStudentAttached(StudentID, disciplines.ID)
......@@ -1847,7 +1847,7 @@ BEGIN
FROM `submodules`
INNER JOIN `modules` ON submodules.ModuleID = modules.ID AND
DisciplineID = modules.DisciplineID
LEFT JOIN `rating_table` ON submodules.ID = rating_table.SubModuleID AND
LEFT JOIN `rating_table` ON submodules.ID = rating_table.SubmoduleID AND
StudentID = rating_table.StudentID
ORDER BY modules.OrderNum ASC,
submodules.OrderNum ASC;
......@@ -3240,17 +3240,15 @@ END //
DROP FUNCTION IF EXISTS GetMaxRateForDisc//
CREATE FUNCTION `GetMaxRateForDisc` ( `StudentID` INT,
`DisciplineID` INT
CREATE FUNCTION `GetMaxRateForDisc` ( `DisciplineID` INT
) RETURNS int(11)
NO SQL
BEGIN
RETURN ( SELECT SUM(submodules.MaxRate)
FROM `rating_table`
INNER JOIN `submodules` ON rating_table.SubmoduleID = submodules.ID
INNER JOIN `modules` ON submodules.ModuleID = modules.ID AND
DisciplineID = modules.DisciplineID
WHERE rating_table.StudentID = StudentID
FROM `modules`
LEFT JOIN `submodules` ON submodules.ModuleID = modules.ID
WHERE modules.DisciplineID = DisciplineID AND
submodules.isUsed != 0
LIMIT 1
);
END //
......@@ -3266,7 +3264,7 @@ CREATE FUNCTION `SetStudentRate`( `TeacherID` INT,
NO SQL
BEGIN
DECLARE checker, DisciplineID, groupID, rateID INT;
DECLARE isLocked tinyint;
DECLARE isLocked, isUsed tinyint;
SET groupID = -1;
SELECT students.StudyGroupID
......@@ -3280,8 +3278,8 @@ BEGIN
SET isLocked = 0;
SET DisciplineID = -1;
SELECT modules.DisciplineID, disciplines.isLocked, rating_table.StudentID
INTO DisciplineID, isLocked, rateID
SELECT modules.DisciplineID, disciplines.isLocked, rating_table.ID, submodules.isUsed
INTO DisciplineID, isLocked, rateID, isUsed
FROM `submodules`
INNER JOIN `modules` ON submodules.ModuleID = modules.ID
INNER JOIN `disciplines` ON modules.DisciplineID = disciplines.ID
......@@ -3292,7 +3290,7 @@ BEGIN
LEFT JOIN `disciplines_students` ON disciplines.ID = disciplines_students.DisciplineID AND
StudentID = disciplines_students.StudentID AND
1 = disciplines_students.Type
LEFT JOIN `rating_table` ON SubModuleID = rating_table.SubModuleID AND
LEFT JOIN `rating_table` ON SubModuleID = rating_table.SubmoduleID AND
StudentID = rating_table.StudentID
WHERE submodules.ID = SubModuleID AND
( disciplines_students.ID IS NOT NULL OR
......@@ -3337,6 +3335,13 @@ BEGIN
rating_table.Date
)
VALUES ( StudentID, TeacherID, SubmoduleID, Rate, CURDATE() );
IF NOT isUsed THEN
UPDATE `submodules`
SET submodules.isUsed = 1
WHERE submodules.ID = SubModuleID
LIMIT 1;
END IF;
END IF;
RETURN 0;
END //
......
......@@ -16,71 +16,19 @@ ALTER TABLE `recovery_tokens`
ADD CONSTRAINT `recovery_tokens_ibfk_1` FOREIGN KEY (`AccountID`) REFERENCES `accounts` (`ID`)//
DROP FUNCTION IF EXISTS CreateRecoveryToken//
CREATE FUNCTION `CreateRecoveryToken` ( `AccountID` INT,
`Token` VARCHAR(100) charset utf8
) RETURNS int(11)
NO SQL
BEGIN
DECLARE checker INT;
SET checker = -1;
SELECT recovery_tokens.ID
INTO checker
FROM `recovery_tokens`
WHERE recovery_tokens.Token = Token
LIMIT 1;
IF checker <= 0 THEN
RETURN -1;
END IF;
INSERT INTO `recovery_tokens`
(recovery_tokens.AccountID, recovery_tokens.Token )
VALUES (AccountID, Token);
RETURN LAST_INSERT_ID();
END//
DROP FUNCTION IF EXISTS UseRecoveryToken//
CREATE FUNCTION `UseRecoveryToken` ( `Token` VARCHAR(100) charset utf8
) RETURNS int(11)
NO SQL
BEGIN
DECLARE checker INT;
SET checker = -1;
SELECT recovery_tokens.ID
INTO checker
FROM `recovery_tokens`
WHERE recovery_tokens.Token = Token
LIMIT 1;
IF checker <= 0 THEN
RETURN -1;
END IF;
UPDATE `recovery_tokens`
SET recovery_tokens.isUsed = 1
WHERE recovery_tokens.Token = Token
LIMIT 1;
END//
DROP PROCEDURE IF EXISTS GetRecoveryInfoByToken//
CREATE PROCEDURE `GetRecoveryInfoByToken` ( IN `Token` VARCHAR(100) charset utf8
)
NO SQL
BEGIN
SELECT recovery_tokens.ID,
recovery_tokens.AccountID,
recovery_tokens.Date,
recovery_tokens.Token,
recovery_tokens.isUsed
FROM `recovery_tokens`
WHERE recovery_tokens.Token = Token
LIMIT 1;
END //
ALTER TABLE `submodules`
ADD `isUsed` tinyint(1) NOT NULL DEFAULT '0'//
UPDATE `submodules`
SET submodules.isUsed = 1
WHERE submodules.ID IN
(
SELECT DISTINCT rating_table.SubmoduleID
FROM `rating_table`
)//
DELIMITER ;
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment