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

Merge branch 'issue501_unbind_global' into issue498_global_export

parents d44b54b0 6891a636
Branches issue498_global_export
No related merge requests found
drop function if exists public.internalunbindstudent(pdisciplineid integer, precordbookid integer);
CREATE OR REPLACE FUNCTION public.internalunbindstudent(pdisciplineid integer, precordbookid integer)
RETURNS integer
LANGUAGE plpgsql
AS $function$
BEGIN
-- bind student
INSERT INTO disciplines_students (DisciplineID, recordbookid, "type") VALUES (pDisciplineID, precordbookid, 'detach')
ON conflict ON CONSTRAINT disciplines_students_recordbookid_disciplineid_key
DO UPDATE set "type" = 'detach';
return 1;
EXCEPTION
when others then RETURN -1;
END
$function$;
drop function if exists public.InternalUnbindAll(pdisciplineid integer);
CREATE OR REPLACE FUNCTION public.InternalUnbindAll(pdisciplineid integer)
RETURNS integer
LANGUAGE plpgsql
AS $function$
BEGIN
-- unbind all previously bound
--INSERT INTO disciplines_students (disciplineid, recordbookid, "type")
-- select disciplines.id,
-- record_books.id,
-- 'detach' as "type"
-- from disciplines
-- join disciplines_students on disciplines.id = disciplines_students.disciplineid and disciplines_students.type = 'attach'
-- join record_books on record_books.id = disciplines_students.recordbookid
-- where disciplines.id = pdisciplineid
-- ON conflict ON CONSTRAINT disciplines_students_recordbookid_disciplineid_key
-- DO UPDATE set "type" = 'detach';
delete FROM disciplines_students
where id in (select disciplines_students.id
from disciplines
join disciplines_students on disciplines.id = disciplines_students.disciplineid and disciplines_students.type = 'attach'
join record_books on record_books.id = disciplines_students.recordbookid
where disciplines.id = pdisciplineid);
return 1;
EXCEPTION
when others then RETURN -1;
END
$function$;
......@@ -103,6 +103,8 @@ class Controller_Api_V0_GlobalDiscipline extends Controller_Handler_Api
}
if ($disciplineID) {
$disc = Model_Discipline::load($disciplineID);
$disc->unbindAll();
foreach ($groupData->students as &$studentData) {
try {
$recordBook = Model_RecordBook::withExternalID($studentData->id);
......
......@@ -152,6 +152,13 @@ class Model_Discipline extends Model_Container
->execute();
}
public function unbindAll() {
$sql = 'SELECT * FROM InternalUnbindAll(:id)';
DB::query(Database::SELECT, $sql)
->param(':id', $this->ID)
->execute();
}
public function bind(Model_Teacher $teacher) {
if ($this->ID == $teacher->ID)
return;
......
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