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

ADD: discipline_clear and discipline_delete functions #416

parent 9e0ab29f
No related merge requests found
DROP FUNCTION IF EXISTS public.discipline_clear(pauthorteacherid integer, pdisciplineid integer);
CREATE OR REPLACE FUNCTION public.discipline_clear(pauthorteacherid integer, pdisciplineid integer)
RETURNS integer
LANGUAGE plpgsql
AS $function$
declare vRow int;
BEGIN
if NOT InternalIsTeacherAuthor(pAuthorTeacherID, pDisciplineID) THEN
RETURN -1;
END if;
-- clear logs
DELETE FROM logs_rating
WHERE logs_rating.SubmoduleID IN
(SELECT view_roadmap.SubmoduleID
FROM view_roadmap
WHERE view_roadmap.DisciplineID = pDisciplineID);
-- clear rating
DELETE FROM rating_table
WHERE rating_table.SubmoduleID IN
(SELECT view_roadmap.SubmoduleID
FROM view_roadmap
WHERE view_roadmap.DisciplineID = pDisciplineID);
-- clear exam_period_options
DELETE FROM exam_period_options
WHERE exam_period_options.SubmoduleID IN
(SELECT view_roadmap.SubmoduleID
FROM view_roadmap
WHERE view_roadmap.DisciplineID = pDisciplineID);
-- unlock discipline
UPDATE disciplines
SET IsLocked = 0
WHERE ID = pDisciplineID;
--LIMIT 1;
get diagnostics vRow=ROW_COUNT;
RETURN vRow-1;
END
$function$;
DROP FUNCTION IF EXISTS public.discipline_delete(pdisciplineid integer);
CREATE OR REPLACE FUNCTION public.discipline_delete(pdisciplineid integer)
RETURNS integer
LANGUAGE plpgsql
AS $function$
declare pauthorid int;
declare vTemp int;
begin
-- select public.discipline_delete(
-- :pdisciplineid -- put the pdisciplineid parameter value instead of 'pdisciplineid' (int4)
--);
select authorid into pauthorid from disciplines where id=pdisciplineid;
select discipline_clear(pauthorid, pdisciplineid) into vTemp;
-- delete roadmap
DELETE FROM submodules
WHERE submodules.moduleID in (
select modules.id FROM modules
WHERE modules.DisciplineID = pDisciplineID
);
DELETE FROM modules
WHERE modules.DisciplineID = pDisciplineID;
-- detach all entities from discipline
DELETE FROM disciplines_teachers
WHERE disciplines_teachers.DisciplineID = pDisciplineID;
DELETE FROM disciplines_students
WHERE disciplines_students.DisciplineID = pDisciplineID;
DELETE FROM disciplines_groups
WHERE disciplines_groups.DisciplineID = pDisciplineID;
DELETE FROM logs_binds_groups
WHERE logs_binds_groups.DisciplineID = pDisciplineID;
DELETE FROM logs_binds_students
WHERE logs_binds_students.DisciplineID = pDisciplineID;
--new logs to delete
delete from logs_discipline_forms
where logs_discipline_forms.discipline_id = pDisciplineID;
delete from logs_form_export
where logs_form_export.discipline_id = pDisciplineID;
-- delete discipline
DELETE FROM disciplines
WHERE disciplines.ID = pDisciplineID;
--LIMIT 1;
RETURN 0;
END;
$function$;
\ No newline at end of file
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