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

changeDiscipline -> ChangeDisciplineSubject, ChangeDisciplineGrade,...

changeDiscipline -> ChangeDisciplineSubject, ChangeDisciplineGrade, ChangeDisciplineControl, ChangeDisciplineHours
parent e664e238
Branches
Tags
No related merge requests found
......@@ -1325,7 +1325,8 @@ CREATE FUNCTION `SetStudentRate`( `TeacherID` INT,
`Rate` INT )
RETURNS int(11)
NO SQL
BEGIN
BEGIN
-- TODO: log
DECLARE checker, discID, groupID, semID, rateID INT;
SET discID = -1;
SET groupID = -1;
......@@ -1680,41 +1681,67 @@ END //
DROP FUNCTION IF EXISTS ChangeDisciplineSubject//
CREATE FUNCTION `ChangeDisciplineSubject` ( `TeacherID` INT,
`DisciplineID` INT,
`SubjectID` INT
) RETURNS int(11)
NO SQL
BEGIN
DECLARE checker INT;
SELECT disciplines.ID
INTO checker
FROM `disciplines`
WHERE disciplines.ID = DisciplineID AND
disciplines.AuthorID = TeacherID
LIMIT 1;
IF NOT (checker > 0) THEN
RETURN -1;
END IF;
DROP FUNCTION IF EXISTS ChangeDiscipline//
CREATE FUNCTION `ChangeDiscipline` ( `TeacherID` INT,
`DisciplineID` INT,
`ExamType` VARCHAR(30),
`LectionCount` INT,
`PracticeCount` INT,
`Grade` INT,
`SubjectID` INT
) RETURNS int(11)
SELECT subjects.ID
INTO checker
FROM `subjects`
WHERE subjects.ID = SubjectID
LIMIT 1;
IF NOT (checker > 0) THEN
RETURN -1;
END IF;
UPDATE `disciplines`
SET disciplines.SubjectID = SubjectID
WHERE disciplines.ID = DisciplineID;
RETURN 0;
END //
DROP FUNCTION IF EXISTS ChangeDisciplineGrade//
CREATE FUNCTION `ChangeDisciplineGrade` ( `TeacherID` INT,
`DisciplineID` INT,
`Grade` INT
) RETURNS int(11)
NO SQL
BEGIN
DECLARE checker INT;
-- TODO: Grade
IF NOT (Grade > 0) THEN
RETURN -1;
END IF;
SELECT disciplines_teachers.ID
SELECT disciplines.ID
INTO checker
FROM `disciplines_teachers`
WHERE disciplines_teachers.DisciplineID = DisciplineID AND disciplines_teachers.TeacherID = TeacherID
FROM `disciplines`
WHERE disciplines.ID = DisciplineID AND
disciplines.AuthorID = TeacherID
LIMIT 1;
IF NOT (checker > 0) THEN
RETURN -1;
END IF;
SET checker = -1;
SELECT rating_table.ID
INTO checker
FROM `rating_table`
INNER JOIN `submodules` ON submodules.ID = rating_table.SubmoduleID
INNER JOIN `modules` ON modules.ID = submodules.ModuleID
WHERE modules.DisciplineID = DisciplineID
LIMIT 1;
SET checker = InternalCheckRate(DisciplineID);
IF checker > 0 THEN
RETURN -1;
END IF;
......@@ -1735,25 +1762,99 @@ BEGIN
UPDATE `disciplines`
SET disciplines.ExamType = ExamType,
disciplines.LectionCount = LectionCount,
disciplines.PracticeCount = PracticeCount,
disciplines.Grade = Grade,
disciplines.SubjectID = SubjectID
SET disciplines.Grade = Grade
WHERE disciplines.ID = DisciplineID;
RETURN 0;
-- TODO: добавить проверки на изменение
IF ExamType = 'exam' THEN
SET checker = AddModuleExam(TeacherID, DisciplineID);
ELSE
SET checker = DeleteModuleExam(TeacherID, DisciplineID);
END //
DROP FUNCTION IF EXISTS ChangeDisciplineControl//
CREATE FUNCTION `ChangeDisciplineControl` ( `TeacherID` INT,
`DisciplineID` INT,
`ExamType` VARCHAR(30)
) RETURNS int(11)
NO SQL
BEGIN
DECLARE checker INT;
SELECT disciplines.ID
INTO checker
FROM `disciplines`
WHERE disciplines.ID = DisciplineID AND
disciplines.AuthorID = TeacherID
LIMIT 1;
IF NOT (checker > 0) THEN
RETURN -1;
END IF;
SET checker = InternalCheckRate(DisciplineID);
IF checker > 0 THEN
RETURN -1;
END IF;
SELECT disciplines.ExamType
INTO checker
FROM `disciplines`
WHERE disciplines.ID = DisciplineID
LIMIT 1;
IF (checker = 0 AND ExamType = 'credit') OR
(checker = 1 AND ExamType = 'exam')
THEN
UPDATE `disciplines`
SET disciplines.ExamType = ExamType
WHERE disciplines.ID = DisciplineID;
IF ExamType = 'exam' THEN
SET checker = AddModuleExam(TeacherID, DisciplineID);
ELSE
SET checker = DeleteModuleExam(TeacherID, DisciplineID);
END IF;
END IF;
RETURN 0;
END //
DROP FUNCTION IF EXISTS ChangeDisciplineHours//
CREATE FUNCTION `ChangeDisciplineHours` ( `TeacherID` INT,
`DisciplineID` INT,
`Hours` INT,
`Type` INT
-- Type: 0 - Practice Hours, 1 - Lection Hours
) RETURNS int(11)
NO SQL
BEGIN
DECLARE checker INT;
SELECT disciplines.ID
INTO checker
FROM `disciplines`
WHERE disciplines.ID = DisciplineID AND
disciplines.AuthorID = TeacherID
LIMIT 1;
IF NOT (checker > 0) THEN
RETURN -1;
END IF;
-- TODO: switch
IF Type = 0 THEN
UPDATE `disciplines`
SET disciplines.PracticeCount = Hours
WHERE disciplines.ID = DisciplineID;
END IF;
IF Type = 1 THEN
UPDATE `disciplines`
SET disciplines.LectionCount = Hours
WHERE disciplines.ID = DisciplineID;
END IF;
RETURN 0;
END //
DROP FUNCTION IF EXISTS BindGroup//
CREATE FUNCTION `BindGroup` ( `AccessedTeacherID` INT,
`DisciplineID` INt,
......
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