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

refactoring

parent 2d20d329
Branches
Tags
No related merge requests found
......@@ -250,7 +250,28 @@ BEGIN
);
END //
DROP FUNCTION IF EXISTS GetGradeID//
CREATE FUNCTION `GetGradeID`( `Grade` INT,
`Degree` VARCHAR(30) -- enum('bachelor','master','specialist')
) RETURNS int(11)
NO SQL
BEGIN
DECLARE res INT;
SELECT grades.ID
INTO res
FROM `grades`
WHERE grades.Grade = Grade And
grades.Degree = Degree
LIMIT 1;
IF res > 0 THEN
RETURN res;
ELSE
RETURN -1;
END IF;
END //
......@@ -2360,34 +2381,28 @@ CREATE FUNCTION `SwapModuleOrder` ( `TeacherID` INT,
BEGIN
DECLARE checker, ord1, ord2, disc1, disc2 INT;
SELECT COUNT(modules.ID)
INTO checker
FROM `modules`
INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID
INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = TeacherID
WHERE ( modules.ID = ModuleID1 OR
modules.ID = ModuleID2 ) AND
modules.isExam = 0
LIMIT 1;
IF checker != 2 THEN
RETURN -1;
END IF;
SET disc1 = -1;
SET disc2 = -1;
SELECT modules.OrderNum,
modules.DisciplineID
INTO ord1, disc1
FROM `modules`
WHERE modules.ID = ModuleID1
INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID
WHERE TeacherID = disciplines.AuthorID AND
modules.ID = ModuleID1 AND
modules.isExam = 0
LIMIT 1;
SELECT modules.OrderNum,
modules.DisciplineID
INTO ord2, disc2
FROM `modules`
WHERE modules.ID = ModuleID2
INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID
WHERE TeacherID = disciplines.AuthorID AND
modules.ID = ModuleID2 AND
modules.isExam = 0
LIMIT 1;
IF disc1 != disc2 THEN
IF disc1 != disc2 OR disc1 <= 0 THEN
RETURN -1;
END IF;
......@@ -2397,11 +2412,13 @@ BEGIN
UPDATE `modules`
SET modules.OrderNum = ord1
WHERE modules.ID = ModuleID2;
WHERE modules.ID = ModuleID2
LIMIT 1;
UPDATE `modules`
SET modules.OrderNum = ord2
WHERE modules.ID = ModuleID1;
WHERE modules.ID = ModuleID1
LIMIT 1;
RETURN 0;
END //
......@@ -2446,16 +2463,16 @@ CREATE FUNCTION `ChangeSubmodule` ( `TeacherID` INT,
BEGIN
DECLARE checker INT;
SET checker = -1;
SELECT modules.ID
INTO checker
FROM `submodules`
INNER JOIN `modules` ON submodules.ModuleID = modules.ID
INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID
INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = TeacherID
WHERE submodules.ID = SubmoduleID AND
modules.isExam = 0
WHERE TeacherID = disciplines.AuthorID AND
SubmoduleID = submodules.ID
LIMIT 1;
IF NOT (checker > 0) THEN
IF checker <= 0 THEN
RETURN -1;
END IF;
......@@ -2463,7 +2480,8 @@ BEGIN
SELECT submodules.ID
INTO checker
FROM `submodules`
WHERE submodules.ModuleID = checker AND submodules.OrderNum = OrderNum
WHERE submodules.ModuleID = checker AND
submodules.OrderNum = OrderNum
LIMIT 1;
IF checker > 0 THEN
RETURN -1;
......@@ -2475,7 +2493,8 @@ BEGIN
submodules.Name = Name,
submodules.Description = Description,
submodules.Type = ControlType
WHERE submodules.ID = SubmoduleID;
WHERE submodules.ID = SubmoduleID
LIMIT 1;
RETURN 0;
END //
......@@ -2488,22 +2507,24 @@ CREATE FUNCTION `ChangeSubmoduleControlType`( `TeacherID` INT,
BEGIN
DECLARE checker INT;
SET checker = -1;
SELECT submodules.ID
INTO checker
FROM `submodules`
INNER JOIN `modules` ON submodules.ModuleID = modules.ID
INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID
INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = TeacherID
WHERE submodules.ID = SubmoduleID AND
WHERE TeacherID = disciplines.AuthorID AND
SubmoduleID = submodules.ID AND
modules.isExam = 0
LIMIT 1;
IF NOT (checker > 0) THEN
IF checker <= 0 THEN
RETURN -1;
END IF;
UPDATE `submodules`
SET submodules.Type = ControlType
WHERE submodules.ID = SubmoduleID;
WHERE submodules.ID = SubmoduleID
LIMIT 1;
RETURN 0;
END //
......@@ -2516,22 +2537,20 @@ CREATE FUNCTION `ChangeSubmoduleMaxRate` ( `TeacherID` INT,
BEGIN
DECLARE checker INT;
SET checker = -1;
SELECT submodules.ID
INTO checker
FROM `submodules`
INNER JOIN `modules` ON submodules.ModuleID = modules.ID
INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID
INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = TeacherID
WHERE submodules.ID = SubmoduleID AND
modules.isExam = 0
WHERE TeacherID = disciplines.AuthorID AND
SubmoduleID = submodules.ID
LIMIT 1;
IF NOT (checker > 0) THEN
RETURN -1;
END IF;
UPDATE `submodules`
SET submodules.MaxRate = MaxRate
WHERE submodules.ID = SubmoduleID;
WHERE submodules.ID = SubmoduleID
LIMIT 1;
RETURN 0;
END //
......@@ -2544,16 +2563,16 @@ CREATE FUNCTION `ChangeSubmoduleOrder` ( `TeacherID` INT,
BEGIN
DECLARE checker INT;
SET checker = -1;
SELECT modules.ID
INTO checker
FROM `submodules`
INNER JOIN `modules` ON submodules.ModuleID = modules.ID
INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID
INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = TeacherID
WHERE submodules.ID = SubmoduleID AND
modules.isExam = 0
WHERE TeacherID = disciplines.AuthorID AND
SubmoduleID = submodules.ID
LIMIT 1;
IF NOT (checker > 0) THEN
IF checker <= 0 THEN
RETURN -1;
END IF;
......@@ -2562,7 +2581,8 @@ BEGIN
SELECT submodules.ID
INTO checker
FROM `submodules`
WHERE submodules.ModuleID = checker AND submodules.OrderNum = OrderNum
WHERE submodules.ModuleID = checker AND
submodules.OrderNum = OrderNum
LIMIT 1;
IF checker > 0 THEN
RETURN -1;
......@@ -2571,7 +2591,8 @@ BEGIN
UPDATE `submodules`
SET submodules.OrderNum = OrderNum
WHERE submodules.ID = SubmoduleID;
WHERE submodules.ID = SubmoduleID
LIMIT 1;
RETURN 0;
END //
......@@ -2584,22 +2605,23 @@ CREATE FUNCTION `ChangeSubmoduleName` ( `TeacherID` INT,
BEGIN
DECLARE checker INT;
SET checker = -1;
SELECT submodules.ID
INTO checker
FROM `submodules`
INNER JOIN `modules` ON submodules.ModuleID = modules.ID
INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID
INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = TeacherID
WHERE submodules.ID = SubmoduleID AND
modules.isExam = 0
WHERE TeacherID = disciplines.AuthorID AND
SubmoduleID = submodules.ID
LIMIT 1;
IF NOT (checker > 0) THEN
IF checker > 0 THEN
RETURN -1;
END IF;
UPDATE `submodules`
SET submodules.Name = Name
WHERE submodules.ID = SubmoduleID;
WHERE submodules.ID = SubmoduleID
LIMIT 1;
RETURN 0;
END //
......@@ -2612,22 +2634,23 @@ CREATE FUNCTION `ChangeSubmoduleDescription` ( `TeacherID` INT,
BEGIN
DECLARE checker INT;
SET checker = -1;
SELECT submodules.ID
INTO checker
FROM `submodules`
INNER JOIN `modules` ON submodules.ModuleID = modules.ID
INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID
INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = TeacherID
WHERE submodules.ID = SubmoduleID AND
modules.isExam = 0
WHERE TeacherID = disciplines.AuthorID AND
SubmoduleID = submodules.ID
LIMIT 1;
IF NOT (checker > 0) THEN
IF checker > 0 THEN
RETURN -1;
END IF;
UPDATE `submodules`
SET submodules.Description = Description
WHERE submodules.ID = SubmoduleID;
WHERE submodules.ID = SubmoduleID
LIMIT 1;
RETURN 0;
END //
......@@ -2641,14 +2664,14 @@ CREATE FUNCTION `DeleteSubmodule` ( `TeacherID` INT,
BEGIN
DECLARE checker INT;
SET checker = -1;
SELECT submodules.ID
INTO checker
FROM `submodules`
INNER JOIN `modules` ON modules.ID = submodules.ModuleID AND
modules.isExam = 0
INNER JOIN `disciplines` ON modules.DisciplineID = disciplines.ID AND
TeacherID = disciplines.AuthorID
WHERE SubmoduleID = submodules.ID
INNER JOIN `modules` ON modules.ID = submodules.ModuleID
INNER JOIN `disciplines` ON modules.DisciplineID = disciplines.ID
WHERE TeacherID = disciplines.AuthorID AND
SubmoduleID = submodules.ID
LIMIT 1;
IF checker <= 0 THEN
RETURN -1;
......@@ -2665,8 +2688,8 @@ BEGIN
END IF;
DELETE FROM `submodules`
WHERE submodules.ID = SubmoduleID;
WHERE submodules.ID = SubmoduleID
LIMIT 1;
RETURN 0;
END //
......@@ -2684,17 +2707,15 @@ CREATE FUNCTION `AddSubmodule` ( `TeacherID` INT,
BEGIN
DECLARE checker INT;
SET checker = -1;
SELECT modules.ID
INTO checker
FROM `modules`
INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID
INNER JOIN `disciplines_teachers` ON disciplines_teachers.TeacherID = TeacherID AND
disciplines_teachers.DisciplineID = disciplines.ID
WHERE modules.ID = ModuleID AND
modules.isExam = 0
WHERE TeacherID = disciplines.AuthorID AND
ModuleID = modules.ID
LIMIT 1;
IF NOT (checker > 0) THEN
IF checker <= 0 THEN
RETURN -1;
END IF;
......@@ -2703,7 +2724,8 @@ BEGIN
SELECT submodules.ID
INTO checker
FROM `submodules`
WHERE submodules.ModuleID = ModuleID AND submodules.OrderNum = OrderNum
WHERE ModuleID = submodules.ModuleID AND
OrderNum = submodules.OrderNum
LIMIT 1;
IF checker > 0 THEN
RETURN -1;
......@@ -2717,6 +2739,7 @@ BEGIN
FROM `submodules`
WHERE submodules.ModuleID = ModuleID AND
submodules.OrderNum = OrderNum
LIMIT 1
);
END //
......@@ -2730,74 +2753,49 @@ CREATE FUNCTION `SwapSubmoduleOrder`( `TeacherID` INT,
BEGIN
DECLARE checker, ord1, ord2, mod1, mod2 INT;
SELECT COUNT(submodules.ID)
INTO checker
FROM `submodules`
INNER JOIN `modules` ON submodules.ModuleID = modules.ID
INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID
INNER JOIN `disciplines_teachers` ON disciplines_teachers.DisciplineID = disciplines.ID AND disciplines_teachers.TeacherID = TeacherID
WHERE ( submodules.ID = SubmoduleID1 OR
submodules.ID = SubmoduleID2 ) AND
modules.isExam = 0;
IF checker != 2 THEN
RETURN -1;
END IF;
SET mod1 = -1;
SET mod2 = -1;
SELECT submodules.OrderNum,
submodules.ModuleID
INTO ord1, mod1
FROM `submodules`
WHERE submodules.ID = SubmoduleID1
INNER JOIN `modules` ON submodules.ModuleID = modules.ID
INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID
WHERE TeacherID = disciplines.AuthorID AND
SubmoduleID1 = submodules.ID
LIMIT 1;
SELECT submodules.OrderNum,
submodules.ModuleID
INTO ord2, mod2
FROM `submodules`
WHERE submodules.ID = SubmoduleID2
INNER JOIN `modules` ON submodules.ModuleID = modules.ID
INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID
WHERE TeacherID = disciplines.AuthorID AND
SubmoduleID2 = submodules.ID
LIMIT 1;
IF mod1 != mod2 THEN
IF mod1 <= 0 OR mod1 != mod2 THEN
RETURN -1;
END IF;
UPDATE `submodules`
SET submodules.OrderNum = 13666
WHERE submodules.ID = SubmoduleID1;
WHERE submodules.ID = SubmoduleID1
LIMIT 1;
UPDATE `submodules`
SET submodules.OrderNum = ord1
WHERE submodules.ID = SubmoduleID2;
WHERE submodules.ID = SubmoduleID2
LIMIT 1;
UPDATE `submodules`
SET submodules.OrderNum = ord2
WHERE submodules.ID = SubmoduleID1;
WHERE submodules.ID = SubmoduleID1
LIMIT 1;
RETURN 0;
END //
DROP FUNCTION IF EXISTS GetGradeID//
CREATE FUNCTION `GetGradeID`( `Grade` INT,
`Degree` VARCHAR(30) -- enum('bachelor','master','specialist')
) RETURNS int(11)
NO SQL
BEGIN
DECLARE res INT;
SELECT grades.ID
INTO res
FROM `grades`
WHERE grades.Grade = Grade And
grades.Degree = Degree
LIMIT 1;
IF res > 0 THEN
RETURN res;
ELSE
RETURN -1;
END IF;
END //
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment