create or replace package add_all as

procedure create_catalog(u_access in varchar2 default NULL,
			 userid in varchar2 default NULL);
procedure create_course(u_access in varchar2 default NULL,
			 userid in varchar2 default NULL);
procedure create_student(u_access in varchar2 default NULL,
			 userid in varchar2 default NULL);

procedure select_course(u_access in varchar2 default NULL,
			 userid in varchar2 default NULL);
procedure course_menu(u_access in varchar2 default NULL,
			 userid in varchar2 default NULL,
		      opt in varchar2,
                      tcl in varchar2);
procedure process_teacher_option(u_access in varchar2,
			 userid in varchar2 default NULL,
                      		term_in in varchar2,
                      		lnum in varchar2,
                      		cnum in varchar2,
				opt in varchar2);
procedure add_enrolled_students(u_access in varchar2 default NULL,
			 userid in varchar2 default NULL,
                        term_in in varchar2 default NULL,
                        lnum in number default NULL,
                        cnum in varchar2 default NULL);
procedure add_course_components(u_access in varchar2 default NULL,
			 userid in varchar2 default NULL,
                         term_in in varchar2 default NULL,
                         lnum in number default NULL,
                         cnum in varchar2 default NULL);
procedure drop_enrolled_student(u_access in varchar2 default NULL,
			 userid in varchar2 default NULL,
                        term_in in varchar2 default NULL,
                        lnum in number default NULL,
                        cnum in varchar2 default NULL);
procedure add_scores(score_type in varchar2,
		     u_access in varchar2 default NULL,
	  	     userid in varchar2 default NULL,
	             term_in in varchar2 default NULL,
                     lnum in number default NULL,
                     cnum in varchar2 default NULL);
procedure process_scores (score_type in varchar2,
			  u_access in varchar2 default NULL,
			  userid in varchar2 default NULL,
                          term_in in varchar2 default NULL,
                          lnum in integer default NULL,
                          comp in varchar2 default NULL,
                          cnum in varchar2 default NULL);
end ;
/
show errors

create or replace package body add_all as

procedure create_catalog(u_access in varchar2 default NULL,
			 userid in varchar2 default NULL) as

   access_check    varchar2(30);
   no_access       exception;

begin

   if (u_access = NULL) then
      raise no_access;
   end if;
   access_check := user_access.check_access(u_access);
   if (access_check != 'Teacher') then
      raise no_access;
   end if;

   htp.htmlOpen;
   htp.headOpen;
   htp.title('Creating a New Catalog Entry');
   htp.header(1,'Adding a New Catalog Entry');
   htp.headClose;
   htp.bodyOpen('/ows-img/raj/fleck.jpg');
   htp.formOpen(owa_util.get_owa_service_path ||
                'insert_all.insert_catalog');

   htp.formHidden('userid', userid);

   htp.tableOpen;
   htp.tableRowopen;
   htp.tableData(htf.strong('COURSE NO: '));
   htp.tableData(htf.formText('cnum', 20, 50));
   htp.tableRowClose;
   htp.tableRowOpen;
   htp.tableData(htf.strong('Course Title: '));
   htp.tableData(htf.formText('cname', 20, 50));
   htp.tableRowClose;
   htp.tableClose;

   htp.formHidden('u_access', u_access);

   htp.formSubmit(NULL,'Add to Catalog');
   htp.formReset;
   htp.formclose;
   htp.bodyClose;
   htp.htmlClose;
Exception
   when no_access then
	Raise_no_access('gradebook');
   when others then
      htp.print('Error in create_catalog');
end create_catalog;

procedure create_course(u_access in varchar2 default NULL,
			userid in varchar2 default NULL) as

   access_check    varchar2(30);
   no_access       exception;
   cursor c1 is select cno from catalog where (catalog.authority =
		userid);

