From d7508282c47a912a9035042d2360dc102af09a9b Mon Sep 17 00:00:00 2001
From: PavelBegunkov <asml.Silence@gmail.com>
Date: Sun, 31 Aug 2014 00:23:15 +0400
Subject: [PATCH] GetDisciplinesForTeacher: ++isAuthor(out),
 ++isMapCreated(out)

---
 db/Sample.sql           |  2 +-
 db/StoredProcedures.sql | 70 ++++++++++++++++++++++-------------------
 2 files changed, 39 insertions(+), 33 deletions(-)

diff --git a/db/Sample.sql b/db/Sample.sql
index 7efb0d393..aae9ccea1 100644
--- a/db/Sample.sql
+++ b/db/Sample.sql
@@ -106,7 +106,7 @@ INSERT INTO `departments` (`ID`, `Name`, `FacultyID`) VALUES
 (11, 'Кафедра теоретической и компьютерной гидроаэродинамики', 1),
 (12, 'Кафедра теории упругости', 1),
 (13, 'Кафедра технологий автоматизации в бизнесе', 1),
-(14, 'Кафедра междунарожного права', 2);
+(14, 'Кафедра международного права', 2);
 
 --
 -- Дамп данных таблицы `semesters`
diff --git a/db/StoredProcedures.sql b/db/StoredProcedures.sql
index b765fef22..fec1b9507 100644
--- a/db/StoredProcedures.sql
+++ b/db/StoredProcedures.sql
@@ -1193,7 +1193,10 @@ BEGIN
                     study_groups.ID 		AS 'StudyGroupID', 
                     study_groups.GroupNum 	AS 'StudyGroupNum', 
                     study_groups.Grade 		AS 'StudyGroupGrade',
-                    study_groups.Name 		AS 'StudyGroupName' 
+                    study_groups.Name 		AS 'StudyGroupName',
+                    (TeacherID = disciplines.AuthorID) 	AS 'isAuthor',
+                    (modules.ID IS NOT NULL)			AS 'isMapCreated'
+
     FROM `disciplines_groups`
     RIGHT JOIN `disciplines` 			ON 	disciplines_groups.DisciplineID = disciplines.ID OR
     										disciplines_groups.DisciplineID IS NULL 
@@ -1201,6 +1204,7 @@ BEGIN
 											disciplines_teachers.TeacherID = TeacherID
     INNER JOIN `subjects`				ON 	subjects.ID = disciplines.SubjectID
     LEFT JOIN  `study_groups` 			ON 	study_groups.ID = disciplines_groups.StudyGroupID
+    LEFT JOIN `modules` 				ON 	disciplines.ID = modules.DisciplineID
     WHERE 	disciplines.SemesterID = semID
     ORDER BY 	disciplines.Grade 		ASC, 
     			subjects.Name 			ASC,
@@ -1339,42 +1343,44 @@ BEGIN
 											disciplines_teachers.TeacherID = TeacherID  
 	WHERE disciplines.ID = discID
 	LIMIT 1;
+	IF NOT (checker > 0) THEN
+		RETURN -1;
+	END IF;
 
-	IF checker > 0 THEN
-
-		SELECT COUNT(rating_table.ID) 
-		INTO checker
-		FROM `rating_table`
-		WHERE 	rating_table.SubmoduleID = SubmoduleID AND 
-				rating_table.TeacherID = TeacherID AND 
-				rating_table.StudentID = StudentID;
 
-		IF checker = 0 THEN
+	SELECT COUNT(rating_table.ID) 
+	INTO checker
+	FROM `rating_table`
+	WHERE 	rating_table.SubmoduleID = SubmoduleID AND 
+			rating_table.TeacherID = TeacherID AND 
+			rating_table.StudentID = StudentID;
+	IF NOT (checker = 0) THEN
+		RETURN -1;
+	END IF;
 
-			SELECT students.StudyGroupID INTO groupID FROM `students` WHERE students.ID = StudentID LIMIT 1; 
-			SET semID = GetCurSemesterID(); 
-			
-			SELECT 	disciplines.ID INTO checker
-			FROM `disciplines`
-			LEFT JOIN 	`disciplines_groups` 		ON 	disciplines_groups.DisciplineID = disciplines.ID AND
-														disciplines_groups.StudyGroupID = groupID
-			LEFT JOIN 	`disciplines_students`		ON 	disciplines_students.DisciplineID = disciplines.ID AND
-														disciplines_students.StudentID = StudentID
-			WHERE 	disciplines.SubjectID = SubjectID 	AND
-					disciplines.SemesterID = semID 		AND
-					(	disciplines_students.Type = 'attach'	OR
-						((disciplines_students.Type IS NULL OR disciplines_students.Type != 'detach') AND disciplines_groups.StudyGroupID = groupID )
-					)
-			LIMIT 1;
+	SELECT students.StudyGroupID INTO groupID FROM `students` WHERE students.ID = StudentID LIMIT 1; 
+	SET semID = GetCurSemesterID(); 
+	
+	SELECT 	disciplines.ID INTO checker
+	FROM `disciplines`
+	LEFT JOIN 	`disciplines_groups` 		ON 	disciplines_groups.DisciplineID = disciplines.ID AND
+												disciplines_groups.StudyGroupID = groupID
+	LEFT JOIN 	`disciplines_students`		ON 	disciplines_students.DisciplineID = disciplines.ID AND
+												disciplines_students.StudentID = StudentID
+	WHERE 	disciplines.SubjectID = SubjectID 	AND
+			disciplines.SemesterID = semID 		AND
+			(	disciplines_students.Type = 'attach'	OR
+				((disciplines_students.Type IS NULL OR disciplines_students.Type != 'detach') AND disciplines_groups.StudyGroupID = groupID )
+			)
+	LIMIT 1;
 
-			IF checker > 0 THEN
-				INSERT INTO `rating_table` ( rating_table.StudentID, rating_table.TeacherID, rating_table.SubmoduleID, rating_table.Rate, rating_table.Date )
-				VALUES ( StudentID, TeacherID, SubmoduleID, Rate, CURDATE() );
-				RETURN 0;
-			END IF;
-		END IF;
+	IF NOT (checker > 0) THEN
+		RETURN -1;
 	END IF;
-	RETURN -1;
+		
+	INSERT INTO `rating_table` ( rating_table.StudentID, rating_table.TeacherID, rating_table.SubmoduleID, rating_table.Rate, rating_table.Date )
+	VALUES ( StudentID, TeacherID, SubmoduleID, Rate, CURDATE() );
+	RETURN 0;
 END //
 
 
-- 
GitLab