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

v2.5.1

parents a9a9f6ed dab8ef9a
No related merge requests found
DROP FUNCTION IF EXISTS public.finalreport_getbysemesteryeardisciplinegroup(pyear integer, pnum integer, pdisciplineexternalid character varying, pgroupid integer);
CREATE OR REPLACE FUNCTION public.finalreport_getbysemesteryeardisciplinegroup(pyear integer, pnum integer, pdisciplineexternalid character varying, pgroupid integer)
RETURNS TABLE("SemesterYear" integer, "SemesterNum" integer, "PlanExternalID" integer,
"SubjectExternalID" character varying, "RecordBookExternalID" character varying, "ExamType" exam_credit_grading_credit,
"SemesterRate" bigint, "ExamRate" integer, "Exam2Rate" integer, "Exam3Rate" integer,
"ExtraRate" integer, "Extra2Rate" integer, "BonusRate" integer)
LANGUAGE plpgsql
AS $function$
declare vSemesterId integer default -1;
BEGIN
select semesters.id into vSemesterId
from semesters
where semesters.year = pyear and semesters.num = pnum;
return query
select DisciplineGrades.SemesterYear as "SemesterYear",
DisciplineGrades.SemesterNum as "SemesterNum",
DisciplineGrades.PlanExternalID as "PlanExternalDI",
DisciplineGrades.SubjectExternalID as "SubjectExternalID",
DisciplineGrades.RecordBookExternalID as "RecordBookExternalID",
DisciplineGrades.ExamType as "ExamType",
DisciplineGrades.SemesterRate as "SemesterRate",
DisciplineGrades.ExamRate as "ExamRate",
DisciplineGrades.Exam2Rate as "Exam2Rate",
DisciplineGrades.Exam3Rate as "Exam3Rate",
DisciplineGrades.ExtraRate as "ExtraRate",
DisciplineGrades.Extra2Rate as "Extra2Rate",
DisciplineGrades.BonusRate as "BonusRate"
from
(SELECT *
FROM view_final_report
WHERE view_final_report.SemesterYear = pyear and
view_final_report.SemesterNum = pnum and
view_final_report.SubjectExternalID = pdisciplineexternalid) as DisciplineGrades
join record_books on record_books.externalid = DisciplineGrades.recordbookexternalid
join students_groups on students_groups.recordbookid = record_books.id
where students_groups.semesterid = vSemesterId and students_groups.groupid = pgroupid;
END
$function$;
CREATE OR REPLACE VIEW public.view_final_report
AS SELECT DISTINCT semesters.year AS semesteryear,
semesters.num AS semesternum,
study_plans.externalid AS planexternalid,
subjects.externalid AS subjectexternalid,
record_books.externalid AS recordbookexternalid,
disciplines.examtype,
( SELECT sum(rating_table.rate) AS sum
FROM rating_table
JOIN submodules ON rating_table.submoduleid = submodules.id
JOIN modules ON submodules.moduleid = modules.id
WHERE modules.disciplineid = disciplines.id AND modules.type = 'regular'::regular_exam_bonus_extra AND rating_table.recordbookid = record_books.id
GROUP BY modules.disciplineid, rating_table.recordbookid) AS semesterrate,
( SELECT rating_table.rate
FROM rating_table
JOIN submodules ON rating_table.submoduleid = submodules.id
JOIN modules ON submodules.moduleid = modules.id
WHERE modules.disciplineid = disciplines.id AND modules.type = 'exam'::regular_exam_bonus_extra AND rating_table.recordbookid = record_books.id
ORDER BY submodules.ordernum
LIMIT 1) AS examrate,
( SELECT rating_table.rate
FROM rating_table
JOIN submodules ON rating_table.submoduleid = submodules.id
JOIN modules ON submodules.moduleid = modules.id
WHERE modules.disciplineid = disciplines.id AND modules.type = 'exam'::regular_exam_bonus_extra AND rating_table.recordbookid = record_books.id
ORDER BY submodules.ordernum
OFFSET 1
LIMIT 1) AS exam2rate,
( SELECT rating_table.rate
FROM rating_table
JOIN submodules ON rating_table.submoduleid = submodules.id
JOIN modules ON submodules.moduleid = modules.id
WHERE modules.disciplineid = disciplines.id AND modules.type = 'exam'::regular_exam_bonus_extra AND rating_table.recordbookid = record_books.id
ORDER BY submodules.ordernum
OFFSET 2
LIMIT 1) AS exam3rate,
( SELECT rating_table.rate
FROM rating_table
JOIN submodules ON rating_table.submoduleid = submodules.id
JOIN modules ON submodules.moduleid = modules.id
WHERE modules.disciplineid = disciplines.id AND modules.type = 'extra'::regular_exam_bonus_extra AND rating_table.recordbookid = record_books.id
ORDER BY submodules.ordernum
LIMIT 1) AS extrarate,
( SELECT rating_table.rate
FROM rating_table
JOIN submodules ON rating_table.submoduleid = submodules.id
JOIN modules ON submodules.moduleid = modules.id
WHERE modules.disciplineid = disciplines.id AND modules.type = 'extra'::regular_exam_bonus_extra AND rating_table.recordbookid = record_books.id
ORDER BY submodules.ordernum
OFFSET 1
LIMIT 1) AS extra2rate,
( SELECT rating_table.rate
FROM rating_table
JOIN submodules ON rating_table.submoduleid = submodules.id
JOIN modules ON submodules.moduleid = modules.id
WHERE modules.disciplineid = disciplines.id AND modules.type = 'bonus'::regular_exam_bonus_extra AND rating_table.recordbookid = record_books.id
LIMIT 1) AS bonusrate
FROM semesters
JOIN disciplines ON disciplines.semesterid = semesters.id
JOIN disciplines_study_plans ON disciplines_study_plans.disciplineid = disciplines.id
JOIN study_plans ON study_plans.id = disciplines_study_plans.studyplanid
JOIN subjects ON subjects.id = disciplines.subjectid
JOIN view_disciplines_recordbooks ON view_disciplines_recordbooks.disciplineid = disciplines.id AND 'attach'::attach_detach = COALESCE(view_disciplines_recordbooks.type, 'attach'::attach_detach)
JOIN record_books ON record_books.id = view_disciplines_recordbooks.recordbookid
JOIN record_books_plans ON record_books.id = record_books_plans.recordbookid AND record_books_plans.studyplanid = study_plans.id;
\ No newline at end of file
......@@ -51,7 +51,8 @@ class Controller_Api_V0_FinalReport extends Controller_Handler_Api
* "extra": [
* null,
* null
* ]
* ],
* "bonus": [null]
* }
* }
* }
......@@ -92,6 +93,7 @@ class Controller_Api_V0_FinalReport extends Controller_Handler_Api
'semester' => $row->SemesterRate,
'exam' => [$row->ExamRate, $row->Exam2Rate, $row->Exam3Rate],
'extra' => [$row->ExtraRate, $row->Extra2Rate],
'bonus' => [$row->BonusRate]
];
}
......
......@@ -14,6 +14,7 @@
* @property int Exam3Rate
* @property int ExtraRate
* @property int Extra2Rate
* @property int BonusRate
*/
class Model_FinalReportItem extends Model
{
......@@ -30,5 +31,6 @@ class Model_FinalReportItem extends Model
$this->Exam3Rate = isset($row['Exam3Rate']) ? (int)$row['Exam3Rate'] : null;
$this->ExtraRate = isset($row['ExtraRate']) ? (int)$row['ExtraRate'] : null;
$this->Extra2Rate = isset($row['Extra2Rate']) ? (int)$row['Extra2Rate'] : null;
$this->BonusRate = isset($row['BonusRate']) ? (int)$row['BonusRate'] : null;
}
}
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