begin

   if (u_access = NULL) then
      raise no_access;
   end if;
   access_check := user_access.check_access(u_access);
   if (access_check != 'Teacher') then
      raise no_access;
   end if;

   htp.htmlOpen;
   htp.headOpen;
   htp.title('Creating a New Course');
   htp.header(1,'Adding a New Course');
   htp.headClose;
   htp.bodyOpen('/ows-img/raj/fleck.jpg');
   htp.formOpen(owa_util.get_owa_service_path ||
                'insert_all.insert_course');
   htp.formHidden('userid', userid);

   htp.formSelectOpen('cnum','Course No: ');
   for c1_rec in c1 loop
     htp.formSelectOption(c1_rec.cno);
   end loop;
   htp.formSelectClose;
   htp.nl;

   htp.tableOpen;
   htp.tableRowopen;
   htp.tableData(htf.strong('Term: '));
   htp.tableData(htf.formText('term_in', 20, 15));
   htp.tableRowClose;
   htp.tableRowOpen;
   htp.tableData(htf.strong('Line Number: '));
   htp.tableData(htf.formText('lnum', 20, 4));
   htp.tableRowClose;
   htp.tableRowOpen;
   htp.tableData(htf.strong('A Grade at: '));
   htp.tableData(htf.formText('aa', 20, 2));
   htp.tableRowClose;
   htp.tableRowOpen;
   htp.tableData(htf.strong('B Grade at: '));
   htp.tableData(htf.formText('bb', 20, 2));
   htp.tableRowClose;
   htp.tableRowOpen;
   htp.tableData(htf.strong('C Grade at: '));
   htp.tableData(htf.formText('cc', 20, 2));
   htp.tableRowClose;
   htp.tableRowOpen;
   htp.tableData(htf.strong('D Grade at: '));
   htp.tableData(htf.formText('dd', 20, 2));
   htp.tableRowClose;
   htp.tableClose;

   htp.formHidden('u_access', u_access);

   htp.formSubmit(NULL,'Add the Course');
   htp.formReset;
   htp.formclose;
   htp.bodyClose;
   htp.htmlClose;
Exception
   when no_access then
	Raise_no_access('gradebook');
   when others then
      htp.print('Error in create_course');
end create_course;

procedure create_student(u_access in varchar2 default NULL,
			 userid in varchar2 default NULL) as

   access_check  varchar2(30);
   no_access     exception;

begin 

   if (u_access = NULL) then
      raise no_access;
   end if;
   access_check := user_access.check_access(u_access);
   if (access_check != 'Teacher') then
      raise no_access;
   end if;

   htp.htmlOpen;
   htp.headOpen;
   htp.title('Creating a New Student');
   htp.header(1,'Adding a New Student');
   htp.headClose;
   htp.bodyOpen('/ows-img/raj/fleck.jpg');
   htp.print('To add students existing from the main database, click ');

htp.anchor2(owa_util.get_owa_service_path||'reports.display_students_in_database?'||
   'u_access='||u_access||'&'||'userid='||userid, 'here');

   htp.print(' or use the form below to enter students to the database.');

   htp.formOpen(owa_util.get_owa_service_path ||
                'insert_all.insert_student');
   htp.formHidden('userid',userid);
   htp.tableOpen;
   htp.tableRowopen;
   htp.tableData(htf.strong('Student Id: '));
   htp.tableData(htf.formText('sid', 20, 15));
   htp.tableRowClose;
   htp.tableRowopen;
   htp.tableData(htf.strong('First Name: '));
   htp.tableData(htf.formText('fname', 20, 15));
   htp.tableRowClose;
   htp.tableRowopen;
   htp.tableData(htf.strong('Last Name: '));
   htp.tableData(htf.formText('lname', 20, 15));
   htp.tableRowClose;
   htp.tableRowopen;
   htp.tableData(htf.strong('Middle Initial: '));
   htp.tableData(htf.formText('middle', 20, 2));
   htp.tableRowClose;
   htp.tableClose;

   htp.formHidden('u_access', u_access);

   htp.formSubmit(NULL,'Add the Student');
   htp.formclose;
   htp.bodyClose;
   htp.htmlClose;
Exception
   when no_access then
	Raise_no_access('gradebook');
end create_student;

procedure select_course(u_access in varchar2 default NULL,
			userid in varchar2 default NULL) as

   access_check    varchar2(30);
   no_access       exception;
   cursor c1 is
     select courses.term,cno,courses.lineno
     from courses
     where (courses.authority = userid);
