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

FIX: using recordbook id instead of student id in subgroups #299

parent c9c1f5db
Branches
No related merge requests found
......@@ -33,7 +33,7 @@ CREATE SEQUENCE seq_students_subgroups
create table students_subgroups (
id integer default nextval('seq_students_subgroups'::regclass) NOT NULL,
student_id integer NOT NULL,
recordbook_id integer NOT NULL,
subgroup_id integer NOT NULL
);
......@@ -41,13 +41,13 @@ ALTER TABLE ONLY students_subgroups
ADD CONSTRAINT students_subgroups_pkey PRIMARY KEY (id);
ALTER TABLE ONLY students_subgroups
ADD CONSTRAINT students_subgroups_ibfk_1 FOREIGN KEY (student_id) REFERENCES students(id);
ADD CONSTRAINT students_subgroups_ibfk_1 FOREIGN KEY (recordbook_id) REFERENCES record_books(id);
ALTER TABLE ONLY students_subgroups
ADD CONSTRAINT students_subgroups_ibfk_2 FOREIGN KEY (subgroup_id) REFERENCES subgroups(id);
ADD CONSTRAINT students_subgroups_ibfk_2 FOREIGN KEY (subgroup_id) REFERENCES subgroups(id) ON DELETE CASCADE;
ALTER TABLE ONLY students_subgroups
ADD CONSTRAINT students_subgroups_studentid_subgroupid_key UNIQUE (student_id, subgroup_id);
ADD CONSTRAINT students_subgroups_recordbookid_subgroupid_key UNIQUE (recordbook_id, subgroup_id);
CREATE SEQUENCE seq_subgroups_teachers
......@@ -92,6 +92,8 @@ begin
delete from subgroups
where subgroups.id = psubgroupid;
RETURN 0;
exception
when others then RETURN -1;
end
$function$;
......@@ -118,7 +120,7 @@ FROM subgroups
WHERE subgroups.discipline_id = pdisciplineid;
$function$;
CREATE OR REPLACE FUNCTION public.Subgroup_BindStudent(pstudentid integer, psubgroupid integer)
CREATE OR REPLACE FUNCTION public.subgroup_bindstudent(precordbookid integer, psubgroupid integer)
RETURNS integer
LANGUAGE plpgsql
AS $function$
......@@ -134,18 +136,18 @@ begin
select subgroup_id into vOldSubgroupID
from subgroups join students_subgroups
on subgroups.id = students_subgroups.subgroup_id
where students_subgroups.student_id = pstudentid and subgroups.discipline_id = vDisciplineID;
where students_subgroups.recordbook_id = precordbookid and subgroups.discipline_id = vDisciplineID;
if vOldSubgroupID > 0 then
delete from students_subgroups
where students_subgroups.student_id = pstudentid and students_subgroups.subgroup_id = vOldSubgroupID;
where students_subgroups.recordbook_id = precordbookid and students_subgroups.subgroup_id = vOldSubgroupID;
end if;
insert into students_subgroups(student_id, subgroup_id)
values(pstudentid, psubgroupid)
on conflict on constraint students_subgroups_studentid_subgroupid_key
insert into students_subgroups(recordbook_id, subgroup_id)
values(precordbookid, psubgroupid)
on conflict on constraint students_subgroups_recordbookid_subgroupid_key
do update set
student_id = pstudentid,
recordbook_id = precordbookid,
subgroup_id = psubgroupid
returning id into vID;
--exception
......@@ -154,14 +156,14 @@ begin
end
$function$;
CREATE OR REPLACE FUNCTION public.Subgroup_UnbindStudent(pstudentid integer, psubgroupid integer)
CREATE OR REPLACE FUNCTION public.Subgroup_UnbindStudent(precordbookid integer, psubgroupid integer)
RETURNS integer
LANGUAGE plpgsql
AS $function$
declare vID int default -1;
begin
delete from students_subgroups
where students_subgroups.student_id = pstudentid and students_subgroups.subgroup_id = psubgroupid;
where students_subgroups.recordbook_id = precordbookid and students_subgroups.subgroup_id = psubgroupid;
RETURN 0;
exception
when others then return -1;
......@@ -170,23 +172,23 @@ $function$;
drop function if exists public.Subgroup_GetStudents(psubgroupid integer);
CREATE OR REPLACE FUNCTION public.Subgroup_GetStudents(psubgroupid integer)
RETURNS TABLE("ID" integer, "LastName" character varying, "FirstName" character varying, "SecondName" character varying, "GroupID" integer)
RETURNS TABLE("RecordBookID" integer, "LastName" character varying, "FirstName" character varying, "SecondName" character varying, "GroupID" integer)
LANGUAGE plpgsql
AS $function$
declare vStudentID int default -1;
begin
select students_subgroups.student_id into vStudentID
select students_subgroups.recordbook_id into vStudentID
from students_subgroups
where students_subgroups.subgroup_id = psubgroupid;
return query
select view_students.StudentID as "ID",
select view_students.RecordBookID as "RecordBookID",
view_students.LastName as "LastName",
view_students.FirstName as "FirstName",
view_students.secondname as "SecondName",
view_students.GroupID as "GroupID"
from view_students join students_subgroups
on view_students.studentid = students_subgroups.student_id and
on view_students.recordbookid = students_subgroups.recordbook_id and
students_subgroups.subgroup_id = psubgroupid;
end
$function$;
......
......@@ -162,7 +162,7 @@ $(function() {
};
$.postJSON(`${g_URLdir}handler/Subgroup/subgroup_delete/`, data, (response) => {
if (response.success == 1){
if (response.success == 0){
success($(this).parent(), subgroup);
Popup.success('Подгруппа удалена');
}
......
......@@ -58,7 +58,7 @@ class Controller_Teacher_Discipline_Edit extends Controller_Environment_Teacher
$subgroup["Students"]= Model_Subgroup::get_students($subgroup["ID"], $this->discipline->ID);
foreach ($students as $key =>&$student) {
foreach ($subgroup["Students"] as $subgroup_student){
if ($subgroup_student["ID"] == $student["ID"])
if ($subgroup_student["RecordBookID"] == $student["RecordBookID"])
unset($students[$key]);
}
}
......
......@@ -9,9 +9,8 @@
{% endblock %}
{% macro outputStudent(Student, StudentToDetach) %}
<div id="{{ Student.ID }}" class="Student {% if StudentToDetach %}StatusBind{% else %}StatusUnbind{% endif %}">
<span class="Name">{{ Student.LastName }} {{ Student.FirstName }} {{ Student.SecondName }}</span>
<div id="{{ Student.RecordBookID }}" class="Student {% if StudentToDetach %}StatusBind{% else %}StatusUnbind{% endif %}">
<span class="Name">{{ Student.LastName }} {{ Student.FirstName }} {{ Student.SecondName }}</span>
{% if StudentToDetach %}
<button class="action Action_UnbindStudent">Отсоединить студента</button>
{% else %}
......
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