From 3c8095f90e6e33bcb648634860a3f6fc587b0b7a Mon Sep 17 00:00:00 2001
From: PavelBegunkov <asml.Silence@gmail.com>
Date: Mon, 25 Aug 2014 01:45:06 +0400
Subject: [PATCH] ...

---
 db/StoredProcedures.sql | 86 ++++++++++++++++++++++++++++++++++-------
 1 file changed, 73 insertions(+), 13 deletions(-)

diff --git a/db/StoredProcedures.sql b/db/StoredProcedures.sql
index a859200b7..ba5d7cf06 100644
--- a/db/StoredProcedures.sql
+++ b/db/StoredProcedures.sql
@@ -1006,17 +1006,15 @@ BEGIN
 							students.SecondName,
 							study_groups.Grade,
 							study_groups.GroupNum,
-							(disciplines_students.StudentID IS NOT NULL) AS 'isAttached'
+							disciplines_students.Type AS 'Type'
 		FROM `students`
 		INNER JOIN `study_groups` 			ON students.StudyGroupID = study_groups.ID
 		LEFT JOIN 	`disciplines_groups` 		ON 	DisciplineID = disciplines_groups.DisciplineID AND
 													study_groups.ID = disciplines_groups.StudyGroupID 
 		LEFT JOIN 	`disciplines_students`		ON 	DisciplineID = disciplines_students.DisciplineID AND
 													students.ID = disciplines_students.StudentID
-		WHERE 	disciplines_students.Type = 'attach'	OR
-				(	( disciplines_students.Type IS NULL OR disciplines_students.Type != 'detach' ) AND 
-					disciplines_groups.StudyGroupID IS NOT NULL 
-				);
+		WHERE 	disciplines_students.Type = 'attach'	OR 
+				disciplines_groups.StudyGroupID IS NOT NULL;
 	ELSE 
 		SELECT 	NULL AS 'StudentID',
 				NULL AS 'LastName',
@@ -1053,6 +1051,7 @@ BEGIN
 				subjects.Name 			AS 'SubjectName',	
 				modules.ID 				AS 'ModuleID', 
 				modules.Name 			AS 'ModuleName', 
+				modules.isExam,
 				submodules.ID 			AS 'SubmoduleID', 
 				submodules.Name 		AS 'SubModuleName', 
 				submodules.Description 	AS 'SubmoduleDescription', 
@@ -1253,6 +1252,56 @@ END //
 -- -------------------------------------------------------------------------------------------
 
 
+DROP PROCEDURE IF EXISTS GetStudentsForRating//
+CREATE PROCEDURE `GetStudentsForRating`		(	IN `TeacherID` INT,
+												IN `DisciplineID` INT 
+											)
+    NO SQL
+BEGIN  
+    DECLARE checker INT;  					 
+	
+	SELECT disciplines_teachers.ID 
+	INTO checker 
+	FROM `disciplines_teachers`
+	WHERE 	disciplines_teachers.DisciplineID = DisciplineID AND 
+			disciplines_teachers.TeacherID = TeacherID
+	LIMIT 1;
+
+	IF checker > 0 THEN
+
+		SELECT DISTINCT 	students.ID AS 'StudentID',
+							students.LastName,
+							students.FirstName,
+							students.SecondName,
+							study_groups.Grade,
+							study_groups.GroupNum,
+							(disciplines_students.Type IS NOT NULL OR disciplines_students.Type = 'attach') AS 'isAttached'
+		FROM `students`
+		INNER JOIN `study_groups` 			ON students.StudyGroupID = study_groups.ID
+		LEFT JOIN 	`disciplines_groups` 		ON 	DisciplineID = disciplines_groups.DisciplineID AND
+													study_groups.ID = disciplines_groups.StudyGroupID 
+		LEFT JOIN 	`disciplines_students`		ON 	DisciplineID = disciplines_students.DisciplineID AND
+													students.ID = disciplines_students.StudentID
+		WHERE 	disciplines_students.Type = 'attach'	OR
+				(	( disciplines_students.Type IS NULL OR disciplines_students.Type != 'detach' ) AND 
+					disciplines_groups.StudyGroupID IS NOT NULL 
+				);
+	ELSE 
+		SELECT 	NULL AS 'StudentID',
+				NULL AS 'LastName',
+				NULL AS 'FirstName',
+				NULL AS 'SecondName',
+				NULL AS 'Grade',
+				NULL AS 'Group'
+		LIMIT 0;
+
+	END IF;
+END //
+
+
+
+
+
 DROP FUNCTION IF EXISTS BindTeacher//
 CREATE FUNCTION `BindTeacher`(	`AccessedTeacher` INT,
 								`BindingTeacher` INT,
@@ -1798,18 +1847,20 @@ BEGIN
 
 END //
 
+
 DROP FUNCTION IF EXISTS AddModuleExam//
 CREATE FUNCTION `AddModuleExam`	(	`TeacherID` 	INT, 
 									`DisciplineID` 	INT
 								) 	RETURNS int(11)
     NO SQL
 BEGIN  
-    DECLARE checker INT;  					 
+    DECLARE checker, mod INT;  					 
 	
 	SELECT disciplines.ID 
 	INTO checker 
 	FROM `disciplines`
-	INNER JOIN `disciplines_teachers` ON disciplines_teachers.TeacherID = TeacherID AND disciplines_teachers.DisciplineID = disciplines.ID
+	INNER JOIN `disciplines_teachers` ON 	disciplines_teachers.TeacherID = TeacherID AND 
+											disciplines_teachers.DisciplineID = disciplines.ID
 	WHERE 	disciplines.ID = DisciplineID
 	LIMIT 1;
     IF NOT (checker > 0) THEN
@@ -1829,16 +1880,25 @@ BEGIN
 
 	INSERT INTO `modules` 	( modules.Name, modules.OrderNum, modules.DisciplineID, modules.isExam )
 	VALUES 					( 'Экзамен' , 666 , DisciplineID, 1 );
+
+	SELECT 	modules.ID
+	INTO mod
+	FROM `modules`
+	WHERE 	modules.DisciplineID = DisciplineID AND 
+			modules.isExam = 1
+	LIMIT 1;
+
+	SELECT AddSubmodule(TeacherID, mod, 40, 1, '', NULL, 'CurrentControl');
+	IF NOT (mod > 0) THEN
+		RETURN -1; 
+	END IF;
 	
+	RETURN mod;
+END //
+
 
-	RETURN 	(	SELECT 	modules.ID
-				FROM `modules`
-				WHERE 	modules.DisciplineID = DisciplineID AND 
-						modules.isExam = 1
-			);
 
 
-END //
 
 -- Добавление нового подмодуля к данному модулю
 DROP FUNCTION IF EXISTS DeleteModule//
-- 
GitLab