@obe-loms/coms-parser 1.5.2 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,17 @@
1
+ import { COAEP } from "../../types/coaep";
2
+ import { DataTable, DataTableInfo } from "./DataTable";
3
+ import { ParserResult } from "../types/ParserResult";
4
+ import DataTableException from "../types/DataTableException";
5
+ export declare class CoaepDT extends DataTable<COAEP> {
6
+ faculty: string | null;
7
+ course: string | null;
8
+ sy: string | null;
9
+ semester: number | null;
10
+ constructor();
11
+ fromCSVString(csvString: string): Promise<ParserResult<DataTableInfo>>;
12
+ toJson(): Promise<ParserResult<{
13
+ jsonObj: COAEP | null;
14
+ validMsgs: string[];
15
+ tableErrors: DataTableException[];
16
+ }>>;
17
+ }
@@ -0,0 +1,7 @@
1
+ import DataTableException from "../types/DataTableException";
2
+ export declare abstract class DTValidator<DT, OBJ> {
3
+ protected name: string;
4
+ constructor(name: string);
5
+ getName(): string;
6
+ abstract validate(validMsgs: string[], tableErrors: DataTableException[], dataTable: DT, jsonObj: OBJ): Promise<void>;
7
+ }
@@ -0,0 +1,37 @@
1
+ import { ParserResult } from "../types/ParserResult";
2
+ import DataTableException from "../types/DataTableException";
3
+ import { DTValidator } from "./DTValidator";
4
+ export type DataTableInfo = {
5
+ name: string;
6
+ table: (string | null)[][];
7
+ headers: string[];
8
+ };
9
+ export declare abstract class DataTable<T> {
10
+ protected name: string;
11
+ protected table: (string | null)[][];
12
+ protected headers: string[];
13
+ protected validators: DTValidator<this, T>[];
14
+ constructor();
15
+ getName(): string;
16
+ getHeaders(): string[];
17
+ getTable(): ParserResult<DataTableInfo>;
18
+ setTable(table: (string | null)[][]): Promise<void>;
19
+ abstract fromCSVString(csvString: string): Promise<ParserResult<DataTableInfo>>;
20
+ abstract toJson(): Promise<ParserResult<{
21
+ jsonObj: T | null;
22
+ validMsgs: string[];
23
+ tableErrors: DataTableException[];
24
+ }>>;
25
+ useValidator(validator: DTValidator<this, T>): void;
26
+ fromXML(xls: File, sheetName?: string): Promise<ParserResult<DataTableInfo>>;
27
+ findValue(str: string): Promise<{
28
+ row: number;
29
+ column: number;
30
+ }>;
31
+ validate(): Promise<ParserResult<{
32
+ validMsgs: string[];
33
+ tableErrors: DataTableException[];
34
+ }>>;
35
+ assertInitialized(): Promise<string>;
36
+ initializeTable(data: File | string): Promise<ParserResult>;
37
+ }
@@ -0,0 +1,9 @@
1
+ import { COAEP } from "../../../../types/coaep";
2
+ import DataTableException from "../../../types/DataTableException";
3
+ import { CoaepDT } from "../../CoaepDT";
4
+ import { DTValidator } from "../../DTValidator";
5
+ export declare class ILOTaxoOrder extends DTValidator<CoaepDT, COAEP> {
6
+ constructor();
7
+ validate(validMsgs: string[], tableErrors: DataTableException[], coaepDT: CoaepDT, coaepObj: COAEP | null): Promise<void>;
8
+ }
9
+ export default ILOTaxoOrder;
@@ -0,0 +1,9 @@
1
+ import { COAEP } from "../../../../types/coaep";
2
+ import { CoaepDT } from "../../CoaepDT";
3
+ import DataTableException from "../../../types/DataTableException";
4
+ import { DTValidator } from "../../DTValidator";
5
+ export declare class LastILOTaxo extends DTValidator<CoaepDT, COAEP> {
6
+ constructor();
7
+ validate(validMsgs: string[], tableErrors: DataTableException[], coaepDT: CoaepDT, coaepObj: COAEP | null): Promise<void>;
8
+ }
9
+ export default LastILOTaxo;
@@ -0,0 +1,8 @@
1
+ import { COAEP } from "../../../../types/coaep";
2
+ import { CoaepDT } from "../../CoaepDT";
3
+ import DataTableException from "../../../types/DataTableException";
4
+ import { DTValidator } from "../../DTValidator";
5
+ export declare class MinCOtaxo extends DTValidator<CoaepDT, COAEP> {
6
+ constructor();
7
+ validate(validMsgs: string[], tableErrors: DataTableException[], coaepDT: CoaepDT, coaepObj: COAEP | null): Promise<void>;
8
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,8 @@
1
+ type DataTableException = {
2
+ error: string;
3
+ row?: number;
4
+ column?: number;
5
+ from?: string;
6
+ cause?: any;
7
+ };
8
+ export default DataTableException;
@@ -0,0 +1,7 @@
1
+ export type ParserResult<T = any> = {
2
+ success: boolean;
3
+ message: string;
4
+ data?: T;
5
+ error?: any;
6
+ };
7
+ export default ParserResult;
package/bundle.js CHANGED
@@ -1,62 +1,58 @@
1
- import _0x4d14f7 from 'papaparse';
2
- import * as _0xf8a8f8 from 'xlsx';
1
+ import _0x11bf51 from 'papaparse';
2
+ import * as _0x2bf800 from 'xlsx';
3
3
 
4
- function parseCurriculum(_0x44cea8){let _0x4ce8ca='',_0x192441='',_0x152549=0x0,_0x315429=null;const _0x59acd6=[];return _0x4d14f7['parse'](_0x44cea8,{'skipEmptyLines':!![],'complete':_0x4d9b2e=>{_0x4d9b2e['data']['forEach'](_0x2664cd=>{const _0x4d913d=_0x2664cd['map'](_0x55e1b7=>(_0x55e1b7??'')['toString']()['trim']()),_0x8fa2a0=_0x4d913d[0x0]??'';if(_0x8fa2a0['includes']('Rev#')){const _0x129de4=_0x8fa2a0['match'](/([A-Z0-9]+)\s*-\s*.*:\s*(.*?)\s+Rev#\s*(\d+)/i);_0x129de4&&(_0x4ce8ca=_0x129de4[0x1]?.['trim']()??'',_0x192441=_0x129de4[0x2]?.['trim']()??'',_0x152549=parseInt(_0x129de4[0x3]??'0',0xa));return;}if(/FIRST YEAR/i['test'](_0x8fa2a0)){_0x315429=0x1;return;}if(/SECOND YEAR/i['test'](_0x8fa2a0)){_0x315429=0x2;return;}if(/THIRD YEAR/i['test'](_0x8fa2a0)){_0x315429=0x3;return;}if(/FOURTH YEAR/i['test'](_0x8fa2a0)){_0x315429=0x4;return;}if(/FIFTH YEAR/i['test'](_0x8fa2a0)){_0x315429=0x5;return;}if(/First Semester/i['test'](_0x8fa2a0)||/Second Semester/i['test'](_0x8fa2a0)||/Summer/i['test'](_0x8fa2a0))return;const _0x39727b=[{'sem':0x1,'offset':0x0},{'sem':0x2,'offset':0x6},{'sem':0x3,'offset':0xc}];_0x39727b['forEach'](({sem:_0x249e26,offset:_0x2a73de})=>{const _0x2e6ec1=_0x4d913d[_0x2a73de]??'',_0x48daf4=_0x4d913d[_0x2a73de+0x1]??'',_0x4faaff=_0x4d913d[_0x2a73de+0x2]??'',_0x5035b7=_0x4d913d[_0x2a73de+0x3]??'',_0x2c09c7=_0x4d913d[_0x2a73de+0x4]??'';_0x2e6ec1&&_0x315429&&_0x59acd6['push']({'curr_id':_0x4ce8ca,'program_name':_0x192441,'revision_no':_0x152549,'year_level':_0x315429,'sem':_0x249e26,'course_id':_0x2e6ec1,'course_desc':_0x48daf4,'total_units':_0x4faaff,'lec_unit':_0x5035b7,'lab_unit':_0x2c09c7});});});}}),_0x59acd6;}
4
+ function parseCurriculum(_0x1826d8){let _0x2ff54a='',_0x2f9786='',_0x483420=0x0,_0x2ede2d=null;const _0x4b1260=[];return _0x11bf51['parse'](_0x1826d8,{'skipEmptyLines':!![],'complete':_0x442fd7=>{_0x442fd7['data']['forEach'](_0x522b3c=>{const _0x35bf10=_0x522b3c['map'](_0x1a04d7=>(_0x1a04d7??'')['toString']()['trim']()),_0x188379=_0x35bf10[0x0]??'';if(_0x188379['includes']('Rev#')){const _0x440e8a=_0x188379['match'](/([A-Z0-9]+)\s*-\s*.*:\s*(.*?)\s+Rev#\s*(\d+)/i);_0x440e8a&&(_0x2ff54a=_0x440e8a[0x1]?.['trim']()??'',_0x2f9786=_0x440e8a[0x2]?.['trim']()??'',_0x483420=parseInt(_0x440e8a[0x3]??'0',0xa));return;}if(/FIRST YEAR/i['test'](_0x188379)){_0x2ede2d=0x1;return;}if(/SECOND YEAR/i['test'](_0x188379)){_0x2ede2d=0x2;return;}if(/THIRD YEAR/i['test'](_0x188379)){_0x2ede2d=0x3;return;}if(/FOURTH YEAR/i['test'](_0x188379)){_0x2ede2d=0x4;return;}if(/FIFTH YEAR/i['test'](_0x188379)){_0x2ede2d=0x5;return;}if(/First Semester/i['test'](_0x188379)||/Second Semester/i['test'](_0x188379)||/Summer/i['test'](_0x188379))return;const _0x248f30=[{'sem':0x1,'offset':0x0},{'sem':0x2,'offset':0x6},{'sem':0x3,'offset':0xc}];_0x248f30['forEach'](({sem:_0x497b2f,offset:_0x194c18})=>{const _0x3499af=_0x35bf10[_0x194c18]??'',_0x518e68=_0x35bf10[_0x194c18+0x1]??'',_0xc0bfb6=_0x35bf10[_0x194c18+0x2]??'',_0x3c6d72=_0x35bf10[_0x194c18+0x3]??'',_0x13c36b=_0x35bf10[_0x194c18+0x4]??'';_0x3499af&&_0x2ede2d&&_0x4b1260['push']({'curr_id':_0x2ff54a,'program_name':_0x2f9786,'revision_no':_0x483420,'year_level':_0x2ede2d,'sem':_0x497b2f,'course_id':_0x3499af,'course_desc':_0x518e68,'total_units':_0xc0bfb6,'lec_unit':_0x3c6d72,'lab_unit':_0x13c36b});});});}}),_0x4b1260;}
5
5
 
6
- function convertToCSVFile(_0x8d38f9,_0x2a8131){return new Promise((_0x187c19,_0x475614)=>{const _0x2762b9=new FileReader();_0x2762b9['onload']=_0x4e4536=>{const _0x313871=_0x4e4536['target']?.['result'];if(!_0x313871){_0x475614(new Error('Failed\x20to\x20read\x20file'));return;}try{const _0x1903d1=_0xf8a8f8['read'](_0x313871,{'type':'array'});!_0x2a8131&&(_0x2a8131=_0x1903d1['SheetNames'][0x0]);if(!_0x2a8131){_0x475614(new Error('No\x20sheets\x20found\x20in\x20workbook'));return;}const _0x53ea44=_0x1903d1['Sheets'][_0x2a8131];if(!_0x53ea44){_0x475614(new Error('No\x20sheets\x20found\x20in\x20worksheet'));return;}const _0x107040=_0xf8a8f8['utils']['sheet_to_csv'](_0x53ea44,{'strip':!![]}),_0x191191=_0x8d38f9['name']['replace'](/\.[^/.]+$/,'.csv'),_0x1a591d=new File([_0x107040],_0x191191,{'type':'text/csv','lastModified':Date['now']()});_0x187c19(_0x1a591d);}catch(_0x2c393d){_0x475614(_0x2c393d);}},_0x2762b9['onerror']=()=>{_0x475614(new Error('File\x20reading\x20failed'));},_0x2762b9['readAsArrayBuffer'](_0x8d38f9);});}
6
+ function convertToCSVFile(_0x40e1d5,_0x3b57e5){return new Promise((_0x3b6261,_0x104370)=>{const _0x16a4bd=new FileReader();_0x16a4bd['onload']=_0x3bc5b8=>{const _0x1c7f5e=_0x3bc5b8['target']?.['result'];if(!_0x1c7f5e){_0x104370(new Error('Failed\x20to\x20read\x20file'));return;}try{const _0x3bca66=_0x2bf800['read'](_0x1c7f5e,{'type':'array'});!_0x3b57e5&&(_0x3b57e5=_0x3bca66['SheetNames'][0x0]);if(!_0x3b57e5){_0x104370(new Error('No\x20sheets\x20found\x20in\x20workbook'));return;}const _0x1abb1a=_0x3bca66['Sheets'][_0x3b57e5];if(!_0x1abb1a){_0x104370(new Error('No\x20sheets\x20found\x20in\x20worksheet'));return;}const _0x52246d=_0x2bf800['utils']['sheet_to_csv'](_0x1abb1a,{'strip':!![]}),_0x48f0b4=_0x40e1d5['name']['replace'](/\.[^/.]+$/,'.csv'),_0x5cedc5=new File([_0x52246d],_0x48f0b4,{'type':'text/csv','lastModified':Date['now']()});_0x3b6261(_0x5cedc5);}catch(_0x15c9f0){_0x104370(_0x15c9f0);}},_0x16a4bd['onerror']=()=>{_0x104370(new Error('File\x20reading\x20failed'));},_0x16a4bd['readAsArrayBuffer'](_0x40e1d5);});}
7
7
 
8
- async function uploadCurriculum(_0x39bc91,_0x4802d0){try{const _0x236d3e=await convertToCSVFile(_0x4802d0),_0x5df739=await _0x236d3e['text'](),_0x3f6fcd=parseCurriculum(_0x5df739),_0x44d780=_0x4d14f7['unparse'](_0x3f6fcd),_0x326159=new File([_0x44d780],_0x236d3e['name'],{'type':'text/csv'}),_0x3e0500=new FormData();_0x3e0500['append']('csvFile',_0x326159);const _0x436076=await fetch(_0x39bc91+'/curr-courses/upload',{'method':'POST','body':_0x3e0500});if(!_0x436076['ok']){const _0x2ad229=await _0x436076['json']();throw _0x2ad229;}return _0x436076['json']();}catch(_0x49c882){throw _0x49c882;}}
8
+ async function uploadCurriculum(_0x5f176a,_0xdb14a4){try{const _0x2552e3=await convertToCSVFile(_0xdb14a4),_0x14dbf7=await _0x2552e3['text'](),_0x428d54=parseCurriculum(_0x14dbf7),_0x199d9d=_0x11bf51['unparse'](_0x428d54),_0x3d176d=new File([_0x199d9d],_0x2552e3['name'],{'type':'text/csv'}),_0x24ba5c=new FormData();_0x24ba5c['append']('csvFile',_0x3d176d);const _0x3cc2fb=await fetch(_0x5f176a+'/curr-courses/upload',{'method':'POST','body':_0x24ba5c});if(!_0x3cc2fb['ok']){const _0x266ac3=await _0x3cc2fb['json']();throw _0x266ac3;}return _0x3cc2fb['json']();}catch(_0xbe7945){throw _0xbe7945;}}
9
9
 
10
- function parseCourseOffering(_0x35b1a1){let _0x3754c5='',_0x3d9d0b='';const _0x18ddb4=[],_0x469247=_0x4d14f7['parse'](_0x35b1a1,{'header':![],'skipEmptyLines':!![],'delimiter':','}),_0x128f88=_0x469247['data'];for(let _0x59e9f7=0x0;_0x59e9f7<Math['min'](0x5,_0x128f88['length']);_0x59e9f7++){const _0x3017b1=_0x128f88[_0x59e9f7];if(_0x3017b1&&_0x3017b1['length']>0x0){const _0xda74c0=_0x3017b1[0x0]?.['toString']()||'',_0x1c9d3d=_0xda74c0['match'](/(First|Second)\s+Sem\s+S\/Y\s+(\d{4}-\d{4})/i);if(_0x1c9d3d){_0x3754c5=_0x1c9d3d[0x1]?.['toLowerCase']()==='first'?'1':'2';if(_0x1c9d3d[0x2]){const _0x7a0eff=_0x1c9d3d[0x2]['match'](/(\d{2})(\d{2})-(\d{2})(\d{2})/);_0x7a0eff&&_0x7a0eff[0x2]&&_0x7a0eff[0x4]&&(_0x3d9d0b=_0x7a0eff[0x2]+_0x7a0eff[0x4]);}}}}let _0x47807f=-1;for(let _0x105803=0x0;_0x105803<_0x128f88['length'];_0x105803++){const _0x3e8c34=_0x128f88[_0x105803];if(_0x3e8c34&&_0x3e8c34['some'](_0x41769b=>_0x41769b?.['toString']()['toUpperCase']()['includes']('CODE'))){_0x47807f=_0x105803;break;}}if(_0x47807f===-1)throw new Error('Could\x20not\x20find\x20header\x20row\x20in\x20CSV\x20data');let _0x186cfe={'code':'','description':'','unit':0x0};for(let _0x1bc4f3=_0x47807f+0x1;_0x1bc4f3<_0x128f88['length'];_0x1bc4f3++){const _0x2baefe=_0x128f88[_0x1bc4f3];if(!_0x2baefe||_0x2baefe['length']<0x8)continue;const _0x110fae=_0x2baefe[0x1]?.['toString']()['trim']()||'',_0x57f096=_0x2baefe[0x4]?.['toString']()['trim']()||'',_0x35e21b=_0x2baefe[0x5]?.['toString']()['trim']()||'',_0x2b9b6d=_0x2baefe[0x6]?.['toString']()['trim']()||'',_0x43cd73=_0x2baefe[0x7]?.['toString']()['trim']()||'',_0x21b91f=_0x2baefe[0x3]?.['toString']()['trim']()||'';let _0x21d1f1=_0x2baefe[0x0]?.['toString']()['trim']()||'',_0x1ee6be=_0x2baefe[0x2]?.['toString']()['trim']()||'';if(!_0x110fae)continue;if(!_0x21d1f1)_0x21d1f1=_0x186cfe['code'];if(!_0x1ee6be)_0x1ee6be=_0x186cfe['description'];let _0x4c9eea=_0x186cfe['unit'];if(_0x21b91f){const _0x1d1582=_0x21b91f['match'](/(\d+)/);_0x1d1582&&_0x1d1582[0x1]&&(_0x4c9eea=parseInt(_0x1d1582[0x1],0xa));}const _0x33d067={'sem':_0x3754c5,'school_year':_0x3d9d0b,'code':_0x21d1f1,'course_no':_0x110fae,'course_desc':_0x1ee6be,'unit':_0x4c9eea,'time':_0x57f096,'days':_0x35e21b,'faculty':_0x2b9b6d,'room':_0x43cd73};_0x186cfe['code']=_0x21d1f1,_0x186cfe['description']=_0x1ee6be,_0x186cfe['unit']=_0x4c9eea,_0x18ddb4['push'](_0x33d067);}return _0x18ddb4;}
10
+ function parseCourseOffering(_0x16e338){let _0x28f84e='',_0x5c0601='';const _0x367e5d=[],_0x2276b3=_0x11bf51['parse'](_0x16e338,{'header':![],'skipEmptyLines':!![],'delimiter':','}),_0xb0d6e6=_0x2276b3['data'];for(let _0x2360e1=0x0;_0x2360e1<Math['min'](0x5,_0xb0d6e6['length']);_0x2360e1++){const _0x316b07=_0xb0d6e6[_0x2360e1];if(_0x316b07&&_0x316b07['length']>0x0){const _0x707b9b=_0x316b07[0x0]?.['toString']()||'',_0xdb8988=_0x707b9b['match'](/(First|Second)\s+Sem\s+S\/Y\s+(\d{4}-\d{4})/i);if(_0xdb8988){_0x28f84e=_0xdb8988[0x1]?.['toLowerCase']()==='first'?'1':'2';if(_0xdb8988[0x2]){const _0xaf154=_0xdb8988[0x2]['match'](/(\d{2})(\d{2})-(\d{2})(\d{2})/);_0xaf154&&_0xaf154[0x2]&&_0xaf154[0x4]&&(_0x5c0601=_0xaf154[0x2]+_0xaf154[0x4]);}}}}let _0x564091=-1;for(let _0x52427f=0x0;_0x52427f<_0xb0d6e6['length'];_0x52427f++){const _0x38f8e0=_0xb0d6e6[_0x52427f];if(_0x38f8e0&&_0x38f8e0['some'](_0x3a4318=>_0x3a4318?.['toString']()['toUpperCase']()['includes']('CODE'))){_0x564091=_0x52427f;break;}}if(_0x564091===-1)throw new Error('Could\x20not\x20find\x20header\x20row\x20in\x20CSV\x20data');let _0x26bc4f={'code':'','description':'','unit':0x0};for(let _0x56ff93=_0x564091+0x1;_0x56ff93<_0xb0d6e6['length'];_0x56ff93++){const _0x3d4df7=_0xb0d6e6[_0x56ff93];if(!_0x3d4df7||_0x3d4df7['length']<0x8)continue;const _0x376df8=_0x3d4df7[0x1]?.['toString']()['trim']()||'',_0x24c990=_0x3d4df7[0x4]?.['toString']()['trim']()||'',_0x5968e6=_0x3d4df7[0x5]?.['toString']()['trim']()||'',_0x25cfa1=_0x3d4df7[0x6]?.['toString']()['trim']()||'',_0x27c4ef=_0x3d4df7[0x7]?.['toString']()['trim']()||'',_0x479dfa=_0x3d4df7[0x3]?.['toString']()['trim']()||'';let _0x3d880f=_0x3d4df7[0x0]?.['toString']()['trim']()||'',_0x3f42f5=_0x3d4df7[0x2]?.['toString']()['trim']()||'';if(!_0x376df8)continue;if(!_0x3d880f)_0x3d880f=_0x26bc4f['code'];if(!_0x3f42f5)_0x3f42f5=_0x26bc4f['description'];let _0x5dc676=_0x26bc4f['unit'];if(_0x479dfa){const _0x59ad76=_0x479dfa['match'](/(\d+)/);_0x59ad76&&_0x59ad76[0x1]&&(_0x5dc676=parseInt(_0x59ad76[0x1],0xa));}const _0x1d0ac6={'sem':_0x28f84e,'school_year':_0x5c0601,'code':_0x3d880f,'course_no':_0x376df8,'course_desc':_0x3f42f5,'unit':_0x5dc676,'time':_0x24c990,'days':_0x5968e6,'faculty':_0x25cfa1,'room':_0x27c4ef};_0x26bc4f['code']=_0x3d880f,_0x26bc4f['description']=_0x3f42f5,_0x26bc4f['unit']=_0x5dc676,_0x367e5d['push'](_0x1d0ac6);}return _0x367e5d;}
11
11
 
12
- async function uploadCourseOffering(_0x5da0be,_0x21b745){try{const _0x5ad5a1=await convertToCSVFile(_0x21b745),_0x30d4a2=await _0x5ad5a1['text'](),_0x1e3041=parseCourseOffering(_0x30d4a2),_0x45bb43=_0x4d14f7['unparse'](_0x1e3041),_0x4a64c6=new File([_0x45bb43],_0x5ad5a1['name'],{'type':'text/csv'}),_0x453d15=new FormData();_0x453d15['append']('csvFile',_0x4a64c6);const _0x419edc=await fetch(_0x5da0be+'/course-offerings/upload',{'method':'POST','body':_0x453d15});if(!_0x419edc['ok']){const _0x349164=await _0x419edc['json']();throw _0x349164;}return _0x419edc['json']();}catch(_0x255614){throw _0x255614;}}
12
+ async function uploadCourseOffering(_0x15538e,_0x2c4117){try{const _0x195356=await convertToCSVFile(_0x2c4117),_0x3ac2f3=await _0x195356['text'](),_0x335929=parseCourseOffering(_0x3ac2f3),_0x19518e=_0x11bf51['unparse'](_0x335929),_0x18fd6e=new File([_0x19518e],_0x195356['name'],{'type':'text/csv'}),_0x4dbc4c=new FormData();_0x4dbc4c['append']('csvFile',_0x18fd6e);const _0x4c97fd=await fetch(_0x15538e+'/course-offerings/upload',{'method':'POST','body':_0x4dbc4c});if(!_0x4c97fd['ok']){const _0x522acf=await _0x4c97fd['json']();throw _0x522acf;}return _0x4c97fd['json']();}catch(_0x330e43){throw _0x330e43;}}
13
13
 
14
- function performaceTarget(_0x1e39d4){if(!_0x1e39d4)return {'performance_target':null,'passing_score':null};const _0x3a5b66=_0x1e39d4['match'](/\d+/g);return {'performance_target':_0x3a5b66?.[0x0]?parseInt(_0x3a5b66[0x0],0xa):null,'passing_score':_0x3a5b66?.[0x1]?parseInt(_0x3a5b66[0x1],0xa):null};}
14
+ function performaceTarget(_0x138369){if(!_0x138369)return {'performance_target':null,'passing_score':null};const _0x384407=_0x138369['match'](/\d+/g);return {'performance_target':_0x384407?.[0x0]?parseInt(_0x384407[0x0],0xa):null,'passing_score':_0x384407?.[0x1]?parseInt(_0x384407[0x1],0xa):null};}
15
15
 
16
- const HEADERS$1={'co':['course\x20outcome','co\x20statement','outcome\x20statement'],'ilo':['intended\x20learning','ilo','learning\x20outcome'],'assessTool':['assessment\x20tool','assessment\x20method','tool'],'perfTarget':['performance\x20target','target','passing']};function getCoaepHeader(_0x3629a4){let _0x1ea373={'headerRowIndex':-1,'coIdx':-1,'iloIdx':-1,'assessToolIdx':-1,'perfTargetIdx':-1};for(let _0x4eb6e3=0x0;_0x4eb6e3<Math['min'](_0x3629a4['length'],0x14);_0x4eb6e3++){const _0x19da62=(_0x3629a4[_0x4eb6e3]??[])['map'](_0x26db22=>_0x26db22['toLowerCase']()['trim']()),_0x44bf26=_0x19da62['findIndex'](_0x2f0a37=>HEADERS$1['co']['some'](_0x4d85ea=>_0x2f0a37['includes'](_0x4d85ea))),_0x22eede=_0x19da62['findIndex'](_0x1358ac=>HEADERS$1['ilo']['some'](_0x5ad7f6=>_0x1358ac['includes'](_0x5ad7f6))),_0x199d8e=_0x19da62['findIndex'](_0x1ce8cc=>HEADERS$1['assessTool']['some'](_0x59e704=>_0x1ce8cc['includes'](_0x59e704))),_0x357eca=_0x19da62['findIndex'](_0x5c220e=>HEADERS$1['perfTarget']['some'](_0x4edebf=>_0x5c220e['includes'](_0x4edebf))),_0x46d030=[_0x44bf26,_0x22eede,_0x199d8e,_0x357eca]['filter'](_0x1379cc=>_0x1379cc!==-1)['length'];if(_0x46d030>=0x3){_0x1ea373={'headerRowIndex':_0x4eb6e3,'coIdx':_0x44bf26,'iloIdx':_0x22eede,'assessToolIdx':_0x199d8e,'perfTargetIdx':_0x357eca};break;}}return _0x1ea373;}
16
+ const HEADERS$1={'co':['course\x20outcome','co\x20statement','outcome\x20statement'],'ilo':['intended\x20learning','ilo','learning\x20outcome'],'assessTool':['assessment\x20tool','assessment\x20method','tool'],'perfTarget':['performance\x20target','target','passing']};function getCoaepHeader(_0x238a4e){let _0x32c332={'headerRowIndex':-1,'coIdx':-1,'iloIdx':-1,'assessToolIdx':-1,'perfTargetIdx':-1};for(let _0x10e8db=0x0;_0x10e8db<Math['min'](_0x238a4e['length'],0x14);_0x10e8db++){const _0x59b197=(_0x238a4e[_0x10e8db]??[])['map'](_0x23a020=>_0x23a020['toLowerCase']()['trim']()),_0x1f5796=_0x59b197['findIndex'](_0x4ac4ce=>HEADERS$1['co']['some'](_0xd1264=>_0x4ac4ce['includes'](_0xd1264))),_0x1fa733=_0x59b197['findIndex'](_0x3c1139=>HEADERS$1['ilo']['some'](_0x47be58=>_0x3c1139['includes'](_0x47be58))),_0x559a80=_0x59b197['findIndex'](_0xe8f955=>HEADERS$1['assessTool']['some'](_0xe078d2=>_0xe8f955['includes'](_0xe078d2))),_0x103b60=_0x59b197['findIndex'](_0x243bf5=>HEADERS$1['perfTarget']['some'](_0x539972=>_0x243bf5['includes'](_0x539972))),_0x4bf42b=[_0x1f5796,_0x1fa733,_0x559a80,_0x103b60]['filter'](_0x1048f0=>_0x1048f0!==-1)['length'];if(_0x4bf42b>=0x3){_0x32c332={'headerRowIndex':_0x10e8db,'coIdx':_0x1f5796,'iloIdx':_0x1fa733,'assessToolIdx':_0x559a80,'perfTargetIdx':_0x103b60};break;}}return _0x32c332;}
17
17
 
18
- function extractFromObjective(_0x4d70d4){const _0x192f21={'cognitive_level':null,'taxonomy_level':null,'verb':null},_0x22d32d=/(?:\(([IED])\))?\s*(\w+)\s*:\s*(\w+)/,_0x66f012=_0x4d70d4['match'](_0x22d32d);if(_0x66f012){if(_0x66f012[0x1])_0x192f21['cognitive_level']=_0x66f012[0x1];if(_0x66f012[0x2])_0x192f21['taxonomy_level']=_0x66f012[0x2]['toLowerCase']();if(_0x66f012[0x3])_0x192f21['verb']=_0x66f012[0x3]['toLowerCase']();}return _0x192f21;}
18
+ function extractFromObjective(_0x5d2559){const _0x584975={'cognitive_level':null,'taxonomy_level':null,'verb':null},_0x5d34b1=/(?:\(([IED])\))?\s*(\w+)\s*:\s*(.*)/i,_0x43740d=_0x5d2559['match'](_0x5d34b1);if(_0x43740d){if(_0x43740d[0x1])_0x584975['cognitive_level']=_0x43740d[0x1];if(_0x43740d[0x2])_0x584975['taxonomy_level']=_0x43740d[0x2]['toLowerCase']();const _0x938c42=_0x43740d[0x3]?.['trim']();if(_0x938c42){const _0x3e9d2a=/(?:shall|will)\s+(\w+)/i,_0x142352=_0x938c42['match'](_0x3e9d2a);_0x142352?_0x584975['verb']=_0x142352[0x1]['toLowerCase']():_0x584975['verb']=_0x938c42['split'](/\s+/)[0x0]['toLowerCase']();}}return _0x584975;}
19
19
 
20
- function parseCOAEP(_0x241623){const _0x2429c0=_0x4d14f7['parse'](_0x241623,{'skipEmptyLines':![]})['data'],_0x5edf20={'COAEP':{'faculty':null,'course':null,'sy':null,'semester':null,'co':[]}},{headerRowIndex:_0x45ce85,coIdx:_0x3843b2,iloIdx:_0x56157e,assessToolIdx:_0x15cf97,perfTargetIdx:_0x3a6116}=getCoaepHeader(_0x2429c0);if(_0x45ce85===-1)return {'error':'Could\x20not\x20auto-detect\x20header\x20row.','message':'Please\x20ensure\x20the\x20CSV\x20file\x20is\x20in\x20the\x20correct\x20COAEP\x20format.'};_0x2429c0['forEach'](_0x29017d=>{const _0x11ccae=_0x29017d['indexOf']('Name\x20of\x20Faculty:'),_0x46f171=_0x29017d['indexOf']('School\x20Year'),_0x4d7119=_0x29017d['indexOf']('Course:'),_0x25ab83=_0x29017d['indexOf']('Semester');_0x11ccae!==-1&&(_0x5edf20['COAEP']['faculty']=_0x29017d[_0x11ccae+0x1]?.['trim']()||_0x5edf20['COAEP']['faculty']);_0x46f171!==-1&&(_0x5edf20['COAEP']['sy']=_0x29017d[_0x46f171+0x1]?.['trim']()||_0x5edf20['COAEP']['sy']);_0x4d7119!==-1&&(_0x5edf20['COAEP']['course']=_0x29017d[_0x4d7119+0x1]?.['trim']()||_0x5edf20['COAEP']['course']);if(_0x25ab83!==-1){const _0x320f49=_0x29017d[_0x25ab83+0x1]?.['trim']()||'',_0x30a4e3=_0x320f49['match'](/\d+/)?.[0x0];_0x5edf20['COAEP']['semester']=_0x30a4e3?parseInt(_0x30a4e3,0xa):_0x5edf20['COAEP']['semester'];}});let _0x421f6d=null;return _0x2429c0['forEach']((_0x4990ce,_0x1316e4)=>{if(_0x1316e4<=_0x45ce85)return;let _0x58a345=_0x4990ce[_0x3843b2-0x1]?.['trim']()||'',_0x25ecad=_0x4990ce[_0x3843b2]?.['trim']()||'';/^\d+$/['test'](_0x4990ce[_0x3843b2]?.['trim']()||'')&&(_0x58a345=_0x4990ce[_0x3843b2]?.['trim']()||'',_0x25ecad=_0x4990ce[_0x3843b2+0x1]?.['trim']()||'');const _0x128f28=_0x4990ce[_0x56157e]?.['trim']()||'',_0x206bb1=_0x4990ce[_0x15cf97]?.['replace'](/^ILO\d+[:.]?\s*/,'')['trim']()||'',_0x5e3ec0=_0x4990ce[_0x3a6116]?.['replace'](/\s+/g,'\x20')['trim']()||'';if(_0x58a345&&/^\d+$/['test'](_0x58a345)){_0x421f6d&&_0x5edf20['COAEP']['co']['push'](_0x421f6d);const _0x3cdd37=_0x25ecad,{verb:_0xb645c9,cognitive_level:_0x593222,taxonomy_level:_0x31b547}=extractFromObjective(_0x3cdd37);_0x421f6d={'statement':_0x3cdd37,'ilo':[],'verb':_0xb645c9,'cognitive_level':_0x593222,'taxonomy_level':_0x31b547};}if(_0x421f6d&&_0x128f28&&_0x5e3ec0){const _0x4b9b77=_0x128f28['replace'](/^ILO\d+[:.]?\s*/,'');if(_0x4b9b77['match'](/^(Revision|Prepared|Date|Approved|Effectivity|Page)/i)||_0x4b9b77['length']<0xa)return;let _0x545c23=_0x206bb1;if(!_0x545c23&&_0x4b9b77['includes'](':')){const _0xa194a4=_0x4b9b77['match'](/^ILO\d+:\s*(.+?)(?:\s*\(|$)/);_0xa194a4&&(_0x545c23=_0xa194a4[0x1]?.['trim']()||'');}const {performance_target:_0x3cdf94,passing_score:_0xf8f64c}=performaceTarget(_0x5e3ec0),{verb:_0x2a97ab,cognitive_level:_0x1b971,taxonomy_level:_0x1553ff}=extractFromObjective(_0x4b9b77);_0x421f6d['ilo']['push']({'statement':_0x4b9b77,'assessment_tool':_0x545c23,'performance_target':_0x3cdf94,'passing_score':_0xf8f64c,'verb':_0x2a97ab,'cognitive_level':_0x1b971,'taxonomy_level':_0x1553ff});}}),_0x421f6d&&_0x5edf20['COAEP']['co']['push'](_0x421f6d),_0x5edf20;}
20
+ function parseCOAEP(_0x1b0146){const _0x5aee28=_0x11bf51['parse'](_0x1b0146,{'skipEmptyLines':![]})['data'],_0xa452bc={'COAEP':{'faculty':null,'course':null,'sy':null,'semester':null,'co':[]}},{headerRowIndex:_0x199ed8,coIdx:_0x517daa,iloIdx:_0x3bc43e,assessToolIdx:_0x48c7f9,perfTargetIdx:_0x26547f}=getCoaepHeader(_0x5aee28);if(_0x199ed8===-1)return {'error':'Could\x20not\x20auto-detect\x20header\x20row.','message':'Please\x20ensure\x20the\x20CSV\x20file\x20is\x20in\x20the\x20correct\x20COAEP\x20format.'};_0x5aee28['forEach'](_0x385660=>{const _0x1960b0=_0x385660['indexOf']('Name\x20of\x20Faculty:'),_0x6cfba1=_0x385660['indexOf']('School\x20Year'),_0x306f05=_0x385660['indexOf']('Course:'),_0x2e36ae=_0x385660['indexOf']('Semester');_0x1960b0!==-1&&(_0xa452bc['COAEP']['faculty']=_0x385660[_0x1960b0+0x1]?.['trim']()||_0xa452bc['COAEP']['faculty']);_0x6cfba1!==-1&&(_0xa452bc['COAEP']['sy']=_0x385660[_0x6cfba1+0x1]?.['trim']()||_0xa452bc['COAEP']['sy']);_0x306f05!==-1&&(_0xa452bc['COAEP']['course']=_0x385660[_0x306f05+0x1]?.['trim']()||_0xa452bc['COAEP']['course']);if(_0x2e36ae!==-1){const _0x39dfbb=_0x385660[_0x2e36ae+0x1]?.['trim']()||'',_0x5e588f=_0x39dfbb['match'](/\d+/)?.[0x0];_0xa452bc['COAEP']['semester']=_0x5e588f?parseInt(_0x5e588f,0xa):_0xa452bc['COAEP']['semester'];}});let _0x539b9f=null;return _0x5aee28['forEach']((_0x259400,_0x492656)=>{if(_0x492656<=_0x199ed8)return;let _0x570d06=_0x259400[_0x517daa-0x1]?.['trim']()||'',_0x147c10=_0x259400[_0x517daa]?.['trim']()||'';/^\d+$/['test'](_0x259400[_0x517daa]?.['trim']()||'')&&(_0x570d06=_0x259400[_0x517daa]?.['trim']()||'',_0x147c10=_0x259400[_0x517daa+0x1]?.['trim']()||'');const _0x5b0c98=_0x259400[_0x3bc43e]?.['trim']()||'',_0x35e56b=_0x259400[_0x48c7f9]?.['replace'](/^ILO\d+[:.]?\s*/,'')['trim']()||'',_0x3466ef=_0x259400[_0x26547f]?.['replace'](/\s+/g,'\x20')['trim']()||'';if(_0x570d06&&/^\d+$/['test'](_0x570d06)){_0x539b9f&&_0xa452bc['COAEP']['co']['push'](_0x539b9f);const _0x4c9273=_0x147c10,{verb:_0x1e8074,cognitive_level:_0x801e8f,taxonomy_level:_0x28721a}=extractFromObjective(_0x4c9273);if(!_0x1e8074)return {'error':'Could\x20not\x20find\x20verb.','message':'Please\x20ensure\x20the\x20Course\x20Outcome\x20#'+_0x570d06+'\x20is\x20in\x20the\x20correct\x20format.'};_0x539b9f={'statement':_0x4c9273,'ilo':[],'verb':_0x1e8074,'cognitive_level':_0x801e8f,'taxonomy_level':_0x28721a};}if(_0x539b9f&&_0x5b0c98&&_0x3466ef){const _0x604a4c=_0x5b0c98['replace'](/^ILO\d+[:.]?\s*/,'');if(_0x604a4c['match'](/^(Revision|Prepared|Date|Approved|Effectivity|Page)/i)||_0x604a4c['length']<0xa)return;let _0x1ebd33=_0x35e56b;if(!_0x1ebd33&&_0x604a4c['includes'](':')){const _0x3609a6=_0x604a4c['match'](/^ILO\d+:\s*(.+?)(?:\s*\(|$)/);_0x3609a6&&(_0x1ebd33=_0x3609a6[0x1]?.['trim']()||'');}const {performance_target:_0x2fdfc4,passing_score:_0x205e6f}=performaceTarget(_0x3466ef),{verb:_0xfb6f6e,cognitive_level:_0x414ed4,taxonomy_level:_0x414992}=extractFromObjective(_0x604a4c);_0x539b9f['ilo']['push']({'statement':_0x604a4c,'assessment_tool':_0x1ebd33,'performance_target':_0x2fdfc4,'passing_score':_0x205e6f,'verb':_0xfb6f6e,'cognitive_level':_0x414ed4,'taxonomy_level':_0x414992});}}),_0x539b9f&&_0xa452bc['COAEP']['co']['push'](_0x539b9f),_0xa452bc;}
21
21
 
22
- async function uploadCOAEP(_0x32444a,_0x46142a,_0x43f8aa){try{const _0x64b5c9=await convertToCSVFile(_0x46142a),_0x188854=await _0x64b5c9['text'](),_0x23ff44=parseCOAEP(_0x188854);console['log'](_0x23ff44);const _0x30ed76=await fetch(_0x32444a+'/coaeps/upload?course_id='+_0x43f8aa,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x23ff44)});if(!_0x30ed76['ok']){const _0x366405=await _0x30ed76['json']();throw _0x366405;}return _0x30ed76['json']();}catch(_0x41682b){throw _0x41682b;}}
22
+ async function uploadCOAEP(_0x57e703,_0x243ae5,_0x2c4cb9){try{const _0x4e984=await convertToCSVFile(_0x243ae5),_0x20c86f=await _0x4e984['text'](),_0x3ac8a2=parseCOAEP(_0x20c86f);console['log'](_0x3ac8a2);const _0x1ffd13=await fetch(_0x57e703+'/coaeps/upload?course_id='+_0x2c4cb9,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x3ac8a2)});if(!_0x1ffd13['ok']){const _0x10b9fa=await _0x1ffd13['json']();throw _0x10b9fa;}return _0x1ffd13['json']();}catch(_0x6a6f15){throw _0x6a6f15;}}
23
23
 
24
- async function uploadEnrolledStudent(_0x54bc4e,_0x330aec){try{const _0x555a8a=await convertToCSVFile(_0x330aec),_0x258156=new FormData();_0x258156['append']('csvFile',_0x555a8a);const _0x6ef890=await fetch(_0x54bc4e+'/enrolled-students/upload',{'method':'POST','body':_0x258156});if(!_0x6ef890['ok']){const _0x51b2df=await _0x6ef890['json']();throw _0x51b2df;}return _0x6ef890['json']();}catch(_0x4dd94c){throw _0x4dd94c;}}
24
+ async function uploadEnrolledStudent(_0x4233b1,_0x80dc99){try{const _0x1b223b=await convertToCSVFile(_0x80dc99),_0x13943b=new FormData();_0x13943b['append']('csvFile',_0x1b223b);const _0x182985=await fetch(_0x4233b1+'/enrolled-students/upload',{'method':'POST','body':_0x13943b});if(!_0x182985['ok']){const _0xb5ab43=await _0x182985['json']();throw _0xb5ab43;}return _0x182985['json']();}catch(_0x17db4b){throw _0x17db4b;}}
25
25
 
26
- function parseClassList(_0x5bf874){const _0x2d8a02=_0x4d14f7['parse'](_0x5bf874,{'skipEmptyLines':!![]})['data'];let _0x2f3000='',_0x2e8ef2='',_0x346d7c='';const _0x38db13=[];return _0x2d8a02['forEach'](_0x10750e=>{const _0x133284=_0x10750e['map'](_0x9aa2bf=>(_0x9aa2bf??'')['toString']()['trim']()),_0x81f1e=_0x133284[0x0]??'';if(_0x81f1e['startsWith']('Course\x20No:')){const _0x2e5f93=_0x81f1e['replace']('Course\x20No:','')['trim'](),_0x128caf=_0x2e5f93['split'](/\s+/);_0x346d7c=_0x128caf[0x0]??'';const [_0x1f398c,_0x35a26d]=(_0x128caf[0x1]??'')['split']('-');_0x2e8ef2=_0x1f398c??'';const _0x5da15a=(_0x35a26d??'')['match'](/[a-z]$/);_0x2f3000=_0x5da15a?_0x5da15a[0x0]:'';}if(/^\d+$/['test'](_0x81f1e)){const _0x58f372=_0x133284[0x2]??'';_0x38db13['push']({'subj_code':_0x346d7c,'student_no':_0x58f372,'course_id':_0x2e8ef2,'section':_0x2f3000});}}),{'enrolledCourses':_0x38db13};}
26
+ function parseClassList(_0x52c7e1){const _0x1a7493=_0x11bf51['parse'](_0x52c7e1,{'skipEmptyLines':!![]})['data'];let _0x39f3a9='',_0x2ac93='',_0x2f6297='';const _0x5b4e4a=[];return _0x1a7493['forEach'](_0xc58f0=>{const _0xc2a20f=_0xc58f0['map'](_0x4a8a53=>(_0x4a8a53??'')['toString']()['trim']()),_0x326f7c=_0xc2a20f[0x0]??'';if(_0x326f7c['startsWith']('Course\x20No:')){const _0x9a0c64=_0x326f7c['replace']('Course\x20No:','')['trim'](),_0x4b1e53=_0x9a0c64['split'](/\s+/);_0x2f6297=_0x4b1e53[0x0]??'';const [_0x391d07,_0xd0de0b]=(_0x4b1e53[0x1]??'')['split']('-');_0x2ac93=_0x391d07??'';const _0x5e17e3=(_0xd0de0b??'')['match'](/[a-z]$/);_0x39f3a9=_0x5e17e3?_0x5e17e3[0x0]:'';}if(/^\d+$/['test'](_0x326f7c)){const _0x12af99=_0xc2a20f[0x2]??'';_0x5b4e4a['push']({'subj_code':_0x2f6297,'student_no':_0x12af99,'course_id':_0x2ac93,'section':_0x39f3a9});}}),{'enrolledCourses':_0x5b4e4a};}
27
27
 
28
- async function uploadClassList(_0x65df4e,_0x5981e0,_0x5604d8,_0x1ff4cc){try{const _0x40b4c5=await convertToCSVFile(_0x5981e0),_0x3c17b6=await _0x40b4c5['text'](),_0x9b61f1=parseClassList(_0x3c17b6),_0x4053c9='subj_code='+_0x5604d8+'&period_id='+_0x1ff4cc,_0x5843f7=await fetch(_0x65df4e+'/enrolled-courses/upload?'+_0x4053c9,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x9b61f1)});if(!_0x5843f7['ok']){const _0x326d07=await _0x5843f7['json']();throw _0x326d07;}return _0x5843f7['json']();}catch(_0x245f61){throw _0x245f61;}}
28
+ async function uploadClassList(_0x1bc767,_0x4d05c1,_0x419fa9,_0x8cf560){try{const _0x55f736=await convertToCSVFile(_0x4d05c1),_0x1bbd20=await _0x55f736['text'](),_0x2bad74=parseClassList(_0x1bbd20),_0x53db77='subj_code='+_0x419fa9+'&period_id='+_0x8cf560,_0x1a08f3=await fetch(_0x1bc767+'/enrolled-courses/upload?'+_0x53db77,{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2bad74)});if(!_0x1a08f3['ok']){const _0x3e657b=await _0x1a08f3['json']();throw _0x3e657b;}return _0x1a08f3['json']();}catch(_0x52e03a){throw _0x52e03a;}}
29
29
 
30
- function parseAssessmentCsv(_0x446725){const {data:_0x36a5dd}=_0x4d14f7['parse'](_0x446725,{'skipEmptyLines':!![]}),_0x2cadcb=_0x36a5dd['filter'](_0x219ed1=>_0x219ed1['length']>0x0),_0x58397e=_0x2cadcb['find'](_0x23893d=>_0x23893d['some'](_0x1c619b=>_0x1c619b?.['includes']('Faculty'))),_0x819cc=_0x58397e?_0x58397e['findIndex'](_0xcf18db=>_0xcf18db?.['includes']('Faculty')):-1,_0x136c1e=_0x819cc!==-1&&_0x58397e?_0x58397e[_0x819cc+0x2]?.['replace'](/"/g,'')['trim']()??'':'',_0x31fd30=_0x2cadcb['find'](_0x5b6fd7=>_0x5b6fd7['some'](_0x1286f0=>_0x1286f0?.['includes']('Semester'))),_0x38f9d5=_0x31fd30?_0x31fd30['findIndex'](_0x6435c6=>_0x6435c6?.['includes']('Semester')):-1,_0x5295ac=_0x38f9d5!==-1&&_0x31fd30?_0x31fd30[_0x38f9d5+0x2]?.['trim']()??'':'',_0x9b42bc=_0x5295ac['includes']('1st')?0x1:_0x5295ac['includes']('2nd')?0x2:0x0,_0x565f9a=_0x2cadcb['find'](_0x23e072=>_0x23e072['some'](_0x5ca548=>_0x5ca548?.['includes']('Course\x20&\x20Sec'))),_0x1132d0=_0x565f9a?_0x565f9a['findIndex'](_0x26bdc9=>_0x26bdc9?.['includes']('Course\x20&\x20Sec')):-1,_0x4c8a65=_0x1132d0!==-1&&_0x565f9a?_0x565f9a[_0x1132d0+0x2]?.['trim']()??'':'';let _0x5cad55='',_0x476578='';if(_0x4c8a65){const _0x3c6844=_0x4c8a65['match'](/^([A-Za-z0-9]+)-?([A-Za-z]+)?/);_0x3c6844&&(_0x5cad55=_0x3c6844[0x1]??'',_0x3c6844[0x2]&&(_0x476578=_0x3c6844[0x2]['replace'](/^OC/i,'')));}const _0x52b818=_0x2cadcb['find'](_0x12ad68=>_0x12ad68['some'](_0x2fb100=>_0x2fb100?.['includes']('School\x20Year'))),_0x475a80=_0x52b818?_0x52b818['findIndex'](_0x44e632=>_0x44e632?.['includes']('School\x20Year')):-1,_0x25e41c=_0x475a80!==-1&&_0x52b818?_0x52b818[_0x475a80+0x2]?.['trim']()??'':'';let _0x23462a=0x0;if(_0x25e41c){const _0x437141=_0x25e41c['match'](/(\d{4})-(\d{4})/);if(_0x437141){const _0x5030ab=(_0x437141[0x1]??'')['slice'](0x2),_0x3ef955=(_0x437141[0x2]??'')['slice'](0x2);_0x23462a=parseInt(_0x5030ab+_0x3ef955,0xa);}}const _0x30f35b={'faculty':_0x136c1e,'course':_0x5cad55,'section':_0x476578,'semester':_0x9b42bc,'sy':_0x23462a},_0x5c0733=_0x2cadcb['findIndex'](_0x1a1eb4=>_0x1a1eb4['some'](_0x211621=>_0x211621?.['trim']()==='CO\x20#'));if(_0x5c0733===-1)throw new Error('CO\x20header\x20row\x20not\x20found\x20in\x20CSV');const _0x59c01f=_0x2cadcb[_0x5c0733+0x1];if(!_0x59c01f)throw new Error('ILO\x20header\x20row\x20not\x20found\x20in\x20CSV');const _0x50e9dd={};let _0x16ddf5=0x1,_0x124f11=0x1;for(let _0x4e01e8=0x3;_0x4e01e8<_0x59c01f['length'];_0x4e01e8++){const _0x231b80=_0x59c01f[_0x4e01e8];if(!_0x231b80)continue;const _0xb43c93='co'+_0x16ddf5;if(!_0x50e9dd[_0xb43c93])_0x50e9dd[_0xb43c93]=[];_0x50e9dd[_0xb43c93]['push']('ilo'+_0x124f11),_0x124f11++,_0x124f11>0x3&&(_0x16ddf5++,_0x124f11=0x1);}const _0x471ee7=_0x2cadcb['findIndex'](_0x108ed7=>_0x108ed7['includes']('Name\x20of\x20Students'));if(_0x471ee7===-1)throw new Error('Student\x20header\x20row\x20not\x20found\x20in\x20CSV');const _0x59ba6b=_0x2cadcb[_0x471ee7];if(!_0x59ba6b)throw new Error('Student\x20header\x20row\x20is\x20missing');const _0xdc1ff8=_0x59ba6b['findIndex'](_0x4971f7=>_0x4971f7?.['includes']('Name\x20of\x20Students'));if(_0xdc1ff8===-1)throw new Error('Name\x20of\x20Students\x20column\x20not\x20found\x20in\x20CSV');const _0xbaf48e=_0xdc1ff8+0x2,_0x236d29=[];for(let _0x419c70=_0x471ee7+0x1;_0x419c70<_0x2cadcb['length'];_0x419c70++){const _0xe85f64=_0x2cadcb[_0x419c70];if(!_0xe85f64)continue;if(_0xe85f64['some'](_0xeb7ecd=>_0xeb7ecd?.['toUpperCase']()['includes']('TOTAL\x20STUDENTS')||_0xeb7ecd?.['toUpperCase']()['includes']('ACHIEVED\x20THE\x20MINIMUM')||_0xeb7ecd?.['toUpperCase']()['includes']('INACTIVE')||_0xeb7ecd?.['toUpperCase']()['includes']('AVERAGE')))continue;if(!_0xe85f64[_0xdc1ff8])continue;const _0x1afbbe=_0xe85f64[_0xdc1ff8]['replace'](/"/g,'')['trim'](),_0x209bb8=_0xe85f64['slice'](_0xbaf48e)['map'](_0x4752a9=>_0x4752a9===null?null:!isNaN(Number(_0x4752a9))?parseFloat(_0x4752a9):0x0);let _0x500792=0x0;const _0x31774d={};Object['entries'](_0x50e9dd)['forEach'](([_0x9675df,_0x19cbb1])=>{const _0x5a11e2={};_0x19cbb1['forEach'](_0x257766=>{_0x5a11e2[_0x257766]=_0x209bb8[_0x500792]??0x0,_0x500792++;}),_0x31774d[_0x9675df]={'transmuted_score':_0x5a11e2};}),_0x236d29['push']({'student_name':_0x1afbbe,'coaep':_0x31774d});}const _0xf840a0=_0x2cadcb['find'](_0x1de6b2=>_0x1de6b2['some'](_0x3691da=>_0x3691da?.['includes']('ACHIEVED\x20THE\x20MINIMUM'))),_0x6f1f6c=_0x2cadcb['find'](_0x401d70=>_0x401d70['some'](_0x4c132f=>_0x4c132f?.['includes']('AVERAGE'))),_0x2d4efc=_0xf840a0?_0xf840a0['slice'](_0xbaf48e)['map'](_0x599f2a=>_0x599f2a&&!isNaN(Number(_0x599f2a))?parseInt(_0x599f2a):0x0):[],_0x475bd0=_0x6f1f6c?_0x6f1f6c['slice'](_0xbaf48e)['map'](_0x4cd253=>_0x4cd253&&_0x4cd253!=='#DIV/0!'&&!isNaN(Number(_0x4cd253))?parseInt(_0x4cd253):0x0):[],_0x414367={};let _0x4c358e=0x0;return Object['entries'](_0x50e9dd)['forEach'](([_0x1892c2,_0x5c7965])=>{if(!_0x414367[_0x1892c2])_0x414367[_0x1892c2]={};_0x5c7965['forEach'](_0x1993f6=>{_0x414367[_0x1892c2][_0x1993f6]={'achievedMinimum':_0x2d4efc[_0x4c358e]??0x0,'average':_0x475bd0[_0x4c358e]??0x0},_0x4c358e++;});}),{'assessmentData':{'classAssignment':_0x30f35b,'student':_0x236d29,'total':_0x414367}};}
30
+ function parseAssessmentCsv(_0x271768){const {data:_0x4351af}=_0x11bf51['parse'](_0x271768,{'skipEmptyLines':!![]}),_0x4913f3=_0x4351af['filter'](_0xb0ffec=>_0xb0ffec['length']>0x0),_0x4344d3=_0x4913f3['find'](_0x9b2629=>_0x9b2629['some'](_0x4e7f81=>_0x4e7f81?.['includes']('Faculty'))),_0x130cba=_0x4344d3?_0x4344d3['findIndex'](_0x2a6b6d=>_0x2a6b6d?.['includes']('Faculty')):-1,_0x207a85=_0x130cba!==-1&&_0x4344d3?_0x4344d3[_0x130cba+0x2]?.['replace'](/"/g,'')['trim']()??'':'',_0x4cebe2=_0x4913f3['find'](_0x148ebd=>_0x148ebd['some'](_0x56e009=>_0x56e009?.['includes']('Semester'))),_0x24dfd2=_0x4cebe2?_0x4cebe2['findIndex'](_0x46b202=>_0x46b202?.['includes']('Semester')):-1,_0x368df8=_0x24dfd2!==-1&&_0x4cebe2?_0x4cebe2[_0x24dfd2+0x2]?.['trim']()??'':'',_0xf453d3=_0x368df8['includes']('1st')?0x1:_0x368df8['includes']('2nd')?0x2:0x0,_0x2b13ea=_0x4913f3['find'](_0x56ff90=>_0x56ff90['some'](_0x5429f2=>_0x5429f2?.['includes']('Course\x20&\x20Sec'))),_0x468bb3=_0x2b13ea?_0x2b13ea['findIndex'](_0x560f07=>_0x560f07?.['includes']('Course\x20&\x20Sec')):-1,_0x531cb7=_0x468bb3!==-1&&_0x2b13ea?_0x2b13ea[_0x468bb3+0x2]?.['trim']()??'':'';let _0x4cb60f='',_0x267d78='';if(_0x531cb7){const _0x5072cd=_0x531cb7['match'](/^([A-Za-z0-9]+)-?([A-Za-z]+)?/);_0x5072cd&&(_0x4cb60f=_0x5072cd[0x1]??'',_0x5072cd[0x2]&&(_0x267d78=_0x5072cd[0x2]['replace'](/^OC/i,'')));}const _0x20f4ee=_0x4913f3['find'](_0xe3a57a=>_0xe3a57a['some'](_0x31f341=>_0x31f341?.['includes']('School\x20Year'))),_0x170d14=_0x20f4ee?_0x20f4ee['findIndex'](_0x4bb120=>_0x4bb120?.['includes']('School\x20Year')):-1,_0x1bd93e=_0x170d14!==-1&&_0x20f4ee?_0x20f4ee[_0x170d14+0x2]?.['trim']()??'':'';let _0x118726=0x0;if(_0x1bd93e){const _0x56233d=_0x1bd93e['match'](/(\d{4})-(\d{4})/);if(_0x56233d){const _0x4b6db7=(_0x56233d[0x1]??'')['slice'](0x2),_0x190302=(_0x56233d[0x2]??'')['slice'](0x2);_0x118726=parseInt(_0x4b6db7+_0x190302,0xa);}}const _0x39814b={'faculty':_0x207a85,'course':_0x4cb60f,'section':_0x267d78,'semester':_0xf453d3,'sy':_0x118726},_0x2f8cc7=_0x4913f3['findIndex'](_0x3c2544=>_0x3c2544['some'](_0x4ee6c9=>_0x4ee6c9?.['trim']()==='CO\x20#'));if(_0x2f8cc7===-1)throw new Error('CO\x20header\x20row\x20not\x20found\x20in\x20CSV');const _0x51b959=_0x4913f3[_0x2f8cc7+0x1];if(!_0x51b959)throw new Error('ILO\x20header\x20row\x20not\x20found\x20in\x20CSV');const _0x5467fb={};let _0xe80079=0x1,_0xa31938=0x1;for(let _0x3b787f=0x3;_0x3b787f<_0x51b959['length'];_0x3b787f++){const _0x84a2a3=_0x51b959[_0x3b787f];if(!_0x84a2a3)continue;const _0x42a0ab='co'+_0xe80079;if(!_0x5467fb[_0x42a0ab])_0x5467fb[_0x42a0ab]=[];_0x5467fb[_0x42a0ab]['push']('ilo'+_0xa31938),_0xa31938++,_0xa31938>0x3&&(_0xe80079++,_0xa31938=0x1);}const _0x51e3b3=_0x4913f3['findIndex'](_0x1611db=>_0x1611db['includes']('Name\x20of\x20Students'));if(_0x51e3b3===-1)throw new Error('Student\x20header\x20row\x20not\x20found\x20in\x20CSV');const _0x49ee2e=_0x4913f3[_0x51e3b3];if(!_0x49ee2e)throw new Error('Student\x20header\x20row\x20is\x20missing');const _0x2f5e1a=_0x49ee2e['findIndex'](_0x32798d=>_0x32798d?.['includes']('Name\x20of\x20Students'));if(_0x2f5e1a===-1)throw new Error('Name\x20of\x20Students\x20column\x20not\x20found\x20in\x20CSV');const _0x293297=_0x2f5e1a+0x2,_0x130edc=[];for(let _0x25e898=_0x51e3b3+0x1;_0x25e898<_0x4913f3['length'];_0x25e898++){const _0x25e0bc=_0x4913f3[_0x25e898];if(!_0x25e0bc)continue;if(_0x25e0bc['some'](_0x522f8e=>_0x522f8e?.['toUpperCase']()['includes']('TOTAL\x20STUDENTS')||_0x522f8e?.['toUpperCase']()['includes']('ACHIEVED\x20THE\x20MINIMUM')||_0x522f8e?.['toUpperCase']()['includes']('INACTIVE')||_0x522f8e?.['toUpperCase']()['includes']('AVERAGE')))continue;if(!_0x25e0bc[_0x2f5e1a])continue;const _0x322050=_0x25e0bc[_0x2f5e1a]['replace'](/"/g,'')['trim'](),_0x113d69=_0x25e0bc['slice'](_0x293297)['map'](_0x354daa=>_0x354daa===null?null:!isNaN(Number(_0x354daa))?parseFloat(_0x354daa):0x0);let _0x232967=0x0;const _0x4de0cd={};Object['entries'](_0x5467fb)['forEach'](([_0x4a9e06,_0x3d6641])=>{const _0x1035ea={};_0x3d6641['forEach'](_0x2dad63=>{_0x1035ea[_0x2dad63]=_0x113d69[_0x232967]??0x0,_0x232967++;}),_0x4de0cd[_0x4a9e06]={'transmuted_score':_0x1035ea};}),_0x130edc['push']({'student_name':_0x322050,'coaep':_0x4de0cd});}const _0x497fd6=_0x4913f3['find'](_0x7425bc=>_0x7425bc['some'](_0x558476=>_0x558476?.['includes']('ACHIEVED\x20THE\x20MINIMUM'))),_0x2ab50f=_0x4913f3['find'](_0x3c6cac=>_0x3c6cac['some'](_0x1790bd=>_0x1790bd?.['includes']('AVERAGE'))),_0x233cae=_0x497fd6?_0x497fd6['slice'](_0x293297)['map'](_0x3a8504=>_0x3a8504&&!isNaN(Number(_0x3a8504))?parseInt(_0x3a8504):0x0):[],_0x4ced12=_0x2ab50f?_0x2ab50f['slice'](_0x293297)['map'](_0x38a897=>_0x38a897&&_0x38a897!=='#DIV/0!'&&!isNaN(Number(_0x38a897))?parseInt(_0x38a897):0x0):[],_0x2be44a={};let _0x4ca77a=0x0;return Object['entries'](_0x5467fb)['forEach'](([_0x5ccd28,_0x25b648])=>{if(!_0x2be44a[_0x5ccd28])_0x2be44a[_0x5ccd28]={};_0x25b648['forEach'](_0x301eea=>{_0x2be44a[_0x5ccd28][_0x301eea]={'achievedMinimum':_0x233cae[_0x4ca77a]??0x0,'average':_0x4ced12[_0x4ca77a]??0x0},_0x4ca77a++;});}),{'assessmentData':{'classAssignment':_0x39814b,'student':_0x130edc,'total':_0x2be44a}};}
31
31
 
32
- async function uploadAssessmentData(_0x56b849,_0x409d15){try{const _0x5ab5dd=await convertToCSVFile(_0x409d15),_0xc20e9f=await _0x5ab5dd['text'](),_0x2a8d65=parseAssessmentCsv(_0xc20e9f),_0x79ce51=await fetch(_0x56b849+'/assessment-data/upload',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2a8d65)});if(!_0x79ce51['ok']){const _0x3d5897=await _0x79ce51['json']();throw _0x3d5897;}return _0x79ce51['json']();}catch(_0xb509e9){throw _0xb509e9;}}
32
+ async function uploadAssessmentData(_0x4d369f,_0x25430a){try{const _0x4f8c0e=await convertToCSVFile(_0x25430a),_0x2680b3=await _0x4f8c0e['text'](),_0x2a2eb3=parseAssessmentCsv(_0x2680b3),_0x5af267=await fetch(_0x4d369f+'/assessment-data/upload',{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify'](_0x2a2eb3)});if(!_0x5af267['ok']){const _0x50fac9=await _0x5af267['json']();throw _0x50fac9;}return _0x5af267['json']();}catch(_0xedd98c){throw _0xedd98c;}}
33
33
 
34
- async function uploadDeptFaculty(_0x326300,_0x34a24e){try{const _0x2f5a77=await convertToCSVFile(_0x34a24e),_0x15de9c=new FormData();_0x15de9c['append']('csvFile',_0x2f5a77);const _0x21a494=await fetch(_0x326300+'/dept-faculties/upload',{'method':'POST','body':_0x15de9c});if(!_0x21a494['ok']){const _0x328903=await _0x21a494['json']();throw _0x328903;}return _0x21a494['json']();}catch(_0x52f1e7){throw _0x52f1e7;}}
34
+ async function uploadDeptFaculty(_0x28ca04,_0x188339){try{const _0x212e44=await convertToCSVFile(_0x188339),_0x75b77e=new FormData();_0x75b77e['append']('csvFile',_0x212e44);const _0x472542=await fetch(_0x28ca04+'/dept-faculties/upload',{'method':'POST','body':_0x75b77e});if(!_0x472542['ok']){const _0xa78a94=await _0x472542['json']();throw _0xa78a94;}return _0x472542['json']();}catch(_0x19ae1a){throw _0x19ae1a;}}
35
35
 
36
- const HEADERS={'po':['program\x20outcome','po\x20statement','outcome\x20statement'],'tl':['taxonomy','level'],'pi':['performance\x20indicator'],'fc':['formative'],'sc':['summative'],'at':['assessment\x20tool','assessment\x20method','tool'],'pt':['performance\x20target','target','passing']};function getPoaepHeader(_0x39df05){let _0x31e5bf={'headerIdx':-1,'poIdx':-1,'tlIdx':-1,'piIdx':-1,'fcIdx':-1,'scIdx':-1,'atIdx':-1,'ptIdx':-1};for(let _0x2fe1e6=0x0;_0x2fe1e6<Math['min'](_0x39df05['length'],0x14);_0x2fe1e6++){const _0x1633f1=(_0x39df05[_0x2fe1e6]??[])['map'](_0x5c8500=>_0x5c8500['toLowerCase']()['trim']()),_0x30343d=_0x1633f1['findIndex'](_0x4083b5=>HEADERS['po']['some'](_0x21594a=>_0x4083b5['toLowerCase']()['includes'](_0x21594a))),_0xc1d0f2=_0x1633f1['findIndex'](_0x7cd2e9=>HEADERS['tl']['some'](_0x185237=>_0x7cd2e9['toLowerCase']()['includes'](_0x185237))),_0xdcc12=_0x1633f1['findIndex'](_0xf42742=>HEADERS['pi']['some'](_0x33db01=>_0xf42742['toLowerCase']()['includes'](_0x33db01))),_0xcef350=_0x1633f1['findIndex'](_0x2db493=>HEADERS['fc']['some'](_0x1bba23=>_0x2db493['toLowerCase']()['includes'](_0x1bba23))),_0xd8b7fc=_0x1633f1['findIndex'](_0x3c20ac=>HEADERS['sc']['some'](_0x24c188=>_0x3c20ac['toLowerCase']()['includes'](_0x24c188))),_0x26b731=_0x1633f1['findIndex'](_0x534e16=>HEADERS['at']['some'](_0x154189=>_0x534e16['toLowerCase']()['includes'](_0x154189))),_0x137345=_0x1633f1['findIndex'](_0x4b2dfa=>HEADERS['pt']['some'](_0x1526c0=>_0x4b2dfa['toLowerCase']()['includes'](_0x1526c0))),_0x2830b6=[_0x30343d,_0xc1d0f2,_0xdcc12,_0xcef350,_0xd8b7fc,_0x26b731,_0x137345]['filter'](_0x1724f8=>_0x1724f8!==-1)['length'];if(_0x2830b6>=0x3){_0x31e5bf={'headerIdx':_0x2fe1e6,'poIdx':_0x30343d,'tlIdx':_0xc1d0f2,'piIdx':_0xdcc12,'fcIdx':_0xcef350,'scIdx':_0xd8b7fc,'atIdx':_0x26b731,'ptIdx':_0x137345};break;}}if(_0x31e5bf['headerIdx']===-1)throw new Error('No\x20valid\x20headers\x20found\x20in\x20POAEP\x20file.');return _0x31e5bf;}
36
+ const HEADERS={'po':['program\x20outcome','po\x20statement','outcome\x20statement'],'tl':['taxonomy','level'],'pi':['performance\x20indicator'],'fc':['formative'],'sc':['summative'],'at':['assessment\x20tool','assessment\x20method','tool'],'pt':['performance\x20target','target','passing']};function getPoaepHeader(_0x107d1c){let _0x330ffd={'headerIdx':-1,'poIdx':-1,'tlIdx':-1,'piIdx':-1,'fcIdx':-1,'scIdx':-1,'atIdx':-1,'ptIdx':-1};for(let _0x598c83=0x0;_0x598c83<Math['min'](_0x107d1c['length'],0x14);_0x598c83++){const _0x10ab24=(_0x107d1c[_0x598c83]??[])['map'](_0x2e180a=>_0x2e180a['toLowerCase']()['trim']()),_0xe98c5a=_0x10ab24['findIndex'](_0x56fd0b=>HEADERS['po']['some'](_0x355bf2=>_0x56fd0b['toLowerCase']()['includes'](_0x355bf2))),_0x4dea37=_0x10ab24['findIndex'](_0x21644a=>HEADERS['tl']['some'](_0x1abf96=>_0x21644a['toLowerCase']()['includes'](_0x1abf96))),_0x326222=_0x10ab24['findIndex'](_0x4f1800=>HEADERS['pi']['some'](_0x3a2058=>_0x4f1800['toLowerCase']()['includes'](_0x3a2058))),_0x27dd82=_0x10ab24['findIndex'](_0x9127d2=>HEADERS['fc']['some'](_0x1eab7e=>_0x9127d2['toLowerCase']()['includes'](_0x1eab7e))),_0x102221=_0x10ab24['findIndex'](_0x51ec7a=>HEADERS['sc']['some'](_0x48c659=>_0x51ec7a['toLowerCase']()['includes'](_0x48c659))),_0x2bf7bc=_0x10ab24['findIndex'](_0x31681f=>HEADERS['at']['some'](_0x473ee5=>_0x31681f['toLowerCase']()['includes'](_0x473ee5))),_0x33e587=_0x10ab24['findIndex'](_0x19ac8d=>HEADERS['pt']['some'](_0x418547=>_0x19ac8d['toLowerCase']()['includes'](_0x418547))),_0x5a1e63=[_0xe98c5a,_0x4dea37,_0x326222,_0x27dd82,_0x102221,_0x2bf7bc,_0x33e587]['filter'](_0x478a13=>_0x478a13!==-1)['length'];if(_0x5a1e63>=0x3){_0x330ffd={'headerIdx':_0x598c83,'poIdx':_0xe98c5a,'tlIdx':_0x4dea37,'piIdx':_0x326222,'fcIdx':_0x27dd82,'scIdx':_0x102221,'atIdx':_0x2bf7bc,'ptIdx':_0x33e587};break;}}if(_0x330ffd['headerIdx']===-1)throw new Error('No\x20valid\x20headers\x20found\x20in\x20POAEP\x20file.');return _0x330ffd;}
37
37
 
38
- const parseFormativeCourses=_0x5b831c=>{let _0x1f1618=_0x5b831c['split'](',')['reduce']((_0x5031e6,_0x41fdb5)=>{const _0x425c3f=_0x41fdb5['trim']();if(_0x425c3f)_0x5031e6['push'](_0x425c3f);return _0x5031e6;},[]);return _0x1f1618;};
38
+ const parseFormativeCourses=_0x239a29=>{let _0x2a4088=_0x239a29['split'](',')['reduce']((_0x35f232,_0x370e95)=>{const _0x1a1999=_0x370e95['trim']();if(_0x1a1999)_0x35f232['push'](_0x1a1999);return _0x35f232;},[]);return _0x2a4088;};
39
39
 
40
- const parsePOAEP=_0x4d947e=>{try{const _0x2313c4=_0x4d14f7['parse'](_0x4d947e,{'skipEmptyLines':![]})['data'],{headerIdx:_0x112e22,poIdx:_0x113ffd,tlIdx:_0x12cdc6,piIdx:_0x41bf0d,fcIdx:_0x1aaf9a,scIdx:_0x37d6b3,atIdx:_0x33176f,ptIdx:_0x19b6d0}=getPoaepHeader(_0x2313c4),_0xf07ba9=[];let _0x32de96={'po_desc':'','seq_no':0x0,'PerfIndicators':[]},_0x2b062f='',_0x4bf855='',_0x87bc58='';for(let _0x20ae10=_0x112e22+0x1;_0x20ae10<_0x2313c4['length'];_0x20ae10++){const _0x42ae12=_0x2313c4[_0x20ae10];if(!_0x42ae12)break;const _0x136a74=_0x42ae12[_0x113ffd]?.['trim']()||'';_0x136a74!==''&&(_0x32de96={'po_desc':_0x136a74,'seq_no':_0x32de96['seq_no']+0x1,'PerfIndicators':[]},_0xf07ba9['push'](_0x32de96),_0x2b062f='',_0x4bf855='',_0x87bc58='');if(_0x32de96['po_desc']==='')throw new Error('Invalid\x20Program\x20Outcome\x20at\x20row\x20'+_0x20ae10+'.');const _0x10dca9=_0x42ae12[_0x41bf0d]?.['trim']()||'';if(_0x10dca9==='')break;const _0x2fc350=_0x42ae12[_0x1aaf9a]?.['trim']()||'';if(_0x2fc350==='')throw new Error('Empty\x20Formative\x20Courses\x20at\x20row\x20'+_0x20ae10+'.');const _0x171916=_0x42ae12[_0x37d6b3]?.['trim']()||_0x2b062f;if(_0x171916==='')throw new Error('Empty\x20Summative\x20Course\x20at\x20row\x20'+_0x20ae10+'.');_0x2b062f=_0x171916;const _0x306bed=_0x42ae12[_0x33176f]?.['trim']()||_0x4bf855;if(_0x306bed==='')throw new Error('Empty\x20Assessment\x20Tool\x20at\x20row\x20'+_0x20ae10+'.');_0x4bf855=_0x306bed;const _0x2ab42c=_0x42ae12[_0x19b6d0]?.['trim']()||_0x87bc58;if(_0x2ab42c==='')throw new Error('Empty\x20Performance\x20Target\x20at\x20row\x20'+_0x20ae10+'.');_0x87bc58=_0x2ab42c;const _0x7ac250=parseFormativeCourses(_0x2fc350);if(_0x7ac250['length']===0x0)throw new Error('Invalid\x20Formative\x20Courses\x20format\x20at\x20row\x20'+_0x20ae10+'.');const _0xa778c5=performaceTarget(_0x2ab42c);if(!_0xa778c5['performance_target']||!_0xa778c5['passing_score'])throw new Error('Invalid\x20Performance\x20Targets\x20format\x20at\x20row\x20'+_0x20ae10+'.');const _0x267b01={'pi_desc':_0x10dca9,'FormativeCourses':_0x7ac250['map'](_0x3e9024=>({'course_id':_0x3e9024,'cognitive_level':0x0})),'SummativeCourse':{'course_id':_0x171916},'AssessmentTool':{'at_desc':_0x306bed},'PerformanceTargets':{'target_percent':_0xa778c5['performance_target'],'min_score':_0xa778c5['passing_score']}};_0x32de96['PerfIndicators']['push'](_0x267b01);}return {'success':!![],'message':'Successfully\x20parsed\x20POAEP\x20file.','data':{'POAEP':_0xf07ba9}};}catch(_0x56e886){return {'success':![],'error':_0x56e886 instanceof Error?_0x56e886['message']:_0x56e886,'message':'Please\x20ensure\x20the\x20file\x20follows\x20the\x20POAEP\x20template.'};}};
40
+ const parsePOAEP=_0x3c959f=>{try{const _0x546340=_0x11bf51['parse'](_0x3c959f,{'skipEmptyLines':![]})['data'],{headerIdx:_0x4f9cf3,poIdx:_0x54388f,tlIdx:_0xc1b26c,piIdx:_0x2b5998,fcIdx:_0x63d60f,scIdx:_0x5d2ab0,atIdx:_0x3d2f4c,ptIdx:_0x3a8a1e}=getPoaepHeader(_0x546340),_0x1be2aa=[];let _0x2001c2={'po_desc':'','seq_no':0x0,'PerfIndicators':[]},_0x4df191='',_0x4371af='',_0x492557='';for(let _0x1e60ea=_0x4f9cf3+0x1;_0x1e60ea<_0x546340['length'];_0x1e60ea++){const _0x43d114=_0x546340[_0x1e60ea];if(!_0x43d114)break;const _0x27eb76=_0x43d114[_0x54388f]?.['trim']()||'';_0x27eb76!==''&&(_0x2001c2={'po_desc':_0x27eb76,'seq_no':_0x2001c2['seq_no']+0x1,'PerfIndicators':[]},_0x1be2aa['push'](_0x2001c2),_0x4df191='',_0x4371af='',_0x492557='');if(_0x2001c2['po_desc']==='')throw new Error('Invalid\x20Program\x20Outcome\x20at\x20row\x20'+_0x1e60ea+'.');const _0x463f76=_0x43d114[_0x2b5998]?.['trim']()||'';if(_0x463f76==='')break;const _0x4a3f1e=_0x43d114[_0x63d60f]?.['trim']()||'';if(_0x4a3f1e==='')throw new Error('Empty\x20Formative\x20Courses\x20at\x20row\x20'+_0x1e60ea+'.');const _0x22e17a=_0x43d114[_0x5d2ab0]?.['trim']()||_0x4df191;if(_0x22e17a==='')throw new Error('Empty\x20Summative\x20Course\x20at\x20row\x20'+_0x1e60ea+'.');_0x4df191=_0x22e17a;const _0x4a7979=_0x43d114[_0x3d2f4c]?.['trim']()||_0x4371af;if(_0x4a7979==='')throw new Error('Empty\x20Assessment\x20Tool\x20at\x20row\x20'+_0x1e60ea+'.');_0x4371af=_0x4a7979;const _0x4aa3de=_0x43d114[_0x3a8a1e]?.['trim']()||_0x492557;if(_0x4aa3de==='')throw new Error('Empty\x20Performance\x20Target\x20at\x20row\x20'+_0x1e60ea+'.');_0x492557=_0x4aa3de;const _0x1eddf3=parseFormativeCourses(_0x4a3f1e);if(_0x1eddf3['length']===0x0)throw new Error('Invalid\x20Formative\x20Courses\x20format\x20at\x20row\x20'+_0x1e60ea+'.');const _0x25e1ba=performaceTarget(_0x4aa3de);if(!_0x25e1ba['performance_target']||!_0x25e1ba['passing_score'])throw new Error('Invalid\x20Performance\x20Targets\x20format\x20at\x20row\x20'+_0x1e60ea+'.');const _0x5f516a={'pi_desc':_0x463f76,'FormativeCourses':_0x1eddf3['map'](_0x1ac497=>({'course_id':_0x1ac497,'cognitive_level':0x0})),'SummativeCourse':{'course_id':_0x22e17a},'AssessmentTool':{'at_desc':_0x4a7979},'PerformanceTargets':{'target_percent':_0x25e1ba['performance_target'],'min_score':_0x25e1ba['passing_score']}};_0x2001c2['PerfIndicators']['push'](_0x5f516a);}return {'success':!![],'message':'Successfully\x20parsed\x20POAEP\x20file.','data':{'POAEP':_0x1be2aa}};}catch(_0x4ff4e1){return {'success':![],'error':_0x4ff4e1 instanceof Error?_0x4ff4e1['message']:_0x4ff4e1,'message':'Please\x20ensure\x20the\x20file\x20follows\x20the\x20POAEP\x20template.'};}};
41
41
 
42
- async function uploadPOAEP(_0x1b9a65,_0x28c2bd,_0x580487,_0x57c37f,_0x3cb306){try{const _0x3eb3fc=await convertToCSVFile(_0x28c2bd),_0x54c53e=await _0x3eb3fc['text'](),_0x2d9e40=parsePOAEP(_0x54c53e),_0x2008a1=await fetch(_0x1b9a65+'/program-outcomes/poaep/upload?curr_id='+_0x57c37f+'&period_id='+_0x3cb306,{'method':'POST','headers':{'Content-Type':'application/json','Authorization':'Bearer\x20'+_0x580487},'credentials':'include','body':JSON['stringify'](_0x2d9e40)});if(!_0x2008a1['ok']){const _0x5d1995=await _0x2008a1['json']();throw _0x5d1995;}return _0x2008a1['json']();}catch(_0x15f79d){throw _0x15f79d;}}
42
+ async function uploadPOAEP(_0x3d09ae,_0x303aa7,_0x2d6966,_0x21066a,_0x2dfe35){try{const _0x303189=await convertToCSVFile(_0x303aa7),_0x1646f4=await _0x303189['text'](),_0x2d86f0=parsePOAEP(_0x1646f4),_0x4a3ff0=await fetch(_0x3d09ae+'/program-outcomes/poaep/upload?curr_id='+_0x21066a+'&period_id='+_0x2dfe35,{'method':'POST','headers':{'Content-Type':'application/json','Authorization':'Bearer\x20'+_0x2d6966},'credentials':'include','body':JSON['stringify'](_0x2d86f0)});if(!_0x4a3ff0['ok']){const _0x4a62af=await _0x4a3ff0['json']();throw _0x4a62af;}return _0x4a3ff0['json']();}catch(_0x1aec87){throw _0x1aec87;}}
43
43
 
44
- const getAssessmentDataFromXLSX=async _0x387540=>{try{const _0x142fe2=await convertToCSVFile(_0x387540),_0x1f00a4=await _0x142fe2['text'](),_0x5e264d=parseAssessmentCsv(_0x1f00a4),_0x28ea14={'success':!![],'message':'Successfully\x20parsed\x20Assessment\x20Data.','data':_0x5e264d};return Promise['resolve'](_0x28ea14);}catch(_0x26a2d5){return Promise['reject']({'success':![],'message':'Error\x20parsing\x20Assessment\x20Data.','error':_0x26a2d5});}};
44
+ class DataTable{['name'];['table']=[];['headers'];['validators']=[];constructor(){this['name']='DataTable',this['table']=[],this['headers']=[],this['validators']=[];}['getName'](){return this['name'];}['getHeaders'](){return this['headers'];}['getTable'](){if(this['table']['length']===0x0)return {'success':![],'message':'Datatable\x20is\x20unset.'};return {'success':!![],'message':'Successfully\x20fetched\x20datatable.','data':{'name':this['name'],'table':this['table'],'headers':this['headers']}};}async['setTable'](_0x242aa9){await this['assertInitialized'](),this['table']=_0x242aa9;}['useValidator'](_0x633eca){this['validators']['push'](_0x633eca);}async['fromXML'](_0x34c0c9,_0x40a3a4){const _0x4c3519=await convertToCSVFile(_0x34c0c9,_0x40a3a4),_0x2c7cb4=await _0x4c3519['text']();return this['fromCSVString'](_0x2c7cb4);}async['findValue'](_0x386d90){await this['assertInitialized']();for(let _0x35b8c3=0x0;_0x35b8c3<this['table']['length'];_0x35b8c3++){for(let _0x51f1bc=0x0;_0x51f1bc<this['table'][_0x35b8c3]['length'];_0x51f1bc++){if(this['table'][_0x35b8c3][_0x51f1bc]===_0x386d90)return {'row':_0x35b8c3,'column':_0x51f1bc};}}return {'row':-1,'column':-1};}async['validate'](){const _0x472bc2=[],_0x23f5d9=[];try{this['assertInitialized']()['then'](_0x17c1f0=>{_0x472bc2['push'](_0x17c1f0);})['catch'](_0x3b2288=>_0x23f5d9['push'](_0x3b2288));const {success:_0x26fb3d,message:_0x1f9981,error:_0x59365e,data:_0x56cc6e}=await this['toJson']();if(!_0x56cc6e)throw 'Cannot\x20access\x20Json\x20Object\x20data.';_0x472bc2['push'](..._0x56cc6e['validMsgs']),_0x23f5d9['push'](..._0x56cc6e['tableErrors']);const {jsonObj:_0x5dbf12}=_0x56cc6e;for(const _0x214a68 of this['validators']){await _0x214a68['validate'](_0x472bc2,_0x23f5d9,this,_0x5dbf12);}let _0x3bcb45=this['name']+'\x20ran\x20its\x20validations.';if(_0x472bc2['length']>0x0)_0x3bcb45+='\x20'+_0x472bc2['length']+'\x20validations\x20were\x20successful.';if(_0x23f5d9['length']>0x0)_0x3bcb45+='\x20'+_0x23f5d9['length']+'\x20validations\x20failed.';return {'success':!![],'message':_0x3bcb45,'data':{'validMsgs':_0x472bc2,'tableErrors':_0x23f5d9}};}catch(_0x379228){return _0x23f5d9['push']({'error':_0x379228||this['name']+'\x20failed\x20to\x20run\x20all\x20its\x20validations.','from':this['name']+'.validate()','cause':_0x379228}),{'success':![],'message':this['name']+'\x20failed\x20to\x20run\x20all\x20its\x20validations.','data':{'validMsgs':_0x472bc2,'tableErrors':_0x23f5d9}};}}async['assertInitialized'](){if(this['headers']['length']===0x0)throw {'error':'This\x20'+this['name']+'\x20is\x20not\x20initialized.','from':'ASSERT_INIT'};return Promise['resolve']('The\x20table\x20is\x20initialized.');}async['initializeTable'](_0x3c60d3){try{let _0x4dd8fc;if(_0x3c60d3 instanceof File)_0x4dd8fc=await this['fromXML'](_0x3c60d3);else _0x4dd8fc=await this['fromCSVString'](_0x3c60d3);if(!_0x4dd8fc['success']||!_0x4dd8fc['data'])return _0x4dd8fc;if(_0x4dd8fc['data']['table']['length']===0x0)throw new Error('Cannot\x20set\x20an\x20empty\x20table.');const {table:_0x26835c,headers:_0x5a396e}=_0x4dd8fc['data'];return this['table']=_0x26835c,this['headers']=_0x5a396e,{'success':!![],'message':'Successfully\x20set\x20table.'};}catch(_0xa3f17a){return {'success':![],'message':'Error\x20setting\x20table.','error':_0xa3f17a};}}}
45
45
 
46
- const getClassListFromXLSX=async _0xe0a81f=>{try{const _0x19d0a1=await convertToCSVFile(_0xe0a81f),_0x14b76a=await _0x19d0a1['text'](),_0x19db04=parseClassList(_0x14b76a),_0x311c2e={'success':!![],'message':'Successfully\x20parsed\x20Class\x20List.','data':_0x19db04};return Promise['resolve'](_0x311c2e);}catch(_0x6dc2c6){return Promise['reject']({'success':![],'message':'Error\x20parsing\x20Assessment\x20Data.','error':_0x6dc2c6});}};
46
+ class DTValidator{['name'];constructor(_0x4b99db){this['name']=_0x4b99db;}['getName'](){return this['name'];}}
47
47
 
48
- async function getCOAEPFromXLSX(_0x2e4f30){try{const _0x45b287=await convertToCSVFile(_0x2e4f30),_0x5720c7=await _0x45b287['text'](),_0xc12b6f=parseCOAEP(_0x5720c7);if('error'in _0xc12b6f)return Promise['reject']({'success':![],'message':_0xc12b6f['message'],'error':_0xc12b6f['error']});const _0x3a1978={'success':!![],'message':'Successfully\x20parsed\x20COAEP\x20Data.','data':_0xc12b6f};return Promise['resolve'](_0x3a1978);}catch(_0x2830f8){return Promise['reject']({'success':![],'message':'Error\x20parsing\x20COAEP\x20Data.','error':_0x2830f8});}}async function getCOAEPFromCSV(_0x2375ee){try{const _0xdd9da0=parseCOAEP(_0x2375ee);if(!_0xdd9da0['success'])return Promise['reject'](_0xdd9da0);return Promise['resolve'](_0xdd9da0);}catch(_0x9418d0){return Promise['reject']({'success':![],'message':'Error\x20parsing\x20COAEP','error':_0x9418d0});}}
48
+ class LastILOTaxo extends DTValidator{constructor(){super('LAST_ILO_TAXO');}async['validate'](_0x10fd4a,_0x4174f4,_0x17e824,_0x257996){const _0x5ad092=[];if(!_0x257996){_0x4174f4['push']({'error':'Unable\x20to\x20access\x20COAEP\x20object.','from':this['name']});return;}for(let _0x740d47=0x0;_0x740d47<_0x257996['co']['length'];_0x740d47++){const _0x6eb4f1=_0x257996['co'][_0x740d47];if(!_0x6eb4f1){const {row:_0x35037e,column:_0x398395}=await _0x17e824['findValue'](_0x740d47+0x1+'');_0x5ad092['push']({'error':'No\x20CO\x20Statement\x20for\x20CO\x20'+(_0x740d47+0x1)+'.','row':_0x35037e,'column':_0x398395+0x1,'from':this['name']});continue;}if(!_0x6eb4f1?.['ilo']){const {row:_0x12adfc,column:_0x4a1357}=await _0x17e824['findValue'](_0x6eb4f1['statement']);_0x5ad092['push']({'error':'No\x20ILOs\x20for\x20CO\x20'+(_0x740d47+0x1)+'.','row':_0x12adfc,'column':_0x4a1357,'from':this['name']});continue;}const _0x566143=_0x6eb4f1['ilo']['length']-0x1,_0x5dcd30=_0x6eb4f1['ilo'][_0x566143];if(!_0x5dcd30['taxonomy_level']){const {row:_0x44ae95,column:_0x4ba38e}=await _0x17e824['findValue'](_0x5dcd30['statement']);_0x5ad092['push']({'error':'Last\x20ILO\x20for\x20CO\x20'+(_0x740d47+0x1)+'\x20has\x20no\x20Taxonomy\x20Level.','row':_0x44ae95,'column':_0x4ba38e,'from':this['name']});continue;}if(_0x5dcd30['taxonomy_level']!==_0x6eb4f1['taxonomy_level']){const {row:_0x36444e,column:_0x22eece}=await _0x17e824['findValue'](_0x5dcd30['statement']);_0x5ad092['push']({'error':'Last\x20ILO\x20for\x20CO\x20'+(_0x740d47+0x1)+'\x20does\x20not\x20match\x20the\x20CO\x27s\x20Taxonomy\x20Level.\x20('+_0x5dcd30['taxonomy_level']+'\x20!==\x20'+_0x6eb4f1['taxonomy_level']+')','row':_0x36444e,'column':_0x22eece,'from':this['name']});}}if(_0x5ad092['length']>0x0)_0x4174f4['push'](..._0x5ad092);else _0x10fd4a['push'](this['name']+'\x20successfully\x20validated.');return;}}
49
49
 
50
- const getCourseOfferingFromXLSX=async _0x1f47b5=>{try{const _0x118b61=await convertToCSVFile(_0x1f47b5),_0x1d936e=await _0x118b61['text'](),_0x17af45=parseCourseOffering(_0x1d936e),_0x487fa7={'success':!![],'message':'Successfully\x20parsed\x20Course\x20Offering.','data':{'courseOfferings':_0x17af45}};return Promise['resolve'](_0x487fa7);}catch(_0x1d63be){return Promise['reject']({'success':![],'message':'Error\x20parsing\x20Course\x20Offering.','error':_0x1d63be});}};
50
+ const invalidTaxos=['remembering','understanding'];class MinCOtaxo extends DTValidator{constructor(){super('MIN_CO_TAXO');}async['validate'](_0x5afc92,_0x3be1c8,_0x225c63,_0x40ce38){const _0x55e3b5=[];if(!_0x40ce38){_0x3be1c8['push']({'error':'Unable\x20to\x20access\x20COAEP\x20object.','from':this['name']});return;}for(const _0x3cff4c of _0x40ce38['co']){if(!_0x3cff4c['taxonomy_level']){_0x55e3b5['push']({'error':'No\x20taxonomy\x20level\x20for\x20CO\x20Statement:\x20'+_0x3cff4c['statement'],'from':this['name']});continue;}for(const _0x243c3e of invalidTaxos){if(_0x3cff4c['taxonomy_level']===_0x243c3e){const {row:_0x1f1c29,column:_0x1ea00d}=await _0x225c63['findValue'](_0x3cff4c['statement']);let _0x1ee11e={'error':'Cannot\x20have\x20CO\x20Taxonomy\x20Level\x20of\x20lower\x20than\x20Applying:\x20'+_0x3cff4c['taxonomy_level']['toUpperCase'](),'from':this['name']};(_0x1f1c29!==-1||_0x1ea00d!==-1)&&(_0x1ee11e={..._0x1ee11e,'row':_0x1f1c29,'column':_0x1ea00d}),_0x55e3b5['push'](_0x1ee11e);}}}if(_0x55e3b5['length']>0x0)_0x3be1c8['push'](..._0x55e3b5);else _0x5afc92['push'](this['name']+'\x20successfully\x20validated.');return;}}
51
51
 
52
- const getCurriculumFromXLSX=async _0x560bea=>{try{const _0x26439d=await convertToCSVFile(_0x560bea),_0x25735f=await _0x26439d['text'](),_0x6a12da=parseCurriculum(_0x25735f),_0x231560={'success':!![],'message':'Successfully\x20parsed\x20Curriculum.','data':{'curriculums':_0x6a12da}};return Promise['resolve'](_0x231560);}catch(_0x17c5b8){return Promise['reject']({'success':![],'message':'Error\x20parsing\x20Curriculum.','error':_0x17c5b8});}};
52
+ const taxoOrder={'remembering':0x1,'understanding':0x2,'applying':0x3,'analyzing':0x4,'evaluating':0x5,'creating':0x6};class ILOTaxoOrder extends DTValidator{constructor(){super('ILO_TAXO_ORDER');}async['validate'](_0x5077bb,_0x1d6c95,_0x5cdb25,_0x16ef49){const _0x4fe462=[];if(!_0x16ef49){_0x1d6c95['push']({'error':'Unable\x20to\x20access\x20COAEP\x20object.','from':this['name']});return;}for(let _0x5d70ec=0x0;_0x5d70ec<_0x16ef49['co']['length'];_0x5d70ec++){const _0x383b7c=_0x16ef49['co'][_0x5d70ec];if(!_0x383b7c){const {row:_0x1ee97d,column:_0x2316a5}=await _0x5cdb25['findValue'](_0x5d70ec+0x1+'');_0x4fe462['push']({'error':'No\x20CO\x20Statement\x20for\x20CO\x20'+(_0x5d70ec+0x1)+'.','row':_0x1ee97d,'column':_0x2316a5+0x1,'from':this['name']});continue;}if(!_0x383b7c?.['ilo']){const {row:_0x498b34,column:_0xa56e06}=await _0x5cdb25['findValue'](_0x383b7c['statement']);_0x4fe462['push']({'error':'No\x20ILOs\x20for\x20CO\x20'+(_0x5d70ec+0x1)+'.','row':_0x498b34,'column':_0xa56e06,'from':this['name']});continue;}const _0x3b33ca=await _0x5cdb25['findValue'](_0x383b7c['ilo'][0x0]['statement']),_0x20b1d1=_0x383b7c['ilo']['map'](_0xd25d9e=>taxoOrder[_0xd25d9e['taxonomy_level']]);let _0xfd5b46=_0x20b1d1[0x0];for(let _0xb02e38=0x1;_0xb02e38<_0x20b1d1['length'];_0xb02e38++){if(_0x20b1d1[_0xb02e38]<_0xfd5b46){_0x4fe462['push']({'error':'Under\x20CO\x20'+(_0x5d70ec+0x1)+',\x20ILO\x20'+(_0xb02e38+0x1)+'\x20should\x20not\x20have\x20a\x20taxonomy\x20level\x20lower\x20than\x20ILO\x20'+_0xb02e38+'\x27s.','row':_0x3b33ca['row'],'column':_0x3b33ca['column']+_0xb02e38,'from':this['name']});continue;}_0xfd5b46=_0x20b1d1[_0xb02e38];}}if(_0x4fe462['length']>0x0)_0x1d6c95['push'](..._0x4fe462);else _0x5077bb['push'](this['name']+'\x20successfully\x20validated.');return;}}
53
53
 
54
- const getPOAEPFromXLSX=async _0x380272=>{try{const _0x1960de=await convertToCSVFile(_0x380272),_0x3279e4=await _0x1960de['text'](),_0x31cd40=parsePOAEP(_0x3279e4);if(!_0x31cd40['success'])return Promise['reject'](_0x31cd40);return Promise['resolve'](_0x31cd40);}catch(_0x2e3947){return Promise['reject']({'success':![],'message':'Error\x20parsing\x20POAEP.','error':_0x2e3947});}};const getPOAEPFromCSV=async _0x57af9b=>{try{const _0x11ece6=parsePOAEP(_0x57af9b);if(!_0x11ece6['success'])return Promise['reject'](_0x11ece6);return Promise['resolve'](_0x11ece6);}catch(_0x2bba98){return Promise['reject']({'success':![],'message':'Error\x20parsing\x20POAEP','error':_0x2bba98});}};
54
+ class CoaepDT extends DataTable{['faculty']=null;['course']=null;['sy']=null;['semester']=null;constructor(){super(),this['name']='CoaepDT',this['useValidator'](new MinCOtaxo()),this['useValidator'](new LastILOTaxo()),this['useValidator'](new ILOTaxoOrder());}async['fromCSVString'](_0x42dbe6){try{const _0x12792e={'name':this['name'],'table':[],'headers':[],'types':[]},_0xb40299=_0x11bf51['parse'](_0x42dbe6,{'skipEmptyLines':![]})['data'];_0x12792e['headers']=['No.','Course\x20Outcome\x20Statement','Intended\x20Learning\x20Outcome','Assessment\x20Tool','Performance\x20Target'];const {headerRowIndex:_0x48e57b,coIdx:_0x2f81ec,iloIdx:_0x483145,assessToolIdx:_0x205a47,perfTargetIdx:_0x56b961}=getCoaepHeader(_0xb40299);if(_0x48e57b===-0x1)throw new Error('Could\x20not\x20auto-detect\x20header\x20row.\x20Please\x20ensure\x20the\x20CSV\x20file\x20is\x20in\x20the\x20correct\x20COAEP\x20format.');_0xb40299['forEach'](_0x46c41a=>{const _0x170d3b=_0x46c41a['indexOf']('Name\x20of\x20Faculty:'),_0x5e3a14=_0x46c41a['indexOf']('School\x20Year'),_0x322266=_0x46c41a['indexOf']('Course:'),_0x323782=_0x46c41a['indexOf']('Semester');_0x170d3b!==-0x1&&(this['faculty']=_0x46c41a[_0x170d3b+0x1]?.['trim']()||this['faculty']);_0x5e3a14!==-0x1&&(this['sy']=_0x46c41a[_0x5e3a14+0x1]?.['trim']()||this['sy']);_0x322266!==-0x1&&(this['course']=_0x46c41a[_0x322266+0x1]?.['trim']()||this['course']);if(_0x323782!==-0x1){const _0x208e53=_0x46c41a[_0x323782+0x1]?.['trim']()||'',_0x207cca=_0x208e53['match'](/\d+/)?.[0x0];this['semester']=_0x207cca?parseInt(_0x207cca,0xa):this['semester'];}});for(let _0x1fc913=0x0;_0x1fc913<=_0xb40299['length'];_0x1fc913++){const _0xcb9335=_0xb40299[_0x1fc913];if(!_0xcb9335)break;if(_0x1fc913<=_0x48e57b)continue;let _0x25a60e=_0xcb9335[_0x2f81ec-0x1]?.['trim']()||'',_0x35c99d=_0xcb9335[_0x2f81ec]?.['trim']()||'';/^\d+$/['test'](_0xcb9335[_0x2f81ec]?.['trim']()||'')&&(_0x25a60e=_0xcb9335[_0x2f81ec]?.['trim']()||'',_0x35c99d=_0xcb9335[_0x2f81ec+0x1]?.['trim']()||'');if(_0xcb9335[_0x483145])_0x12792e['table']['push']([_0x25a60e,_0x35c99d,_0xcb9335[_0x483145]?.['trim']()||'',_0xcb9335[_0x205a47]?.['replace'](/^ILO\d+[:.]?\s*/,'')['trim']()||'',_0xcb9335[_0x56b961]?.['replace'](/\s+/g,'\x20')['trim']()||'']);else break;}return {'success':!![],'message':'Successfully\x20converted\x20COAEP\x20datatable.','data':_0x12792e};}catch(_0x8c3cbe){return {'success':![],'message':'Error\x20parsing\x20COAEP\x20table','error':_0x8c3cbe};}}async['toJson'](){const _0x2371e2=[],_0x24ea08=[],_0x367a86='COAEPDT_TO_JSON';try{await this['assertInitialized']();const _0x3cd0ac={'faculty':this['faculty'],'course':this['course'],'sy':this['sy'],'semester':this['semester'],'co':[]};let _0x36c32a=null,_0x206ae9='',_0x11a5b9='';this['table']['forEach']((_0x134656,_0x571487)=>{if(_0x571487===0x0&&!_0x134656[0x1])_0x24ea08['push']({'error':'Cannot\x20have\x20empty\x20CO\x20Statement\x20in\x20first\x20row.','row':0x0,'column':0x1,'from':_0x367a86});_0x134656[0x1]&&(_0x206ae9='',_0x11a5b9='');const _0x5b312d=_0x134656[0x1],_0x19de8d=_0x134656[0x2],_0x490741=_0x134656[0x3]||_0x206ae9,_0x8a6272=_0x134656[0x4]||_0x11a5b9;if(!_0x19de8d)_0x24ea08['push']({'error':'Cannot\x20have\x20empty\x20ILO.','row':0x1,'column':0x2,'from':_0x367a86});if(!_0x490741)_0x24ea08['push']({'error':'Cannot\x20have\x20empty\x20Assessment\x20Tool.','row':_0x571487,'column':0x3,'from':_0x367a86});if(!_0x8a6272)_0x24ea08['push']({'error':'Cannot\x20have\x20empty\x20Performance\x20Target.','row':_0x571487,'column':0x4,'from':_0x367a86});if(_0x134656[0x1]){const {cognitive_level:_0x3a2b8a,taxonomy_level:_0x747bb0,verb:_0x47ed06}=extractFromObjective(_0x5b312d),_0x2d107d={'statement':_0x5b312d,'ilo':[],'taxonomy_level':_0x747bb0,'cognitive_level':_0x3a2b8a,'verb':_0x47ed06};_0x36c32a=_0x2d107d,_0x3cd0ac['co']['push'](_0x2d107d);}const {cognitive_level:_0x451e06,taxonomy_level:_0x336dd1,verb:_0x5a8bf8}=extractFromObjective(_0x19de8d),{performance_target:_0xc28dc0,passing_score:_0x5bf087}=performaceTarget(_0x8a6272),_0xef75ea={'statement':_0x19de8d,'assessment_tool':_0x490741,'performance_target':_0xc28dc0,'passing_score':_0x5bf087,'cognitive_level':_0x451e06,'taxonomy_level':_0x336dd1,'verb':_0x5a8bf8};_0x36c32a['ilo']['push'](_0xef75ea);});if(_0x24ea08['length'])return _0x24ea08['push']({'error':'Converted\x20COAEP\x20datatable\x20to\x20JSON,\x20but\x20with\x20errors.','from':_0x367a86}),{'success':![],'message':'Converted\x20COAEP\x20datatable\x20to\x20JSON,\x20but\x20with\x20errors.','data':{'jsonObj':_0x3cd0ac,'validMsgs':_0x2371e2,'tableErrors':_0x24ea08}};return _0x2371e2['push']('Successfully\x20converted\x20COAEP\x20datatable\x20to\x20JSON.'),{'success':!![],'message':'Successfully\x20converted\x20COAEP\x20datatable\x20to\x20JSON','data':{'jsonObj':_0x3cd0ac,'validMsgs':_0x2371e2,'tableErrors':_0x24ea08}};}catch(_0x22d80f){return _0x24ea08['push']({'error':'Error\x20converting\x20COAEP\x20datatable\x20to\x20JSON','from':_0x367a86}),{'success':![],'message':'Error\x20converting\x20COAEP\x20datatable\x20to\x20JSON','error':_0x22d80f,'data':{'jsonObj':null,'tableErrors':_0x24ea08}};}}}
55
55
 
56
- const getDeptFacultyFromXLSX=async _0x26936d=>{try{const _0x42c031=await convertToCSVFile(_0x26936d),_0x3e792c=new FormData();_0x3e792c['append']('csvFile',_0x42c031);const _0x57ed38={'success':!![],'message':'Successfully\x20parsed\x20Dept\x20Faculty.','data':{'body':_0x3e792c}};return Promise['resolve'](_0x57ed38);}catch(_0x47014d){return Promise['reject']({'success':![],'message':'Error\x20parsing\x20Dept\x20Faculty.','error':_0x47014d});}};
57
-
58
- const getEnrolledStudentsFromXLSX=async _0x5a6e16=>{try{const _0x4d9fc8=await convertToCSVFile(_0x5a6e16),_0x486f74=new FormData();_0x486f74['append']('csvFile',_0x4d9fc8);const _0x396600={'success':!![],'message':'Successfully\x20parsed\x20Enrolled\x20Students.','data':{'body':_0x486f74}};return Promise['resolve'](_0x396600);}catch(_0x40e73d){return Promise['reject']({'success':![],'message':'Error\x20parsing\x20Enrolled\x20Students.','error':_0x40e73d});}};
59
-
60
- class Client{['BASE_URL'];constructor(_0x16d716){this['BASE_URL']=_0x16d716;}['Parser'](){return {'curriculum':async _0x4d2d34=>{const _0x3adcdd=await uploadCurriculum(this['BASE_URL'],_0x4d2d34);return _0x3adcdd;},'courseOffering':async _0x3a31ed=>{const _0x27e920=await uploadCourseOffering(this['BASE_URL'],_0x3a31ed);return _0x27e920;},'coaep':async(_0x39f30e,_0x4f9212)=>{const _0xeb67dc=await uploadCOAEP(this['BASE_URL'],_0x39f30e,_0x4f9212);return _0xeb67dc;},'enrolledStudent':async _0x193966=>{const _0x514d9d=await uploadEnrolledStudent(this['BASE_URL'],_0x193966);return _0x514d9d;},'classlist':async(_0x20b849,_0x3f5d48,_0x42a35b)=>{const _0x5c3168=await uploadClassList(this['BASE_URL'],_0x20b849,_0x3f5d48,_0x42a35b);return _0x5c3168;},'assessmentData':async _0x382dba=>{const _0x5b3a57=await uploadAssessmentData(this['BASE_URL'],_0x382dba);return _0x5b3a57;},'deptFaculty':async _0x2749c0=>{const _0x6b5ed5=await uploadDeptFaculty(this['BASE_URL'],_0x2749c0);return _0x6b5ed5;},'poaep':async(_0x5601ac,_0x26690a,_0x415690,_0x4067ee)=>{const _0xd13e4e=await uploadPOAEP(this['BASE_URL'],_0x5601ac,_0x26690a,_0x415690,_0x4067ee);return _0xd13e4e;},'getAssessmentDataFromXLSX':getAssessmentDataFromXLSX,'getClassListFromXLSX':getClassListFromXLSX,'getCOAEPFromCSV':getCOAEPFromCSV,'getCOAEPFromXLSX':getCOAEPFromXLSX,'getCourseOfferingFromXLSX':getCourseOfferingFromXLSX,'getCurriculumFromXLSX':getCurriculumFromXLSX,'getPOAEPFromCSV':getPOAEPFromCSV,'getPOAEPFromXLSX':getPOAEPFromXLSX,'getDeptFacultyFromXLSX':getDeptFacultyFromXLSX,'getEnrolledStudentsFromXLSX':getEnrolledStudentsFromXLSX};}}
56
+ class Client{['BASE_URL'];constructor(_0x227315){this['BASE_URL']=_0x227315;}['Parser'](){return {'curriculum':async _0xe5cb45=>{const _0xb40594=await uploadCurriculum(this['BASE_URL'],_0xe5cb45);return _0xb40594;},'courseOffering':async _0x1b8cd5=>{const _0x57292e=await uploadCourseOffering(this['BASE_URL'],_0x1b8cd5);return _0x57292e;},'coaep':async(_0xe12892,_0x40abfb)=>{const _0x2e68cc=await uploadCOAEP(this['BASE_URL'],_0xe12892,_0x40abfb);return _0x2e68cc;},'enrolledStudent':async _0x1c4b07=>{const _0x19a77d=await uploadEnrolledStudent(this['BASE_URL'],_0x1c4b07);return _0x19a77d;},'classlist':async(_0x27b374,_0x58e817,_0x3b5b31)=>{const _0x10d611=await uploadClassList(this['BASE_URL'],_0x27b374,_0x58e817,_0x3b5b31);return _0x10d611;},'assessmentData':async _0x1b8315=>{const _0x49d587=await uploadAssessmentData(this['BASE_URL'],_0x1b8315);return _0x49d587;},'deptFaculty':async _0x3c09f7=>{const _0x46a0bf=await uploadDeptFaculty(this['BASE_URL'],_0x3c09f7);return _0x46a0bf;},'poaep':async(_0x3958e3,_0xc0c00e,_0x5022eb,_0x177b59)=>{const _0x32f866=await uploadPOAEP(this['BASE_URL'],_0x3958e3,_0xc0c00e,_0x5022eb,_0x177b59);return _0x32f866;},'CoaepDT':CoaepDT};}}
61
57
 
62
58
  export { Client as default };
package/main.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { getCOAEPFromCSV, getCOAEPFromXLSX } from "./payloads/getCOAEP";
1
+ import { CoaepDT } from "./DataTable/models/CoaepDT";
2
2
  export default class Client {
3
3
  private BASE_URL;
4
4
  constructor(url: string);
@@ -25,35 +25,6 @@ export default class Client {
25
25
  * Functions that parse then return the payload
26
26
  * instead of directly calling the backend and returning the response
27
27
  */
28
- getAssessmentDataFromXLSX: (xls: File) => Promise<import("./types/parserResult").ParserResult<{
29
- assessmentData: import("./types/assessmentdata").AssessmentData;
30
- }>>;
31
- getClassListFromXLSX: (xls: File) => Promise<import("./types/parserResult").ParserResult<{
32
- enrolledCourses: import("./types/classList").classList[];
33
- }>>;
34
- getCOAEPFromCSV: typeof getCOAEPFromCSV;
35
- getCOAEPFromXLSX: typeof getCOAEPFromXLSX;
36
- getCourseOfferingFromXLSX: (xls: File) => Promise<import("./types/parserResult").ParserResult<{
37
- courseOfferings: import("./types/courseOffering").CourseOffering[];
38
- }>>;
39
- getCurriculumFromXLSX: (xls: File) => Promise<import("./types/parserResult").ParserResult<{
40
- curriculums: import("./types/curriculum").CurriculumCourses[];
41
- }>>;
42
- getPOAEPFromCSV: (csv: string) => Promise<import("./types/parserResult").ParserResult<{
43
- POAEP: import("./types/poaep").PO[];
44
- }>>;
45
- getPOAEPFromXLSX: (xls: File) => Promise<import("./types/parserResult").ParserResult<{
46
- POAEP: import("./types/poaep").PO[];
47
- }>>;
48
- /**
49
- * Functions that converts the xls to csv
50
- * then returns the csv as formdata
51
- */
52
- getDeptFacultyFromXLSX: (xls: File) => Promise<import("./types/parserResult").ParserResult<{
53
- body: FormData;
54
- }>>;
55
- getEnrolledStudentsFromXLSX: (xls: File) => Promise<import("./types/parserResult").ParserResult<{
56
- body: FormData;
57
- }>>;
28
+ CoaepDT: typeof CoaepDT;
58
29
  };
59
30
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@obe-loms/coms-parser",
3
- "version": "1.5.2",
3
+ "version": "1.6.0",
4
4
  "license": "ISC",
5
5
  "dependencies": {
6
6
  "papaparse": "^5.5.3",
@@ -0,0 +1 @@
1
+ export {};