diff --git a/db/postgresql/alter_study_groups_formid_17.11.18.sql b/db/postgresql/alter_study_groups_formid_17.11.18.sql index a37f8873c7f223d6b7fa90fc266440b466153b21..34f6379698434576dcec3b428c17a61e5beebf70 100644 --- a/db/postgresql/alter_study_groups_formid_17.11.18.sql +++ b/db/postgresql/alter_study_groups_formid_17.11.18.sql @@ -4,10 +4,15 @@ ALTER TABLE public.study_groups ALTER COLUMN formid SET NOT NULL; ALTER TABLE public.study_groups ALTER COLUMN formid SET DEFAULT 1; ALTER TABLE public.study_groups DROP CONSTRAINT study_groups_facultyid_gradeid_groupnum_key; -ALTER TABLE ONLY study_groups +ALTER TABLE ONLY public.study_groups ADD CONSTRAINT study_groups_facultyid_gradeid_groupnum_formid_key UNIQUE (facultyid, gradeid, groupnum, formid); -ALTER TABLE ONLY study_groups +INSERT INTO public.study_form(id, formname) VALUES + (1, 'очная'), + (2, 'очно-заочная'), + (3, 'заочная'); + +ALTER TABLE ONLY public.study_groups ADD CONSTRAINT study_groups_ibfk_4 FOREIGN KEY (formid) REFERENCES study_form(id); DROP FUNCTION IF EXISTS public.creategroup(pgradeid integer, pgroupnum integer, pspecname character varying, pfacultyid integer, pyear integer); @@ -134,4 +139,28 @@ CREATE OR REPLACE VIEW public.view_groups JOIN study_groups ON groups_years.groupid = study_groups.id JOIN specializations ON groups_years.specializationid = specializations.id JOIN grades ON study_groups.gradeid = grades.id - JOIN faculties ON faculties.id = specializations.facultyid; \ No newline at end of file + JOIN faculties ON faculties.id = specializations.facultyid; + +DROP FUNCTION IF EXISTS public.getgroups(pgradeid integer, pfacultyid integer, psemesterid integer); +CREATE OR REPLACE FUNCTION public.getgroups(pgradeid integer, pfacultyid integer, psemesterid integer) + RETURNS TABLE("ID" integer, "GroupNum" integer, "SpecID" integer, "SpecName" character varying, "SpecAbbr" character varying, "FormID" character varying) +LANGUAGE sql +AS $function$ +--select * from public.getgroups( +-- :pgradeid, -- put the pgradeid parameter value instead of 'pgradeid' (int4) +-- :pfacultyid, -- put the pfacultyid parameter value instead of 'pfacultyid' (int4) +-- :psemesterid -- put the psemesterid parameter value instead of 'psemesterid' (int4) +--); +SELECT view_groups.GroupID AS "ID", + view_groups.GroupNum as "GroupNum", + view_groups.SpecID as "SpecID", + view_groups.SpecName as "SpecName", + view_groups.SpecAbbr as "SpecAbbr", + (SELECT study_form.FormName from study_form WHERE study_form.id = view_groups.FormID) +FROM view_groups + INNER JOIN semesters ON semesters.ID = pSemesterID +WHERE view_groups.GradeID = pGradeID AND + view_groups.FacultyID = pFacultyID AND + view_groups.Year = semesters.Year +ORDER BY view_groups.GroupNum ASC; +$function$ \ No newline at end of file diff --git a/db/postgresql/tables_and_views.sql b/db/postgresql/tables_and_views.sql index 84242288fe285b5161882c58102dca5728d5222e..f074ec2134f95a267610d6c30a5a52b4c436a2ab 100644 --- a/db/postgresql/tables_and_views.sql +++ b/db/postgresql/tables_and_views.sql @@ -1295,9 +1295,3 @@ INSERT INTO lesson_types(id, lesson_type) values (2, 'лабораторная'), (3, 'семинар'), (4, 'практикум'); - -INSERT INTO public.study_form(id, formname) VALUES -(1, 'очная'), -(2, 'очно-заочная'), -(3, 'заочная'); - diff --git a/media/js/optionLoader.js b/media/js/optionLoader.js index b7bcb5c3a55cff1033caa11a483f8e8b2a9382a0..8174ccce111df666c20e00880aef757f48ec018b 100644 --- a/media/js/optionLoader.js +++ b/media/js/optionLoader.js @@ -85,6 +85,13 @@ class OptionLoader { */ let getGroupOption = (data) => { let str = `группа ${data.GroupNum}`; + if (data.FormID === 'заочная') { + str = str+' ЗО'; + } + if (data.FormID === 'очно-заочная') { + str = str+' ВО'; + } + if (data.SpecName) { str += " - "; str += data.SpecName; diff --git a/~dev_rating/application/classes/Controller/Api/V0/Student.php b/~dev_rating/application/classes/Controller/Api/V0/Student.php index 8daa5c96b52691d06d338f0f851b1031e688dec5..019848d6fa455562c600ae4801a8accbfd22d91b 100644 --- a/~dev_rating/application/classes/Controller/Api/V0/Student.php +++ b/~dev_rating/application/classes/Controller/Api/V0/Student.php @@ -147,11 +147,11 @@ class Controller_Api_V0_Student extends Controller_Handler_Api { break; case 'Очно-заочная': - $recordBookData->form = 3; + $recordBookData->form = 2; break; case 'Заочная': - $recordBookData->form = 2; + $recordBookData->form = 3; break; default: diff --git a/~dev_rating/application/classes/Controller/Teacher/Index.php b/~dev_rating/application/classes/Controller/Teacher/Index.php index 2f513f09b03a8eb2c7d751ad9f3198445c34fa75..5bf3647c29b64efa5e6bf97cfa3b2f6c47e31ec6 100644 --- a/~dev_rating/application/classes/Controller/Teacher/Index.php +++ b/~dev_rating/application/classes/Controller/Teacher/Index.php @@ -43,10 +43,10 @@ class Controller_Teacher_Index extends Controller_Environment_Teacher if ($dis_group['FormID'] === 'очно-заочная') { $groupDesc = $groupDesc.' ВО'; } - if ($dis_group['FormID'] === 'зачная') { + if ($dis_group['FormID'] === 'заочная') { $groupDesc = $groupDesc.' ЗО'; } - $groups[$dis->ID][] = $dis_group['GroupNum'] . ' гр'; + $groups[$dis->ID][] = $dis_group['GroupNum'] . $groupDesc; } } diff --git a/~dev_rating/application/classes/Model/Discipline.php b/~dev_rating/application/classes/Model/Discipline.php index 72c155974f2153b40a7d02d2a0752a667106c95a..0d61cb4fb5db1309fb370e6976b47816c7f18833 100644 --- a/~dev_rating/application/classes/Model/Discipline.php +++ b/~dev_rating/application/classes/Model/Discipline.php @@ -104,6 +104,14 @@ class Model_Discipline extends Model_Container /** Get groups with separately attached students. */ public function getAllGroups() { + // http://gitlab.mmcs.sfedu.ru/it-lab/grade/issues/50 + // для получения списка групп для всех дисциплин на странице преподавателя + // нужно сделать несколько запросов к GetGroupsForDisciplineAll + // за одно подключение к базе данных + // но тогда функция возвращает один и тот же ответ + // поэтому каждый раз подключаемся заново + $db = Kohana_Database::instance(); + $db->disconnect(); $sql = 'SELECT * FROM GetGroupsForDisciplineAll(:id)'; return DB::query(Database::SELECT, $sql)->param(':id', $this->ID)->execute(); } diff --git a/~dev_rating/application/views/teacher/discipline/journal.twig b/~dev_rating/application/views/teacher/discipline/journal.twig index ce536ff4b2b04e33a92144b5c4e32f1da985eeed..aa1c15425ae7831321e6116d4da37dce7791de21 100644 --- a/~dev_rating/application/views/teacher/discipline/journal.twig +++ b/~dev_rating/application/views/teacher/discipline/journal.twig @@ -102,6 +102,14 @@ {% endif %} {{ Group.GroupNum }} группа + + {% if Group.FormID == 'очно-заочная' %} + ВО + {% endif %} + + {% if Group.FormID == 'заочная' %} + ЗО + {% endif %} </option> {% endfor %} </select> diff --git a/~dev_rating/application/views/teacher/discipline/rating/exam.twig b/~dev_rating/application/views/teacher/discipline/rating/exam.twig index ad5808575dc048123c36d4f2636ee6d0935c3b7d..33cb4d87b9d1f60fb3512d622708fe3b084c7267 100644 --- a/~dev_rating/application/views/teacher/discipline/rating/exam.twig +++ b/~dev_rating/application/views/teacher/discipline/rating/exam.twig @@ -67,6 +67,14 @@ {% endif %} {{ Group.GroupNum }} группа + + {% if Group.FormID == 'очно-заочная' %} + ВО + {% endif %} + + {% if Group.FormID == 'заочная' %} + ЗО + {% endif %} </option> {% endfor %} </select> diff --git a/~dev_rating/application/views/teacher/discipline/rating/rate.twig b/~dev_rating/application/views/teacher/discipline/rating/rate.twig index 32fb0017b5574e035e54bb2586d837cb469e48c0..5085c6d9aefdcf6df7158a83e403e5cda3e4038e 100644 --- a/~dev_rating/application/views/teacher/discipline/rating/rate.twig +++ b/~dev_rating/application/views/teacher/discipline/rating/rate.twig @@ -59,6 +59,13 @@ {% endif %} {{ Group.GroupNum }} группа + {% if Group.FormID == 'очно-заочная' %} + ВО + {% endif %} + + {% if Group.FormID == 'заочная' %} + ЗО + {% endif %} </option> {% endfor %} </select>