begin
   if (u_access = NULL) then
      raise no_access;
   end if;
   access_check := user_access.check_access(u_access);
   if (access_check != 'Teacher') then
      raise no_access;
   end if;

   htp.htmlOpen;
   htp.headOpen;
   htp.title('Select Course');
   htp.header(1,'Select Course ');
   htp.headClose;
   htp.bodyOpen('/ows-img/raj/fleck.jpg');
   htp.FormOpen(owa_util.get_owa_service_path || 
                'add_all.course_menu');
   htp.formHidden('userid',userid);

   htp.nl;

   htp.formSelectOpen('tcl','Select Course: ');
   for c1_rec in c1 loop
     htp.formSelectOption('(' ||c1_rec.term||','||
                          c1_rec.cno||','||
                          c1_rec.lineno || ')');
   end loop;
   htp.formSelectClose;
   htp.br; htp.br;
   htp.formHidden('u_access', u_access);

   htp.formSubmit('opt','Submit');  htp.br;

   htp.formClose;
   htp.nl;
   htp.nl;
   htp.print('<FORM><INPUT TYPE="button" VALUE="Back"
	onClick="history.go(-1)"></FORM><p>');
   htp.bodyClose;
   htp.htmlClose;
Exception
   when no_access then
	Raise_no_access('gradebook');
   when others then 
      htp.print('Error in select_course');
end select_course;

procedure course_menu(u_access in varchar2 default NULL,
		      userid in varchar2 default NULL,
		      opt in varchar2,
                      tcl in varchar2) as

   access_check    varchar2(30);
   no_access       exception;
   p1 integer;
   p2 integer;
   term_in courses.term%type;
   lnum courses.lineno%type;
   cnum courses.cno%type;

begin
   if (u_access = NULL) then
      raise no_access;
   end if;
   access_check := user_access.check_access(u_access);
   if (access_check != 'Teacher') then
      raise no_access;
   end if;

   p1 := instr(tcl,',',1,2)+1;
   p2 := instr(tcl,')',1,1)-1;
   term_in := substr(tcl,2,instr(tcl,',',1)-2);
   lnum := to_number(substr(tcl,p1,p2-p1+1));
   cnum := substr(tcl,instr(tcl,',',1,1)+1,
                      p1-instr(tcl,',',1,1)-2);

   htp.htmlOpen;
   htp.headOpen;
   htp.title('Course Menu');
   htp.headClose;
   htp.bodyOpen('/ows-img/raj/fleck.jpg');
   htp.fontOpen('Blue');
   htp.header(1,'Course Menu');
   htp.fontClose;

   htp.tableOpen;
   htp.print('<tr><td><b>Term:</b></td><td><b><i>' ||term_in|| '</b></i></td>'); 
   htp.print('<tr><td><b>Course number:</b></td><td><b><i>' ||cnum|| '</b></i></td>'); 
   htp.print('<tr><td><b>Line number:</b></td><td><b><i>' ||lnum|| '</b></i></td>'); 
   htp.tableClose;  
   htp.para;

   htp.FormOpen(owa_util.get_owa_service_path || 
                'add_all.process_teacher_option');
   htp.nl;

   htp.formHidden('u_access', u_access);
   htp.formHidden('userid',userid);
   htp.formHidden('term_in', term_in);
   htp.formHidden('lnum', lnum);
   htp.formHidden('cnum', cnum);

   htp.formSubmit('opt','Display Students in Course'); htp.br;
   htp.formSubmit('opt','Add Students to Course');  htp.br;
   htp.formSubmit('opt','Add Component to Course');  htp.br;
   htp.formSubmit('opt','Add Student Score');  htp.br;
   htp.formSubmit('opt','Modify Student Score');  htp.br;
   htp.formSubmit('opt','Drop Student from Course');  htp.br;
   htp.formSubmit('opt','Print Course Report');  htp.br;
   htp.formSubmit('opt','Log Out');  htp.br;

   htp.formClose;
   htp.nl;
   htp.nl;
   htp.print('<FORM><INPUT TYPE="button" VALUE="Back" onClick="history.go(-1)"></FORM><p>');
   htp.bodyClose;
   htp.htmlClose;
Exception
   when no_access then
	Raise_no_access('gradebook');
   when others then 
      htp.print('Error in select_course');
end course_menu;

procedure process_teacher_option(u_access in varchar2,
				userid in varchar2 default NULL,
                      		term_in in varchar2,
                      		lnum in varchar2,
                      		cnum in varchar2,
				opt in varchar2) as
   access_check varchar2(30);
   no_access    exception;

begin
   if (u_access = NULL) then 
      raise no_access;
   end if;
   access_check := user_access.check_access(u_access);
   if (access_check != 'Teacher') then 
      raise no_access;
   end if;
   if (opt = 'Display Students in Course') then
     display.display_students(term_in,lnum,u_access,userid);
   
   elsif (opt = 'Add Students to Course') then
     add_all.add_enrolled_students(u_access,userid,term_in,lnum,cnum);
   elsif (opt = 'Add Component to Course') then
     add_all.add_course_components(u_access,userid,term_in,lnum,cnum);
   elsif (opt = 'Add Student Score') then
     add_all.add_scores('add',u_access,userid,term_in,lnum,cnum);
   elsif (opt = 'Modify Student Score') then
     add_all.add_scores('modify',u_access,userid,term_in,lnum,cnum);
   elsif (opt = 'Drop Student from Course') then
     add_all.drop_enrolled_student(u_access,userid,term_in,lnum,cnum);
   elsif (opt = 'Print Course Report') then
     reports.display_report(u_access,userid,term_in,lnum,cnum);
   elsif (opt = 'Log Out') then
     user_access.logout(u_access);
   end if;
Exception
   when no_access then
	Raise_no_access('gradebook');
   when others then 
      htp.print('error in process_teacher_option');
end process_teacher_option;

procedure add_enrolled_students(u_access in varchar2 default NULL, 
			userid in varchar2 default NULL,
                        term_in in varchar2 default NULL, 
                        lnum in number default NULL,
                        cnum in varchar2 default NULL) as

   access_check    varchar2(30);
   no_access       exception;

   cursor c1 is
      select distinct A.sid, A.lname, A.fname
      from students A
      where (A.authority = userid) and
	     not exists (select B.term, B.sid, B.lineno
		        from enrolls B
			where upper(B.term) = upper(term_in)
			  and upper(B.sid)  = upper (A.sid)
			  and upper(B.lineno) = upper(lnum) )
      order by lname;
 
begin

   if (u_access is NULL) then
      raise no_access;
   end if;
   access_check := user_access.check_access(u_access);
   if (access_check != 'Teacher') then
      raise no_access;
   end if;

   htp.htmlOpen;
   htp.headOpen;
   htp.title('Choose the students');
   htp.header(1, 'Choose the Students to Enroll in the Course');
   htp.headClose;
   htp.bodyOpen('/ows-img/raj/fleck.jpg');
   htp.FormOpen(owa_util.get_owa_service_path || 
                'insert_all.insert_enrolls');
   htp.nl;

   htp.tableOpen;
   htp.print('<tr><td><b>Term:</b></td><td><b><i>' ||term_in|| '</b></i></td>'); 
   htp.print('<tr><td><b>Course number:</b></td><td><b><i>' ||cnum|| '</b></i></td>'); 
   htp.print('<tr><td><b>Line number:</b></td><td><b><i>' ||lnum|| '</b></i></td>'); 
   htp.tableClose;  
   htp.para;
htp.print(term_in || ' ' || lnum || ' ' || userid);
htp.nl;
   htp.formHidden('chk', '0000');
   for sid_rec in c1 loop
      htp.formCheckbox('chk',sid_rec.sid);
      htp.print(sid_rec.lname);
      htp.print(', ');
      htp.print(sid_rec.fname);
      htp.nl;
   end loop;

   htp.formHidden('u_access', u_access);
   htp.formHidden('userid',userid);
   htp.formHidden('term_in', term_in);
   htp.formHidden('lnum', lnum);

   htp.formSubmit(NULL,'Add these students to course');
   htp.formClose;
   htp.bodyClose;
   htp.htmlClose;

Exception
   when no_access then
	Raise_no_access('gradebook');
   when others then 
      htp.print('Something is wrong in display_enrolls');

end add_enrolled_students;

procedure add_course_components(u_access in varchar2 default NULL, 
			 userid in varchar2 default NULL,
                         term_in in varchar2 default NULL,
                         lnum in number default NULL,
                         cnum in varchar2 default NULL) as

   access_check       varchar2(30);
   no_access          exception;

begin
   if (u_access = NULL) then
      raise no_access;
   end if;
  
   access_check := user_access.check_access(u_access);
   if (access_check != 'Teacher') then
      raise no_access;
   end if;

   htp.htmlopen;
   htp.headOpen;
   htp.title('Adding Course Components');
   htp.header(2,'Adding Course Components for ' || term_in || ',' || lnum
              || ',' || cnum);
   htp.headClose;
   htp.bodyOpen('/ows-img/raj/fleck.jpg');
   htp.formOpen(owa_util.get_owa_service_path || 
                'insert_all.insert_component');
   htp.nl;

   htp.tableOpen;
   htp.tableRowopen;
   htp.tableData(htf.strong('Term: '));
   htp.tableData(term_in);
   htp.tableRowClose;
   htp.tableRowopen;
   htp.tableData(htf.strong('Line Number: '));
   htp.tableData(lnum);
   htp.tableRowClose;
   htp.tableRowopen;
   htp.tableData(htf.strong('Component Name: '));
   htp.tableData(htf.formText('cname',10,15));
   htp.tableRowClose;
   htp.tableRowopen;
   htp.tableData(htf.strong('Max Points: '));
   htp.tableData(htf.formText('maxpts',10,4));
   htp.tableRowClose;
   htp.tableRowopen;
   htp.tableData(htf.strong('Weight: '));
   htp.tableData(htf.formText('wght',10,3));
   htp.tableRowClose;
   htp.tableClose;

   htp.formHidden('u_access', u_access);
   htp.formHidden('userid',userid);
   htp.formHidden('term_in', term_in);
   htp.formHidden('lnum', lnum);

   htp.formSubmit(NULL,'SUBMIT');
   htp.formClose;
   htp.bodyClose;
   htp.htmlClose;
Exception
   when no_access then
	Raise_no_access('gradebook');
   when others then 
     htp.print('Something is wrong in add_course_components');

end add_course_components;

procedure drop_enrolled_student(u_access in varchar2 default NULL,
			  userid in varchar2 default NULL,
                        term_in in varchar2 default NULL,
                        lnum in number default NULL,
                        cnum in varchar2 default NULL) as

   access_check       varchar2(30);
   no_access          exception;

   cursor c1 is 
     select students.sid,lname,fname
     from   students,enrolls
     where  students.sid = enrolls.sid and
            term = term_in and
            lineno = lnum and
	    (students.authority = userid)
     order by lname;
   
begin
   if (u_access = NULL) then
      raise no_access;
   end if;
  
   access_check := user_access.check_access(u_access);
   if (access_check != 'Teacher') then
      raise no_access;
   end if;

   htp.htmlopen;
   htp.headOpen;
   htp.title('Dropping Enrolled student');
   htp.header(2,'Dropping Enrolled student in ' || term_in || ',' || lnum
              || ',' || cnum);
   htp.headClose;
   htp.bodyOpen('/ows-img/raj/fleck.jpg');
   htp.formOpen(owa_util.get_owa_service_path || 
                'insert_all.delete_enrolled_student');
   htp.nl;
   htp.formSelectOpen('idlf','Select Student To Drop: ');
   for c1_rec in c1 loop
     htp.formSelectOption(c1_rec.sid||'  '||
                          c1_rec.lname||', '||
                          c1_rec.fname);
   end loop;
   htp.formSelectClose;
   htp.br; htp.br;
   htp.formHidden('u_access', u_access);
   htp.formHidden('userid',userid);
   htp.formHidden('term_in', term_in);
   htp.formHidden('lnum', lnum);

   htp.formSubmit(NULL,'Drop the student');
   htp.formClose;
   htp.bodyClose;
   htp.htmlClose;
Exception
   when no_access then
	Raise_no_access('gradebook');
   when others then 
     htp.print('Something is wrong in drop_enrolled_student');
end drop_enrolled_student;

procedure add_scores(score_type in varchar2,
		     u_access in varchar2 default NULL,
		     userid in varchar2 default NULL,
	             term_in in varchar2 default NULL,
                     lnum in number default NULL,
                     cnum in varchar2 default NULL) as

   access_check       varchar2(30);
   no_access	      exception;

   cursor c1 is
      select term, lineno, compname 
      from   components
      where  term = term_in and lineno = lnum and (authority = userid);
begin
   if (u_access = NULL) then
      raise no_access;
   end if;

   access_check := user_access.check_access(u_access);
   if (access_check != 'Teacher') then
      raise no_access;
   end if;

   htp.htmlOpen;
   htp.headOpen; 
   htp.title('Selecting Component for Entering Scores');
   htp.header(1,'Selecting Component for Entering Scores');
   htp.headClose;
   htp.bodyOpen('/ows-img/raj/fleck.jpg');
   htp.formOpen(owa_util.get_owa_service_path || 
                'add_all.process_scores');
   htp.nl;

   htp.formSelectOpen('comp','Choose the course component: ');
   for crec in c1 loop
     htp.formSelectOption(crec.compname);
   end loop;
   htp.formSelectClose;
   htp.formHidden('score_type', score_type);
   htp.formHidden('u_access', u_access);
   htp.formHidden('userid',userid);
   htp.formHidden('term_in', term_in);
   htp.formHidden('cnum', cnum);
   htp.formHidden('lnum', lnum);

   htp.formSubmit;
   htp.formClose;
   htp.bodyClose;
   htp.htmlClose;
Exception
   when no_access then
	Raise_no_access('gradebook');
   when others then 
     htp.print('Something is wrong in add_scores');
end add_scores;
  
procedure process_scores (score_type in varchar2,
			  u_access in varchar2 default NULL,
			  userid in varchar2 default NULL,
                          term_in in varchar2 default NULL,
                          lnum in integer default NULL,
                          comp in varchar2 default NULL,
                          cnum in varchar2 default NULL) as

   access_check    varchar2(30);
   no_access       exception;

   cursor c1 is
      select distinct B.lname, B.fname, A.sid, A.term, A.lineno
      from enrolls A, students B
      where (A.term = term_in) and (A.authority = userid) and
            (A.lineno = lnum) and (A.authority = B.authority) and
            (A.sid = B.sid)
      order by lname;

   cursor c2 is
      select distinct B.lname, B.fname, A.sid, A.term, A.lineno, C.points
      from enrolls A, students B, scores C
      where (A.term = term_in) and (A.authority = userid) and
            (A.lineno = lnum) and (A.authority = B.authority) and
            (A.sid = B.sid) and (A.authority = C.authority) and
	    (C.compname = comp) and
	    (C.sid = A.sid) and
	    (C.term = A.term) and
	    (C.lineno = A.lineno)
	order by lname;
begin 
   if (u_access = NULL) then
      raise no_access;
   end if;

   access_check := user_access.check_access(u_access);
   if (access_check != 'Teacher') then
      raise no_access;
   end if;

   htp.htmlOpen;
   htp.headOpen;
   htp.title('Entering Scores');
   htp.header(1,'Entering Scores for ' || cnum || ',' || lnum || ','
                || term_in);
   htp.headClose;
   htp.bodyOpen('/ows-img/raj/fleck.jpg');
   htp.formOpen(owa_util.get_owa_service_path || 
	        'insert_all.insert_scores');
   htp.formHidden('u_access', u_access);
   htp.formHidden('userid',userid);
   htp.formHidden('term_in', term_in);
   htp.formHidden('lnum', lnum);
   htp.formHidden('comp', comp);
   htp.formHidden('score_type', score_type);

   htp.print('Component: ');
   htp.print(comp);
   htp.nl;
   htp.nl;
   
   htp.formHidden('score_arr', '000');
   htp.formHidden('ids', '0000');
   htp.tableOpen;
 if (score_type = 'add') then  
   for crec in c1 loop
     htp.tableRowopen;
     htp.tableData(htf.strong(crec.lname||', ' || crec.fname));
     htp.tableData(htf.formText('score_arr', 3, 3));
         htp.formHidden('ids', crec.sid);
     htp.tableRowClose;
   end loop;
 elsif (score_type = 'modify') then
   for crec in c2 loop
     htp.tableRowopen;
     htp.tableData(htf.strong(crec.lname||', ' || crec.fname));

     htp.tableData(htf.formText('score_arr', 3, 3, crec.points));
         htp.formHidden('ids', crec.sid);
     htp.tableRowClose;
   end loop;
 end if;
   htp.tableClose;
   htp.formSubmit(NULL,'Enter the scores');
   htp.formclose;
   htp.bodyClose;
   htp.htmlClose;
Exception
   when no_access then
	Raise_no_access('gradebook');
   when others then 
     htp.print('Something is wrong in process_scores');

end process_scores;

end add_all;
/
show errors
