From 4977a8e4df9ce13845a41f612460f7849fdadea7 Mon Sep 17 00:00:00 2001 From: PavelBegunkov <asml.Silence@gmail.com> Date: Sat, 21 Feb 2015 01:09:50 +0300 Subject: [PATCH] REF: final stage FIX: tests vol.1 --- db/StoredFunctions.sql | 22 ++++++++++++------- db/StoredProcedures.sql | 12 +++++----- db/Views.sql | 2 +- .../classes/Controller/Teacher/Discipline.php | 2 ++ 4 files changed, 23 insertions(+), 15 deletions(-) diff --git a/db/StoredFunctions.sql b/db/StoredFunctions.sql index 50cba8c3a..fa40dbb9c 100644 --- a/db/StoredFunctions.sql +++ b/db/StoredFunctions.sql @@ -856,7 +856,7 @@ CREATE FUNCTION `BindGroup` NO SQL BEGIN DECLARE vChecker INT DEFAULT -1; - DECLARE EXIT HANDLER FOR SQLEXCEPTION RETURN -1; + DECLARE EXIT HANDLER FOR SQLEXCEPTION RETURN -3; # 1. check if AccessedTeacher is author IF NOT InternalIsTeacherAuthor(pTeacherID, pDisciplineID) OR @@ -1029,7 +1029,7 @@ CREATE FUNCTION `UnbindTeacher` NO SQL BEGIN IF pAuthorID = pBindingTeacher OR - NOT InternalIsTeacherAuthor(pBindingTeacher, pDisciplineID) + NOT InternalIsTeacherAuthor(pAuthorID, pDisciplineID) THEN RETURN -1; END IF; @@ -1037,7 +1037,7 @@ BEGIN DELETE FROM `disciplines_teachers` WHERE disciplines_teachers.DisciplineID = pDisciplineID AND disciplines_teachers.TeacherID = pBindingTeacher; - RETURN 0; + RETURN ROW_COUNT()-1; END // @@ -1246,7 +1246,7 @@ BEGIN IF NOT InternalIsTeacherAuthor(pTeacherID, pDisciplineID) OR InternalIsMapLocked(pDisciplineID) THEN - RETURN -1; + RETURN -2; END IF; # get free orderNum @@ -1254,6 +1254,9 @@ BEGIN FROM `modules` WHERE modules.DisciplineID = pDisciplineID AND modules.Type = 'regular' LIMIT 1; + IF vOrderNum IS NULL THEN + SET vOrderNum = 1; + END IF; INSERT INTO `modules` (Name, OrderNum, DisciplineID ) @@ -1580,11 +1583,11 @@ BEGIN UPDATE `submodules` - SET submodules.MaxRate = MaxRate, + SET submodules.MaxRate = pMaxRate, submodules.Type = pControlType WHERE submodules.ID = pSubmoduleID LIMIT 1; - RETURN 0; + RETURN ROW_COUNT()-1; END // @@ -1699,7 +1702,7 @@ CREATE FUNCTION `AddSubmodule` BEGIN DECLARE vOrderNum, vIsLocked INT DEFAULT -1; DECLARE vDescription VARCHAR(200) CHARSET utf8 DEFAULT pDescription; - DECLARE EXIT HANDLER FOR SQLEXCEPTION RETURN -1; + # DECLARE EXIT HANDLER FOR SQLEXCEPTION RETURN -1; # check author and discipline lock SELECT disciplines.IsLocked INTO vIsLocked @@ -1709,7 +1712,7 @@ BEGIN modules.ID = pModuleID LIMIT 1; IF vIsLocked != 0 THEN - RETURN -1; + RETURN -2; END IF; # get free order @@ -1718,6 +1721,9 @@ BEGIN FROM `submodules` WHERE submodules.ModuleID = pModuleID LIMIT 1; + IF vOrderNum IS NULL THEN + SET vOrderNum = 0; + END IF; SET vOrderNum = vOrderNum + 1; # insert submodule diff --git a/db/StoredProcedures.sql b/db/StoredProcedures.sql index 23e62b1bb..68202f2c7 100644 --- a/db/StoredProcedures.sql +++ b/db/StoredProcedures.sql @@ -373,7 +373,7 @@ BEGIN view_teachers.DepName, (view_teachers.TeacherID = vAuthorID) AS 'IsAuthor' FROM `view_teachers` - WHERE InternalIsTeacherBounded(view_teachers.TeacherID, pDisciplineID) AND + WHERE NOT InternalIsTeacherBounded(view_teachers.TeacherID, pDisciplineID) AND view_teachers.FacultyID = pFacultyID AND CONCAT( view_teachers.LastName, view_teachers.FirstName, view_teachers.SecondName) LIKE CONCAT('%', pFullName, '%') @@ -695,16 +695,16 @@ BEGIN view_roadmap.SubmoduleID = (@tmp = (SELECT rating_table.SubmoduleID FROM `submodules` INNER JOIN `rating_table` ON rating_table.SubModuleID = submodules.ID - WHERE submodules.ModuleID = modules.ID AND rating_table.StudentID = pStudentID + WHERE submodules.ModuleID = view_roadmap.ModuleID AND rating_table.StudentID = pStudentID ORDER BY submodules.OrderNum DESC LIMIT 1) ) OR ( @tmp IS NULL AND view_roadmap.SubmoduleOrderNum = 1) ) - ORDER BY modules.Type ^ 1 ASC, + ORDER BY view_roadmap.ModuleType ^ 1 ASC, -- 1, 3, 2, 4 ASC - modules.OrderNum ASC, - submodules.OrderNum ASC; + view_roadmap.ModuleOrderNum ASC, + view_roadmap.SubmoduleOrderNum ASC; END // @@ -778,7 +778,7 @@ BEGIN INNER JOIN `view_disciplines` ON view_disciplines.DisciplineID = pDisciplineID WHERE view_roadmap.DisciplineID = pDisciplineID AND (view_roadmap.ModuleType = 'exam' OR view_roadmap.ModuleType = 'extra') - ORDER BY OrderModuleTypesForSession(view_roadmap.ModuleType) ASC, + ORDER BY InternalOrderModuleTypesForSession(view_roadmap.ModuleType) ASC, view_roadmap.ModuleOrderNum ASC, view_roadmap.SubmoduleOrderNum ASC; END // diff --git a/db/Views.sql b/db/Views.sql index c39efedea..3ed2d2553 100644 --- a/db/Views.sql +++ b/db/Views.sql @@ -132,7 +132,7 @@ CREATE OR REPLACE VIEW `view_roadmap` AS # enum('CurrentControl','LandmarkControl') submodules.IsUsed AS 'SubmoduleIsUsed' FROM `modules` - INNER JOIN `submodules` ON submodules.ModuleID = modules.ID; + LEFT JOIN `submodules` ON submodules.ModuleID = modules.ID; # without students, that haven't any rate diff --git a/~dev_rating/application/classes/Controller/Teacher/Discipline.php b/~dev_rating/application/classes/Controller/Teacher/Discipline.php index bea9a2280..4de70ea8b 100644 --- a/~dev_rating/application/classes/Controller/Teacher/Discipline.php +++ b/~dev_rating/application/classes/Controller/Teacher/Discipline.php @@ -75,6 +75,8 @@ class Controller_Teacher_Discipline extends Controller_UserEnvi { $groupID = 0; $i = 0; $k = 0; + $n = 0; + $j = 0; foreach($students as $row) { if ($row['AttachType'] == 'attach'){ if ($row['GroupID'] != $groupID) { -- GitLab