Skip to content
Snippets Groups Projects
Commit ca99c10b authored by Anton Bagliy's avatar Anton Bagliy
Browse files

Merge branch 'issue551_global_form_leave' into develop

parents 0396a4ea 5188d534
Branches
No related merge requests found
DROP FUNCTION IF EXISTS public.getratesforstudentsbystage(pdisciplineid integer, pmilestone integer);
CREATE OR REPLACE FUNCTION public.getratesforstudentsbystage(pdisciplineid integer, pmilestone integer)
RETURNS TABLE("StudentID" integer, "Semester" integer, "Bonus" integer, "Extra" integer, "PreviousExtra" integer, "Exam" integer, "PreviousExam" integer, "Option" absence_pass, "AutoPassed" integer, "LastName" character varying, "FirstName" character varying, "SecondName" character varying)
LANGUAGE plpgsql
AS $function$
DECLARE vSemesterID INT DEFAULT -1;
vInGeneralGroup BOOL DEFAULT FALSE;
BEGIN
vSemesterID := GetDisciplineProperty(pDisciplineID, 'semester');
DROP TABLE IF EXISTS tStudents;
CREATE TEMPORARY TABLE tStudents AS (
SELECT record_books.ID, record_books.StudentID
FROM record_books
LEFT JOIN disciplines_students on disciplines_students.DisciplineID = pDisciplineid and
disciplines_students.RecordBookID = record_books.ID
JOIN students_groups on record_books.id = students_groups.recordbookid
left join view_disciplines_recordbooks on disciplines_students.recordbookid = view_disciplines_recordbooks.recordbookid
WHERE students_groups.SemesterID = vSemesterID AND
students_groups.State <= 'outlet' AND
COALESCE(disciplines_students.Type, 'attach') = 'attach' and
view_disciplines_recordbooks.disciplineid = pDisciplineid
);
return query
SELECT tRes.*,
accounts.LastName as "LastName",
accounts.FirstName as "FirstName",
accounts.SecondName as "SecondName"
FROM (
SELECT tStudents.StudentID as "StudentID",
cast (SUM(tRate.Rate*iif_sql(tMap.ModuleType = 'regular',1,0)) as integer) AS "Semester",
cast (SUM(tRate.Rate*iif_sql(tMap.ModuleType = 'bonus',1,0)) as integer) AS "Bonus",
cast (SUM(tRate.Rate*iif_sql(tMap.ModuleType = 'extra',1,0)*iif_sql(tMap.SubmoduleOrderNum < pMilestone,1,0)) as integer) AS "Extra",
cast (SUM(tRate.Rate*iif_sql(tMap.ModuleType = 'extra',1,0)*iif_sql(tMap.SubmoduleOrderNum < pMilestone - 1,1,0)) as integer) AS "PreviousExtra",
cast (SUM(tRate.Rate*iif_sql(tMap.ModuleType = 'exam',1,0)*iif_sql(tMap.SubmoduleOrderNum = pMilestone,1,0)) as integer) AS "Exam",
MAX(tRate.Rate*iif_sql(tMap.ModuleType = 'exam',1,0)*iif_sql(tMap.SubmoduleOrderNum < pMilestone,1,0)) AS "PreviousExam",
MAX(CASE WHEN tMap.SubmoduleOrderNum = pMilestone THEN exam_period_options."type" ELSE NULL END) As "Option",
MAX(CASE WHEN exam_period_options."type" = 'pass' THEN 1 ELSE 0 END) As "AutoPassed"
FROM tStudents
LEFT JOIN view_roadmap AS tMap ON tMap.DisciplineID = pDisciplineID
LEFT JOIN rating_table AS tRate ON tRate.RecordbookID = tStudents.ID AND
tRate.SubmoduleID = tMap.SubmoduleID
LEFT JOIN exam_period_options ON exam_period_options.submoduleID = tMap.SubmoduleID AND
exam_period_options.RecordbookID = tStudents.ID
GROUP BY tStudents.StudentID
) tRes
INNER JOIN students ON students.ID = tRes."StudentID"
INNER JOIN accounts ON students.AccountID = accounts.ID
ORDER BY accounts.LastName ASC,
accounts.FirstName ASC,
accounts.SecondName ASC;
END
$function$;
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