set scan off set echo on -- Created for Loyola Marymount University -- By Robert M. Nitsos -- 05-OCT-2004 -- -- This package creates Banner Web pages that display: -- Photo Class Roster - A class roster with OneCard photos displayed for -- Faculty users. User can also download text data to a tab-delimited -- file. -- create or replace package lmubwgkpics is procedure LMUPhotoRoster (term IN STVTERM.STVTERM_CODE%TYPE DEFAULT NULL, crn in sfrstcr.sfrstcr_crn%type default null, display_email IN VARCHAR2 DEFAULT NULL, error_mess in varchar2 default null); procedure LMUDLPhotoRoster (term IN STVTERM.STVTERM_CODE%TYPE DEFAULT NULL, crn in sfrstcr.sfrstcr_crn%type default null); END lmubwgkpics; / show errors CREATE OR REPLACE PACKAGE BODY lmubwgkpics AS /* Global type and variable declarations for package */ pidm spriden.spriden_pidm%TYPE; hold_term stvterm.stvterm_code%TYPE; hold_crn sirasgn.sirasgn_crn%TYPE; course_rec bwlkilib.get_course_info_c%ROWTYPE; /****************************** LMU Photo Class Roster ***********************/ procedure LMUPhotoRoster (term IN STVTERM.STVTERM_CODE%TYPE DEFAULT NULL, crn in sfrstcr.sfrstcr_crn%type default null, display_email IN VARCHAR2 DEFAULT NULL, error_mess in varchar2 default null) is curr_release varchar2(10) := '6.2'; msg varchar2(255); term_rec stvterm%rowtype; rcount number; term_description stvterm%ROWTYPE; update_ind VARCHAR2 (1); student_name VARCHAR2 (132); confid_info VARCHAR2 (120); dead_info VARCHAR2 (120); crnmsg VARCHAR2 (255); sdax_emailopt gtvsdax.gtvsdax_external_code%TYPE; sdax_emaildel gtvsdax.gtvsdax_external_code%TYPE; -- email goremal.goremal_email_address%TYPE; email_list_included NUMBER := 0; email_list_total NUMBER := 0; to_value VARCHAR2 (32000); /* Cursor for information that is to be displayed */ cursor student_list is select stvterm_code term_code, stvterm_desc term_desc, sfrstcr_crn crn, ssbsect_subj_code subj, ssbsect_crse_numb crs, ssbsect_seq_numb sec, nvl(ssbsect_crse_title, c1.scbcrse_title) title, sfrstcr_pidm pidm, spriden_id id, spriden_last_name||', '||spriden_first_name||' '||spriden_mi name, goremal_email_address email, a.sgbstdn_levl_code levl, stvlevl_desc s_level, a.sgbstdn_majr_code_1 majr1, stvmajr_desc major1, f_class_calc_fnc(a.sgbstdn_pidm, a.sgbstdn_levl_code, stvterm_code) class, sfrstcr_credit_hr cr_hr, sfrstcr_gmod_code gmod, stvgmod_desc grade_mode, sfrstcr_rsts_code rsts, stvrsts_desc reg_status, sfrstcr_rsts_date rsts_date, sfrstcr_reg_seq reg_seq from stvterm, sfrstcr, stvrsts, ssbsect, scbcrse c1, spriden, spbpers, sgbstdn a, stvlevl, stvmajr, stvgmod, goremal where stvterm_code = hold_term and sfrstcr_term_code = stvterm_code and sfrstcr_crn = hold_crn and sfrstcr_crn = ssbsect_crn and sfrstcr_term_code = ssbsect_term_code and ssbsect_subj_code = c1.scbcrse_subj_code and ssbsect_crse_numb = c1.scbcrse_crse_numb and c1.scbcrse_eff_term = (select max(c2.scbcrse_eff_term) from scbcrse c2 where c2.scbcrse_eff_term <= ssbsect_term_code and c2.scbcrse_subj_code = c1.scbcrse_subj_code and c2.scbcrse_crse_numb = c1.scbcrse_crse_numb) and sfrstcr_rsts_code = stvrsts_code(+) and sfrstcr_gmod_code = stvgmod_code(+) and stvrsts_incl_sect_enrl = 'Y' and sfrstcr_pidm = spriden_pidm and spriden_change_ind is null and sfrstcr_pidm = spbpers_pidm(+) and sfrstcr_pidm = a.sgbstdn_pidm and a.sgbstdn_term_code_eff= (select max(b.sgbstdn_term_code_eff) from sgbstdn b where b.sgbstdn_term_code_eff <= sfrstcr_term_code and a.sgbstdn_pidm = b.sgbstdn_pidm) and a.sgbstdn_levl_code = stvlevl_code(+) and a.sgbstdn_majr_code_1 = stvmajr_code(+) and sfrstcr_pidm = goremal_pidm(+) and goremal_preferred_ind(+) = 'Y' and goremal_status_ind(+) = 'A' order by name; slist student_list%rowtype; begin /* check for valid user and define roles */ IF NOT twbkwbis.F_ValidUser(pidm) THEN return; END IF; sdax_emailopt := NVL (bwcklibs.F_GetGtvsdaxRule ('EMAILOPT', 'FACWEB'), 'BCC'); sdax_emaildel := NVL (bwcklibs.F_GetGtvsdaxRule ('EMAILDEL', 'FACWEB'), ','); /* Check routine for term parameter, select term parameter from the General */ /* table gorwprm. */ /* If value not set then term value chosen from Select Term page */ /* (P_FacSelTerm and stored in local variable hold_term. */ IF term IS NULL THEN hold_term := twbkwbis.f_getparam (pidm, 'TERM'); ELSE twbkwbis.p_setparam (pidm, 'TERM', term); hold_term := term; END IF; /* make sure a term has been selected and not invalid value */ IF hold_term IS NULL THEN bwlkostm.p_facselterm(pidm, calling_proc_name => 'lmubwgkpics.LMUPhotoRoster'); RETURN; END IF; /* If crn has not been passed as a param, then try to get */ /* it from the general table, gorwprm */ IF CRN IS NULL THEN hold_crn := twbkwbis.F_GetParam (pidm, 'CRN'); update_ind := twbkwbis.F_GetParam (pidm, 'CRNPRIV'); /* Otherwise, store the value of the param in GORWPRM */ ELSE twbkwbis.P_SetParam (pidm, 'CRN', CRN); hold_crn := CRN; END IF; /* Make sure a CRN has been selected */ IF hold_crn IS NULL THEN TWBKWBIS.P_SetParam (pidm, 'PROC_NAME', 'lmubwgkpics.LMUPhotoRoster'); TWBKWBIS.P_SetParam (pidm, 'PROC_NAME2', 'lmubwgkpics.LMUPhotoRoster'); bwlkocrn.P_FacCrnSel ( hold_term, 'lmubwgkpics.LMUPhotoRoster', 'lmubwgkpics.LMUPhotoRoster' ); RETURN; END IF; /* set paramater to indicate we are a faculty user */ twbkwbis.P_SetParam(pidm,'STUFAC_IND','FAC'); /* If the user is not a valid faculty member for the selected */ /* term, print a message, close the page, and exit. */ IF NOT BWLKILIB.F_ValidFac(hold_term, pidm) THEN twbkwbis.P_OpenDoc('lmubwgkpics.LMUPhotoRoster',header_text=>'*** Invalid Faculty ID ***'); msg := 'You must be a valid faculty member for the selected term to access this page.'; HTP.hr; twgkfrmt.P_PrintImage(twbklibs.twgbwrul_rec.twgbwrul_error_gif); HTP.bold(msg); HTP.para; twbkwbis.P_CloseDoc(curr_release); RETURN; END IF; /* get term description */ OPEN stkterm.stvtermc (hold_term); /* find the term description */ FETCH stkterm.stvtermc INTO term_description; CLOSE stkterm.stvtermc; /* Check to see if class list display is available for this term */ IF NOT bwlkilib.f_claslst (hold_term) THEN twbkfrmt.p_paragraph (1); twbkfrmt.p_printmessage ( g$_nls.get ( 'BWLKFCW1-0700', 'SQL', 'Class List Display is not available for %01%.', term_description.stvterm_desc), 'ERROR'); twbkfrmt.p_paragraph (1); twbkwbis.p_closedoc (curr_release); RETURN; END IF; to_value := null; /* Get data from SSBSECT using get_course_info_c cursor */ OPEN bwlkilib.get_course_info_c (hold_term, hold_crn); FETCH bwlkilib.get_course_info_c INTO course_rec; CLOSE bwlkilib.get_course_info_c; /* Open Cursor */ open student_list; fetch student_list into slist; if student_list%notfound then /* No Data Found */ twbkwbis.P_OpenDoc('lmubwgkpics.LMUPhotoRoster',header_text=>'*** No Registrations Exist ***'); twbkwbis.P_DispInfo('lmubwgkpics.LMUPhotoRoster','NO_REG'); /* Display Course Information */ bwlkfrmt.p_course_info ( hold_term, hold_crn, twbkfrmt.f_encodeurl ( twbkwbis.f_cgibin || 'bwckctlg.p_disp_listcrse' || '?term_in=' || twbkfrmt.f_encode (hold_term) || '&subj_in=' || twbkfrmt.f_encode (course_rec.ssbsect_subj_code) || '&crse_in=' || twbkfrmt.f_encode (course_rec.ssbsect_crse_numb) || '&schd_in=' || twbkfrmt.f_encode (course_rec.ssbsect_schd_code))); twbkfrmt.p_tablerowopen; twbkfrmt.p_tabledatalabel(g$_nls.get('BWLKFCW1-0000', 'SQL', 'Duration:')); twbkfrmt.p_tabledata ( TO_CHAR ( course_rec.ssbsect_ptrm_start_date, twbklibs.twgbwrul_rec.twgbwrul_date_fmt ) || ' - ' || TO_CHAR ( course_rec.ssbsect_ptrm_end_date, twbklibs.twgbwrul_rec.twgbwrul_date_fmt ) ); twbkfrmt.p_tablerowclose; twbkfrmt.p_tableclose; twbkfrmt.p_printtext (crnmsg); HTP.br; bwlkfrmt.p_enroll_count (hold_term, hold_crn); HTP.br; else /* Display Roster */ rcount := 0; LOOP if rcount > 0 then fetch student_list into slist; end if; EXIT WHEN student_list%notfound; if rcount = 0 then /* Open Page */ twbkwbis.P_OpenDoc('lmubwgkpics.LMUPhotoRoster'); twbkwbis.P_DispInfo('lmubwgkpics.LMUPhotoRoster', 'GENERAL'); twbkwbis.P_DispInfo('lmubwgkpics.LMUPhotoRoster', 'CONFID'); twbkwbis.P_DispInfo('lmubwgkpics.LMUPhotoRoster', 'ADDRESS'); /* Display Course Information */ bwlkfrmt.p_course_info ( hold_term, hold_crn, twbkfrmt.f_encodeurl ( twbkwbis.f_cgibin || 'bwckctlg.p_disp_listcrse' || '?term_in=' || twbkfrmt.f_encode (hold_term) || '&subj_in=' || twbkfrmt.f_encode (course_rec.ssbsect_subj_code) || '&crse_in=' || twbkfrmt.f_encode (course_rec.ssbsect_crse_numb) || '&schd_in=' || twbkfrmt.f_encode (course_rec.ssbsect_schd_code))); twbkfrmt.p_tablerowopen; twbkfrmt.p_tabledatalabel(g$_nls.get('BWLKFCW1-0000', 'SQL', 'Duration:')); twbkfrmt.p_tabledata ( TO_CHAR ( course_rec.ssbsect_ptrm_start_date, twbklibs.twgbwrul_rec.twgbwrul_date_fmt ) || ' - ' || TO_CHAR ( course_rec.ssbsect_ptrm_end_date, twbklibs.twgbwrul_rec.twgbwrul_date_fmt ) ); twbkfrmt.p_tablerowclose; twbkfrmt.p_tableclose; twbkfrmt.p_printtext (crnmsg); HTP.br; bwlkfrmt.p_enroll_count (hold_term, hold_crn); HTP.br; /* Display Link to Download Data */ twbkwbis.P_DispInfo('lmubwgkpics.LMUPhotoRoster', 'DOWNLOAD'); HTP.formOpen(twbklibs.twgbwrul_rec.twgbwrul_cgibin_dir||'/'||'lmubwgkpics.LMUDLPhotoRoster'); HTP.formHidden('term', hold_term); HTP.formHidden('crn', hold_crn); HTP.formsubmit(NULL,'DOWNLOAD DATA'); HTP.formClose; /* Open Table and Create Headers */ twgkfrmt.P_TableOpen('DATADISPLAY'); twgkfrmt.P_TableRowOpen('left'); twgkfrmt.P_TableDataLabel('Photo',calign=>'center'); twgkfrmt.P_TableDataLabel('ID',calign=>'center'); twgkfrmt.P_TableDataLabel('Name',calign=>'center'); twgkfrmt.P_TableDataLabel('Level',calign=>'center'); twgkfrmt.P_TableDataLabel('Class',calign=>'center'); twgkfrmt.P_TableDataLabel('Major',calign=>'center'); twgkfrmt.P_TableDataLabel('Credits',calign=>'center'); twgkfrmt.P_TableDataLabel('Grade Mode',calign=>'center'); twgkfrmt.P_TableDataLabel('Status',calign=>'center'); twgkfrmt.P_TableDataLabel('Status Date',calign=>'center'); twgkfrmt.P_TableDataLabel('Reg Seq',calign=>'center'); twgkfrmt.P_TableDataLabel(null,calign=>'center'); twgkfrmt.P_TableRowClose; end if; /* Format Student Name */ student_name := f_format_name (slist.pidm, 'LFMI'); confid_info := ''; confid_info := bwcklibs.F_ConfidStudInfo_L (slist.pidm); dead_info := ''; dead_info := bwlkilib.f_checkdeadind (slist.pidm); twgkfrmt.P_TableRowOpen('left'); htp.print('
