var app=angular.module('app',['ngRoute','chart.js','ui.tinymce','angular-md5','signature','fayzaan.gRecaptcha.v3']);app.run(function($rootScope,$location,$routeParams,auth,$window,$q,query,toast,$templateCache){$rootScope.login={details:{},status:{logged:!1},credentials:{username:'',password:''}} window.addEventListener("beforeunload",function(e){e.preventDefault();e.returnValue=''});$templateCache.removeAll();$rootScope.page={title:"BatStateUCAT Applicant's Portal"} angular.element(document).ready(function(){const loader=document.getElementById('page-loader');loader.classList.add('fade-out');setTimeout(()=>{loader.style.display='none'},400)});$rootScope.isOffline=!navigator.onLine;window.addEventListener('offline',function(){$rootScope.$apply(function(){$rootScope.isOffline=!0;$rootScope.offlineMessage="Connection lost. You are now offline.";toast.warning($rootScope.offlineMessage)})});window.addEventListener('online',function(){$rootScope.$apply(function(){$rootScope.isOffline=!1;toast.success("You are now online")})});$rootScope.$on('$locationChangeStart',function(event){var path=$location.path();var s=path.substring(0,path.lastIndexOf('/'));if($location.path()=="/logout"){auth.logout("/auth")}});$rootScope.$on('$routeChangeSuccess',function(){if($location.path()=="/logout"){auth.logout("/auth")}});$q.all([]).then(function(data){});$rootScope.$on('$routeChangeError',function(){})});app.config(function($compileProvider,$routeProvider,$httpProvider,$locationProvider,$sceProvider){$routeProvider.when('/',{templateUrl:'pages/page.dashboard.php',controller:'DashboardController',resolve:{check:function(auth,guard,toast){auth.check_session().then((result)=>{guard.check_if_idle()})},admissionCheck:(admission,$rootScope,$timeout,$location)=>{var defaultsData;return admission.fetch.defaults().then(function(data){defaultsData=data;if(!data.enable_admission_result){} return admission.fetch.result()}).then(function(result){return{defaults:defaultsData,result:result}})},title:function(){document.title="BatStateUCAT Applicant's Portal"}}}).when('/dashboard',{templateUrl:'pages/page.dashboard.php',controller:'DashboardController',resolve:{check:function(auth,guard,toast){auth.check_session().then((result)=>{guard.check_if_idle()})},admissionCheck:(admission,$rootScope,$timeout,$location)=>{var defaultsData;return admission.fetch.defaults().then(function(data){defaultsData=data;if(!data.enable_admission_result){return{}} return admission.fetch.result()}).then(function(result){return{defaults:defaultsData,result:result}})},title:function(){document.title="BatStateUCAT Applicant's Portal - Dashboard"}}}).when('/dashboard/submitted-documents',{templateUrl:'pages/page.submitted-documents.php',controller:'DashboardController',resolve:{check:function(auth,guard,toast){auth.check_session().then((result)=>{guard.check_if_idle()})},admissionCheck:(admission,$rootScope,$timeout,$location)=>{var defaultsData;return admission.fetch.defaults().then(function(data){defaultsData=data;if(!data.enable_admission_result){return{}} return admission.fetch.result()}).then(function(result){return{defaults:defaultsData,result:result}})},title:function(){document.title="BatStateUCAT Applicant's Portal - Dashboard"}}}).when('/dashboard/admission-result',{templateUrl:'pages/page.admission-result.php',controller:'DashboardController',resolve:{check:function(auth,guard,toast){auth.check_session().then((result)=>{guard.check_if_idle()})},admissionCheck:(admission,$rootScope,$timeout,$location)=>{var defaultsData;return admission.fetch.defaults().then(function(data){defaultsData=data;if(!data.enable_admission_result){Swal.fire("Not allowed","","error").then(function(){$timeout(function(){$location.path('/dashboard')})})} return admission.fetch.result()}).then(function(result){if(!result.qualifier){} return{defaults:defaultsData,result:result}})},title:function(){document.title="BatStateUCAT Applicant's Portal - Admission Result"}}}).when('/dashboard/admission-appeal',{templateUrl:(params)=>{var url=window.location.href;return'pages/page.admission-appeal_v1_2.php'},controller:'DashboardController',resolve:{check:function(auth,guard,toast){return auth.check_session().then((result)=>{guard.check_if_idle()})},admissionCheck:(admission,$rootScope,$timeout,$location)=>{var defaultsData;return admission.fetch.defaults().then(function(data){defaultsData=data;if(!data.enable_admission_result){Swal.fire("Not allowed","","error").then(function(){$timeout(function(){$location.path('/dashboard')})});return $q.reject('not_allowed')} return admission.fetch.result().then((data)=>{if(!data.allow_appeal){Swal.fire("Not allowed","","error").then(function(){$timeout(function(){$location.path('/dashboard')})})} return data})}).then(function(result){if(!result.qualifier){} return{defaults:defaultsData,result:result}})},title:function(){document.title="BatStateUCAT Applicant's Portal - Admission Appeal"}}}).when('/dashboard/enrollment-procedure',{templateUrl:'pages/page.enrollment-procedure.php',controller:'DashboardController',resolve:{check:function(auth,guard,toast){auth.check_session().then((result)=>{guard.check_if_idle()})},admissionCheck:(admission,$rootScope,$timeout,$location)=>{var defaultsData;return admission.fetch.defaults().then(function(data){defaultsData=data;if(!data.enable_admission_result){Swal.fire("Not allowed","","error").then(function(){$timeout(function(){$location.path('/dashboard')})});return $q.reject('not_allowed')} return admission.fetch.result()}).then(function(result){if(!result.qualifier){Swal.fire("Only admission qualifier is allowed","","error").then(function(){$timeout(function(){$location.path('/dashboard')})});return $q.reject('not_qualifier')} return{defaults:defaultsData,result:result}})},title:function(){document.title="BatStateUCAT Applicant's Portal - Pre-registration"}}}).when('/dashboard/pre-registration',{templateUrl:'pages/page.pre-registration.php',controller:'DashboardController',resolve:{check:function(auth,guard,toast){return auth.check_session().then((result)=>{guard.check_if_idle()})},admissionCheck:(admission,$rootScope,$timeout,$location)=>{var defaultsData;return admission.fetch.defaults().then(function(data){defaultsData=data;if(!data.enable_admission_result){Swal.fire("Not allowed","","error").then(function(){$timeout(function(){$location.path('/dashboard')})});return $q.reject('not_allowed')} return admission.fetch.result()}).then(function(result){if(!result.qualifier){Swal.fire("Only admission qualifier is allowed","","error").then(function(){$timeout(function(){$location.path('/dashboard')})});return $q.reject('not_qualifier')} return{defaults:defaultsData,result:result}})},title:function(){document.title="BatStateUCAT Applicant's Portal - Pre-registration"}}}).when('/dashboard/student-portal-account-activation',{templateUrl:'pages/page.student-portal-account-activation.php',controller:'AccountController',resolve:{check:function(auth,guard,toast){auth.check_session().then((result)=>{guard.check_if_idle()})},admissionCheck:(admission,$rootScope,$timeout,$location)=>{var defaultsData;return admission.fetch.defaults().then(function(data){defaultsData=data;if(!data.enable_admission_result){Swal.fire("Not allowed","","error").then(function(){$timeout(function(){$location.path('/dashboard')})});return $q.reject('not_allowed')} return admission.fetch.result()}).then(function(result){if(!result.qualifier){Swal.fire("Only admission qualifier is allowed","","error").then(function(){$timeout(function(){$location.path('/dashboard')})});return $q.reject('not_qualifier')} return{defaults:defaultsData,result:result}})},title:function(){document.title="BatStateUCAT Applicant's Portal - Student Portal Account Activation"}}}).when('/dashboard/medical-request-slip',{templateUrl:'pages/page.medical-request-slip.php',controller:'DashboardController',resolve:{check:function(auth,guard,toast){auth.check_session().then((result)=>{guard.check_if_idle()})},admissionCheck:(admission,$rootScope,$timeout,$location)=>{var defaultsData;return admission.fetch.defaults().then(function(data){defaultsData=data;if(!data.enable_admission_result){Swal.fire("Not allowed","","error").then(function(){$timeout(function(){$location.path('/dashboard')})});return $q.reject('not_allowed')} return admission.fetch.result()}).then(function(result){if(!result.qualifier){Swal.fire("Only admission qualifier is allowed","","error").then(function(){$timeout(function(){$location.path('/dashboard')})});return $q.reject('not_qualifier')} return{defaults:defaultsData,result:result}})},title:function(){document.title="BatStateUCAT Applicant's Portal - Pre-registration"}}}).when('/dashboard/appointment',{templateUrl:'pages/page.appointment.php',controller:'DashboardController',resolve:{check:(auth,guard,toast)=>{auth.check_session().then((result)=>{guard.check_if_idle()})},admissionCheck:(admission,$rootScope,$timeout,$location,$q)=>{var defaultsData;return admission.fetch.defaults().then(function(data){defaultsData=data;if(!data.enable_admission_result){Swal.fire("Not allowed","","error").then(function(){$timeout(function(){$location.path('/dashboard')})});return $q.reject('not_allowed')} return admission.fetch.result()}).then(function(result){if(!result.qualifier){Swal.fire("Only admission qualifier is allowed","","error").then(function(){$timeout(function(){$location.path('/dashboard')})});return $q.reject('not_qualifier')} return{defaults:defaultsData,result:result}})},title:function(){document.title="BatStateUCAT Applicant's Portal - Pre-registration"}}}).when('/dashboard/account',{templateUrl:'pages/page.dashboard.account.php',controller:'AccountController',resolve:{check:function(auth,guard,auth,toast){auth.check_session().then((result)=>{guard.check_if_idle()})},admissionCheck:(admission,$rootScope,$timeout,$location)=>{var defaultsData;return admission.fetch.defaults().then(function(data){defaultsData=data;if(!data.enable_admission_result){return{}} return admission.fetch.result()}).then(function(result){if(!result.qualifier){} return{defaults:defaultsData,result:result}})},title:function(){document.title="BatStateUCAT Applicant's Portal - Account"}}}).when('/auth',{templateUrl:'pages/page.auth.php',controller:'BaseController',resolve:{title:function(){document.title="BatStateUCAT Applicant's Portal - Login"}}}).when('/forgot-pin',{templateUrl:'pages/page.forgot-pin.php',controller:'BaseController',resolve:{title:function(){document.title="BatStateUCAT Applicant's Portal - Forgot PIN"}}}).when('/logout',{templateUrl:'pages/page.auth.php',controller:'BaseController'}).when('/dashboard/help',{templateUrl:'pages/page.help.php',controller:'DashboardController',resolve:{check:function(auth,guard){auth.check_session().then((result)=>{guard.check_if_idle()})},admissionCheck:(admission,$rootScope,$timeout,$location)=>{var defaultsData;return admission.fetch.defaults().then(function(data){defaultsData=data;if(!data.enable_admission_result){return{}} return admission.fetch.result()}).then(function(result){return{defaults:defaultsData,result:result}})},title:function(){document.title="BatStateUCAT Applicant's Portal - Help"}}}).when('/db-server-down',{templateUrl:'pages/page.db-down.php'}).otherwise({templateUrl:'pages/page.404.php'});$httpProvider.defaults.headers.common['x-api-key']='eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHAiOiJxdWV1aW5nLWhzIiwidG9rZW4iOiIyOTY3MTczODAxODNkZmRlN2M3MTgwMWM5MmM4NGIxMyJ9.9_kZNAwMA2rPqeGFtT4INQqm5zf7ci_KsjB9zBSxXIg';$httpProvider.defaults.headers.common['x-csrf-token']=csrf_token;$httpProvider.defaults.headers.common['x-requested-from']=window.location.href;$httpProvider.defaults.headers.common['x-app-source']='batstateucat_applicants_portal_v2';$httpProvider.interceptors.push('httpInterceptor');$locationProvider.html5Mode({enabled:!0,requireBase:!0});$locationProvider.hashPrefix('');$compileProvider.debugInfoEnabled(!1);$sceProvider.enabled(!0)});app.factory('student_portal',function($q,$http,query,$rootScope,$timeout,$location,jwt){let endpoint='backend/public/index.php/auth/';return{activate:(params)=>{var deffered=$q.defer();jwt.encode(params).then((result)=>{console.log(result);$http.defaults.headers.common.Authorization="Bearer "+result;$http.post(endpoint+'activate/student-portal-account',{}).then((result)=>{deffered.resolve(result.data)})});return deffered.promise},check:(params)=>{var deffered=$q.defer();jwt.encode(params).then((result)=>{console.log(result);$http.defaults.headers.common.Authorization="Bearer "+result;$http.post(endpoint+'check/student-portal-account-activation',{}).then((result)=>{deffered.resolve(result.data)})});return deffered.promise}}});app.factory('appointment',function($q,query,$rootScope,$timeout,$location){return{fetch:{pre_enrollment:function(params){var deffered=$q.defer();var promise=query.post('data/appointment/list-event/pre-enrollment',params);promise.then(function(result){deffered.resolve(result.data)});return deffered.promise},}}});app.factory('admission',function($q,query,$rootScope,$timeout,$location){return{fetch:{defaults:function(params){var deffered=$q.defer();var promise=query.post('data/fetch/admission-defaults',params);promise.then(function(result){deffered.resolve(result.data)});return deffered.promise},result:function(params){var deffered=$q.defer();var promise=query.post('data/fetch/admission-result',params);promise.then(function(result){deffered.resolve(result.data)});return deffered.promise},admission_policy:function(params){var deffered=$q.defer();var promise=query.post('data/fetch/admission-policy',params);promise.then(function(result){deffered.resolve(result.data)});return deffered.promise},application:function(params){var deffered=$q.defer();var promise=query.post('data/fetch/application',params);promise.then(function(result){deffered.resolve(result.data)});return deffered.promise},deficiencies:function(params){var deffered=$q.defer();var promise=query.post('data/fetch/deficiencies',params);promise.then(function(result){deffered.resolve(result.data)});return deffered.promise},application_files:function(params){var deffered=$q.defer();var promise=query.post('data/fetch/application-files',params);promise.then(function(result){deffered.resolve(result.data)});return deffered.promise},},appeal:{submit:function(params){var deffered=$q.defer();var promise=query.post('data/appeal/submit',params);promise.then(function(result){console.log(result);deffered.resolve(result.data)});return deffered.promise},check:function(params){var deffered=$q.defer();var promise=query.post('data/appeal/check',params);promise.then(function(result){deffered.resolve(result.data)});return deffered.promise},decline:function(params){var deffered=$q.defer();var promise=query.post('data/appeal/decline',params);promise.then(function(result){deffered.resolve(result.data)});return deffered.promise}},interview:{check:function(params){var deffered=$q.defer();var promise=query.post('data/interview/check',params);promise.then(function(result){deffered.resolve(result.data)});return deffered.promise}},qualifier:{fetch_data:(params)=>{var deffered=$q.defer();var promise=query.post('data/qualifier/fetch-data',params);promise.then(function(result){deffered.resolve(result.data)});return deffered.promise},preregistration:{confirm:function(params){var deffered=$q.defer();var promise=query.post('data/prereg/confirm',params);promise.then(function(result){deffered.resolve(result.data)});return deffered.promise},cancel:function(params){var deffered=$q.defer();var promise=query.post('data/prereg/cancel',params);promise.then(function(result){deffered.resolve(result.data)});return deffered.promise},check:function(params){var deffered=$q.defer();var promise=query.post('data/prereg/check',params);promise.then(function(result){deffered.resolve(result.data)});return deffered.promise},}}}});app.factory('guard',function($q,$rootScope,$location,$http,query,util,md5,auth){return{check_if_idle:()=>{timerIncrement=()=>{console.log($location.path());min++;if(min==1){min=0} $rootScope.idleTime++;$rootScope.$apply();if($rootScope.idleTime==1){console.log("check session..");auth.check_session()}else if($rootScope.idleTime==2){$rootScope.idleTime=0;swal.fire("You have been logged out due to inactivity");console.log("logging out..");document.querySelectorAll('.modal.show').forEach(function(modalEl){var modal=bootstrap.Modal.getInstance(modalEl);if(modal){modal.hide()}});auth.logout("/auth")}} $rootScope.idleTime=0;var idleInterval=setInterval(timerIncrement,60000*15);$(window).mousemove(function(e){$rootScope.idleTime=0;console.log("mouse move detected "+$rootScope.idleTime)});$(window).keypress(function(e){$rootScope.idleTime=0;console.log("keypress detected"+$rootScope.idleTime)});var min=0}}});app.factory('jwt',function($q,query){return{encode:function(payload){var deffered=$q.defer();var promise=query.post('data/encode/jwt',{payload:payload});promise.then(function(result){deffered.resolve(result.data)});return deffered.promise},decode:function(jwt){var deffered=$q.defer();var promise=query.post('data/decode/jwt',{jwt:jwt});promise.then(function(result){deffered.resolve(result.data)});return deffered.promise}}});app.factory('fetch',($q,query)=>{return{service:(service)=>{var deffered=$q.defer();var promise=query.post('data/fetch/service',{service:service});promise.then(function(result){deffered.resolve(result.data)});return deffered.promise},service_param:(service,param)=>{var data=param;data.service=service;var deffered=$q.defer();var promise=query.post('data/fetch/service',data);promise.then(function(result){deffered.resolve(result.data)});return deffered.promise},religions:function(){var deffered=$q.defer();this.service('gen/fetch/religions').then(function(result){deffered.resolve(result)});return deffered.promise},citizenships:function(){var deffered=$q.defer();this.service('gen/fetch/citizenships').then(function(result){deffered.resolve(result)});return deffered.promise},regions:function(){var deffered=$q.defer();this.service('gen/fetch/regions').then(function(result){deffered.resolve(result)});return deffered.promise},provinces:function(){var deffered=$q.defer();this.service('gen/fetch/provinces').then(function(result){deffered.resolve(result)});return deffered.promise},citymun:function(params){var deffered=$q.defer();this.service_param('gen/fetch/citymun',params).then(function(result){deffered.resolve(result)});return deffered.promise},barangays:function(params){var deffered=$q.defer();this.service_param('gen/fetch/barangays',params).then(function(result){deffered.resolve(result)});return deffered.promise},campuses:function(){var deffered=$q.defer();this.service('acad/fetch/campuses').then(function(result){deffered.resolve(result)});return deffered.promise},colleges:function(params){var deffered=$q.defer();this.service_param('acad/fetch/colleges',params).then(function(result){deffered.resolve(result)});return deffered.promise},all_programs:function(params){var deffered=$q.defer();this.service('acad/fetch/offering/programs/undergrad').then(function(result){deffered.resolve(result)});return deffered.promise},programs_per_college:function(params){var deffered=$q.defer();this.service_param('acad/fetch/offering/programs/undergrad',params).then(function(result){deffered.resolve(result)});return deffered.promise},programs:function(params){var deffered=$q.defer();this.service_param('acad/fetch/programs',params).then(function(result){deffered.resolve(result)});return deffered.promise},majors:function(params){var deffered=$q.defer();this.service_param('acad/fetch/majors',params).then(function(result){deffered.resolve(result)});return deffered.promise},curriculum:function(params){var deffered=$q.defer();this.service_param('acad/fetch/listing/curriculum',params).then(function(result){deffered.resolve(result)});return deffered.promise},}});app.factory('auth',function($q,$rootScope,$location,$http,query,util,md5,jwt){let endpoint='backend/public/index.php/auth/';return{change_pin:(data,callback)=>{return Swal.fire({title:"Confirm",text:"Change PIN?",allowOutsideClick:!1,allowEscapeKey:!1,allowEnterKey:!1,showCancelButton:!0,confirmButtonColor:"#3085d6",cancelButtonColor:"#d33",cancelButtonText:"No",confirmButtonText:"Yes",reverseButtons:!0,showLoaderOnConfirm:!0,preConfirm:()=>{Swal.disableButtons();var deffered=$q.defer();jwt.encode(data).then((result)=>{$http.defaults.headers.common.Authorization="Bearer "+result;$http.post(endpoint+'change-pin',{}).then((result)=>{deffered.resolve(result)})});return deffered.promise},}).then((result)=>{if(result.isConfirmed){callback(result.value.data)}else{callback(!1)}})},verify:(callback)=>{var ret=!1;return Swal.fire({title:"Verification",text:"To continue, please enter your PIN.",icon:"warning",input:"password",inputLabel:"",inputPlaceholder:"Enter your PIN",inputAttributes:{maxlength:"5",autocapitalize:"off",autocorrect:"off",inputmode:'numeric',pattern:'[0-9]*',},didOpen:()=>{const input=Swal.getInput();input.addEventListener('input',function(){this.value=this.value.replace(/\D/g,'')})},allowOutsideClick:!1,allowEscapeKey:!1,allowEnterKey:!1,showCancelButton:!0,confirmButtonColor:"#3085d6",cancelButtonColor:"#d33",cancelButtonText:"Cancel",confirmButtonText:"Verify",reverseButtons:!0,showLoaderOnConfirm:!0,}).then((result)=>{if(result.isConfirmed){let secret=CryptoJS.SHA256(result.value+csrf_token).toString();let data={success:($rootScope.login.details.secret==secret?true:!1)};callback(data)}else{callback(!1)}})},logout:(route_to)=>{var deffered=$q.defer();var promise=query.post('auth/clear');promise.then(function(result){$location.path(route_to);deffered.resolve(result.data)});return deffered.promise},session:function(){var deffered=$q.defer();var promise=query.post('auth/session');promise.then(function(result){var data=result.data;deffered.resolve(data)});return deffered.promise},check_session:function(){var deffered=$q.defer();var promise=this.session();promise.then(function(result){if(result=='null'||result==null||result=='false'){$location.path('/auth');$rootScope.login.details={}}else{if(result.application_id.substring(0,4)=='2025'){window.location.href="https://dione.batstate-u.edu.ph/batstateucat/portal/#/dashboard/2025"} if($location.path()=="/"){$location.path('/dashboard')} $rootScope.login.details=result} deffered.resolve(result)});return deffered.promise},authenticate:(params,route_to)=>{var deffered=$q.defer();$rootScope.login.logged=!1;jwt.encode(params).then((result)=>{$http.defaults.headers.common.Authorization="Bearer "+result;$http.post(endpoint+'authenticate',{}).then((result)=>{if(result.data.success){csrf_token=result.data.csrf_token;$http.defaults.headers.common['x-csrf-token']=result.data.csrf_token;$rootScope.login.details=result.data;$rootScope.login.status.logged=!0;$location.path(route_to)} deffered.resolve(result.data)})});return deffered.promise}}});app.factory('query',function($http,$q,$rootScope){var backend_url="backend/public/index.php/";return{get:(ajax,req_params)=>{ajax=backend_url+ajax;var deffered=$q.defer();var params={};if(req_params!=undefined){params=req_params} params.token=Base64.encode(token);params.user=$rootScope.login.details.usr_name;params.browser=navigator.userAgent;$http.get(ajax,{params:params}).then(function(response){deffered.resolve(response)});return deffered.promise},post:(ajax,req_params)=>{ajax=backend_url+ajax;var deffered=$q.defer();var params={};if(req_params!=undefined){params=req_params} params.token=Base64.encode(token);params.user=$rootScope.login.details.usr_name;params.browser=navigator.userAgent;$http.post(ajax,params).then(function(response){deffered.resolve(response)});return deffered.promise}}});app.factory('chartjs',function(){function shuffle(array){let currentIndex=array.length,randomIndex;while(currentIndex!=0){randomIndex=Math.floor(Math.random()*currentIndex);currentIndex--;[array[currentIndex],array[randomIndex]]=[array[randomIndex],array[currentIndex]]} return array} return{set_default:function(title,show_scale,stacked){var options={maintainAspectRatio:!0,responsive:!0,plugins:{labels:{render:'value',fontSize:12,position:'inside'}},title:{'display':!0,'text':title,fontColor:'black'},legend:{display:!0,position:'top',labels:{fontColor:'black'}},} if(show_scale){options.scales={yAxes:[{ticks:{beginAtZero:!0,fontColor:'black',stepSize:50},stacked:stacked}],xAxes:[{ticks:{beginAtZero:!0,fontColor:'black'},stacked:stacked}]}} return options},to_chart:function(params){var labels=[];var arr=[];if(params.series.length>0){angular.forEach(params.series,function(value,key){arr.push([])})} angular.forEach(params.list,function(value,key){angular.forEach(value,function(value2,key2){if(params.series.length>0){angular.forEach(params.series,function(value3,key3){if(key2==value3){arr[key3].push(value2)}});if(params.labels!=undefined&¶ms.labels.length>0){angular.forEach(params.labels,function(value4,key4){if(key2==value4){labels.push(value[key2])}})}else{if(key2==params.label){labels.push(value[key2])}}}else{if(params.column==key2){arr.push(value[key2])} if(params.labels!=undefined&¶ms.labels.length>0){angular.forEach(params.labels,function(value4,key4){if(key2==value4){labels.push(value[key2])}})}else{if(key2==params.label){labels.push(value[key2])}}}})});var options={maintainAspectRatio:!0,responsive:!0,interaction:{intersect:!1,},elements:{bar:{borderWidth:0,}},plugins:{colors:{forceOverride:!0},labels:{render:'value',fontSizex:12,color:'black',position:'inside',crossAlign:"far"},},title:{'display':!0,'text':params.title,fontColor:'black'},legend:{display:!0,position:'top',labels:{fontColor:'black'}},} if(params.type=='horizontalBar'||params.type=='bar'){params.show_scale=!0} if(params.show_scale){options.scales={yAxes:[{drawBorder:!1,ticks:{drawBorder:!1,beginAtZero:!0,fontColor:'black',stepSize:500,callback:function(label){return label},fontSizex:10},stacked:params.stacked}],xAxes:[{drawBorder:!1,ticks:{drawBorder:!1,beginAtZero:!0,fontColor:'black',stepSize:1},stacked:params.stacked}]}} var default_chart_colors=[];var tempColors=["#003f5c","#2f4b7c","#665191","#a05195","#d45087","#f95d6a","#ff7c43","#ffa600","#b30000","#7c1158","#4421af","#1a53ff","#0d88e6","#00b7c7","#5ad45a","#8be04e","#ebdc78","#e60049","#0bb4ff","#50e991","#e6d800","#9b19f5","#ffa300","#dc0ab4","#b3d4ff","#00bfa0","#ea5545","#f46a9b","#ef9b20","#edbf33","#ede15b","#bdcf32","#87bc45","#27aeef","#b33dc6",'#803690','#00ADF9','#DCDCDC','#46BFBD','#FDB45C','#949FB1','#4D5360'];if(params.type=='horizontalBar'||params.type=='bar'){angular.forEach(tempColors,function(value,key){default_chart_colors.push({borderWidth:0,fill:!0,backgroundColor:value})})}else{angular.forEach(tempColors,function(value,key){default_chart_colors.push(value)})} var colors=shuffle(default_chart_colors);if(params.colors!=undefined&¶ms.colors.length>0){} var datasetOverride=[];angular.forEach(arr,function(value,key){datasetOverride.push({borderWidth:0,})}) var ret={type:params.type,series:params.series,data:arr,labels:labels,colors:colors,options:options,};console.log(ret);return ret}}});app.factory('util',function(){return{dlAsExcel:function(id){const elem=document.createElement("a");var tab_text="";var textRange;var j=0;tab=document.getElementById(id);for(j=0;j"} tab_text=tab_text+"
";tab_text=tab_text.replace(/]*>|<\/A>/g,"");tab_text=tab_text.replace(/]*>/gi,"");tab_text=tab_text.replace(/]*>|<\/input>/gi,"");url='data:application/vnd.ms-excel,'+encodeURIComponent(tab_text);elem.setAttribute("href",url);elem.setAttribute("download","export.xls");elem.click();return!1},to_table:(params)=>{var cols=[];angular.forEach(params.list[0],function(value,key){if(params.col_replace!=undefined&¶ms.col_replace.length>0){var new_key=key angular.forEach(params.col_replace,function(value2,key2){if(key==value2.find){new_key=value2.replace}});cols.push({name:key,alias:new_key})}else{cols.push({name:key,alias:key})}});var ret={cols:cols,data:(params.list.length>0?params.list:[]),title:params.title} return ret},guidGenerator:()=>{var S4=function(){return(((1+Math.random())*0x10000)|0).toString(16).substring(1)};return(S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4())},getb64json:(string)=>{return JSON.parse(Base64.decode(string))},set_default_value:function(arr,find,compare){var ret;angular.forEach(arr,function(value,index){if(value[find]==compare){ret=value}});return ret},timeMinuteDifference:function(endDate,startDate){var difference=endDate.getTime()-startDate.getTime();difference=difference/60/1000;return difference},get_object_value:function(obj,prop,def_value){var ret=def_value;if(obj!==null){if(obj[prop]!=undefined){ret=obj[prop]}} return ret},Hex2ASCII:function(str1){var hex=str1.toString();var str='';for(var n=0;n3000){$rootScope.systemSlow=!0;toast.warning("System is experiencing slow response due to high traffic. Please try again later.")}else{$rootScope.systemSlow=!1} return response},responseError:function(rejection){$rootScope.systemSlow=!0;return $q.reject(rejection)}}});app.factory('toast',function(){const toast=Swal.mixin({toast:!0,position:'top-end',showConfirmButton:!1,timer:3000,timerProgressBar:!0,showCloseButton:!0,didOpen:function(toastEl){toastEl.onmouseenter=Swal.stopTimer;toastEl.onmouseleave=Swal.resumeTimer}});return{success:function(message){toast.fire({icon:'success',title:message})},error:function(message){toast.fire({icon:'error',title:message})},warning:function(message){toast.fire({icon:'warning',title:message})},info:function(message){toast.fire({icon:'info',text:message,timer:10000,customClass:{popup:'swal2-toast-text-top'},})}}});app.factory('Excel',function($window){var uri='data:application/vnd.ms-excel;base64,',template='{table}
',base64=function(s){return $window.btoa(unescape(encodeURIComponent(s)))},format=function(s,c){return s.replace(/{(\w+)}/g,function(m,p){return c[p]})};return{tableToExcel:function(tableId,worksheetName){var table=$(tableId),ctx={worksheet:worksheetName,table:table.html()},href=uri+base64(format(template,ctx));return href}}});app.factory('browser',function(){os=function(){var OSName="Unknown OS";if(navigator.appVersion.indexOf("Win")!=-1)OSName="Windows";if(navigator.appVersion.indexOf("Mac")!=-1)OSName="MacOS";if(navigator.appVersion.indexOf("X11")!=-1)OSName="UNIX";if(navigator.appVersion.indexOf("Linux")!=-1)OSName="Linux";return OSName} return{os:os}});app.filter('titleCase',function(){return function(input){if(!input)return'';return input.toLowerCase().split(' ').map(word=>word.charAt(0).toUpperCase()+word.slice(1)).join(' ')}});app.filter('rawHtml2',['$sce',function($sce){return function(val){return $sce.trustAsHtml(val)}}]);app.filter('rawHtml',['$sce',function($sce){return function(val){try{if(val.length==0||val==undefined||val==null){return} var urls=/(^|[^\/])(www\.[\S]+(\b|$))/gim var emails2=/(\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,6})/gim var emails3=/(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/ var emails=/(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/;var text=val;if(val.match(urls)){text=val.replace(urls,' $2')} if(text.match(emails)){} return $sce.trustAsHtml(text)}catch(error){return $sce.trustAsHtml('')}}}]);app.filter('linkyWithHtml',function($filter){return function(value){var linked=$filter('linky')(value);var replaced=linked.replace(/\>/g,'>').replace(/\</g,'<');return replaced}});app.filter('strip',function(){return function(html){var tmp=document.createElement("DIV");tmp.innerHTML=html;return tmp.textContent||tmp.innerText||""}});app.filter('range',function(){return function(input,total){total=parseInt(total);for(var i=0;i0){return input.split(splitChar)[splitIndex]}}}});app.directive('fileModel',function($parse){return{restrict:'A',link:function(scope,element,attrs){var model=$parse(attrs.fileModel);element.bind('change',function(){scope.$apply(function(){model.assign(scope,element[0].files[0])})})}}});app.directive('popover',function($compile){return{restrict:'A',link:function(scope,elem){var content=$("#popover-content").html();var compileContent=$compile(content)(scope);var title=$("#popover-head").html();var options={content:compileContent,html:!0,title:title};$(elem).popover(options)}}});app.directive('compile',['$compile',function($compile){return function(scope,element,attrs){scope.$watch(attrs.compile,function(html){element.html(html);$compile(element.contents())(scope)})}}]) app.directive("selectNgFiles",function(){return{require:"ngModel",link:function postLink(scope,elem,attrs,ngModel){elem.on("change",function(e){var files=elem[0].files;ngModel.$setViewValue(files)})}}});app.directive('datepicker2',function($filter){return{restrict:'A',require:'ngModel',link:function(scope,element,attrs,ngModel){if(!ngModel)return;ngModel.$render=function(){element.datepicker('setValue',ngModel.$viewValue||'')};element.datepicker().on("changeDate",function(event){scope.$apply(function(){var new_date=$filter('date')(event.date,'MM-dd-yyyy');ngModel.$setViewValue(new_date)})})}}});app.directive('datepicker',function(){return{scope:{date:'='},link:function(scope,element,attr){jQuery(element[0]).datepicker({setDate:today,format:'mm/dd/yyyy',autoclose:!0,todayHighlight:!0,onSelect:function(date){scope.$apply(function(){scope.date=date})}})}}});app.directive('errSrc',function(){return{link:function(scope,element,attrs){scope.$watch(function(){return attrs.ngSrc},function(value){if(!value){element.attr('src',attrs.errSrc)}});element.bind('error',function(){element.attr('src',attrs.errSrc)})}}});app.directive('dropdownToggle',['$document','$location',function($document,$location){var openElement=null,closeMenu=angular.noop;return{restrict:'CA',link:function(scope,element,attrs){scope.$watch('$location.path',function(){closeMenu()});element.parent().bind('click',function(){closeMenu()});element.bind('click',function(event){var elementWasOpen=(element===openElement);event.preventDefault();event.stopPropagation();if(!!openElement){closeMenu()} if(!elementWasOpen&&!element.hasClass('disabled')&&!element.prop('disabled')){element.parent().addClass('open');openElement=element;closeMenu=function(event){if(event){event.preventDefault();event.stopPropagation()} $document.unbind('click',closeMenu);element.parent().removeClass('open');closeMenu=angular.noop;openElement=null};$document.bind('click',closeMenu)}})}}}]);angular.module('app').component('appHeader',{templateUrl:'pages/page.header.php',controller:function(auth){$('.toggle-sidebar-btn').click(function(){var el=angular.element(document.querySelector('body'));if(el.hasClass('toggle-sidebar')){el.removeClass('toggle-sidebar')}else{el.addClass('toggle-sidebar')}})}});angular.module('app').component('appSidebar',{templateUrl:'pages/page.sidebar.php',controller:function(){}});angular.module('app').component('systemAdvisory',{templateUrl:'pages/com.system-advisory.html',controller:function(){}});const d=new Date();let time=d.getTime();angular.module('app').component('acadFilter',{templateUrl:'pages/com.acad-filter.html?'+time,controllerAs:'vm',transclude:!0,controller:function(util,query,$q,fetch,$rootScope){var ctrl=this;var dlg={};ctrl.listing={schoolyear:['2025-2026','2024-2025','2023-2024','2022-2023','2021-2022','2020-2021','2019-2020'],semester:['FIRST','SECOND','SUMMER'],campuses:[],colleges:[],programs:[],majors:[],yearlevels:['FIRST','SECOND','THIRD','FOURTH','FIFTH'],class_sections:[]} ctrl.filter={schoolyear:'',semester:'',campus:{},college:{},program:{},major:{},yearlevel:'',status:'',srcode:'',} ctrl.fetch_colleges=(campus)=>{console.log('-->',campus) fetch.colleges({campus:campus,filter:1}).then(function(result){ctrl.listing.colleges=result;console.log(result)})} ctrl.fetch_programs=(college)=>{fetch.programs({college:college}).then(function(result){ctrl.listing.programs=result;console.log(result)})} ctrl.fetch_majors=(program)=>{fetch.majors({program:program}).then(function(result){ctrl.listing.majors=result;console.log(result)})} ctrl.$onInit=function(){ctrl.guid=util.guidGenerator();fetch.campuses().then(function(result){ctrl.listing.campuses=result})} ctrl.show_filter=function(){console.log(ctrl.defaults);ctrl.filter.schoolyear=ctrl.defaults.schoolyear;ctrl.filter.semester=ctrl.defaults.semester;try{if(ctrl.defaults.campus.campus!=undefined){ctrl.filter.campus=util.set_default_value(ctrl.listing.campuses,'campus',ctrl.defaults.campus.campus)}else{ctrl.filter.campus=util.set_default_value(ctrl.listing.campuses,'campus',$rootScope.login.details.usr_campus) fetch.colleges({campus:ctrl.filter.campus.campus,filter:1}).then(function(result){ctrl.listing.colleges=result;ctrl.filter.college=util.set_default_value(ctrl.listing.colleges,'collegecode',$rootScope.login.details.usr_college) if(ctrl.filter.college!=undefined){ctrl.fetch_programs(ctrl.filter.college.collegecode)}})}}catch(error){} try{console.log("1");ctrl.filter.college=util.set_default_value(ctrl.listing.colleges,'collegecode',ctrl.defaults.college.collegecode);ctrl.fetch_programs(ctrl.filter.college.collegecode)}catch(error){} ctrl.filter.yearlevel=ctrl.defaults.yearlevel;var id="dlg_acad_filter_"+ctrl.guid;dlg=new bootstrap.Modal(document.getElementById(id),{keyboard:!1,backdrop:'static'});dlg.show()} ctrl.srcode_selected=(data)=>{console.log(data);ctrl.filter.srcode=data.srcode} ctrl.done=function(){if(!ctrl.config.college){ctrl.filter.college={}} var data=angular.copy(ctrl.filter);if(ctrl.callback){dlg.hide();ctrl.callback({data})}}},bindings:{disabled:'<',config:'<',defaults:'<',callback:'&',}});angular.module('app').component('clientAuth',{templateUrl:'pages/com.client-auth.html?'+time,controllerAs:'vm',controller:function(authStudent,authEmployee,util){var ctrl=this;ctrl.credentials={username:'22-08942',password:'',authAs:'STUDENT'} ctrl.pass_attr='password';var dlg={};ctrl.$onInit=function(){ctrl.guid=util.guidGenerator()} ctrl.show_password=()=>{ctrl.pass_attr=ctrl.pass_attr=="password"?"text":"password"} ctrl.check_credentials=()=>{let err=0;if(ctrl.credentials.username.length==0){err++} if(ctrl.credentials.password.length==0){err++} return err==0?true:!1} ctrl.show_login=()=>{var id="dlg_login_"+ctrl.guid;dlg=new bootstrap.Modal(document.getElementById(id),{keyboard:!1,backdrop:'static'});dlg.show()} ctrl.authenticate=()=>{if(ctrl.credentials.authAs=='STUDENT'){authStudent.authenticate(ctrl.credentials).then(function(result){var data=result.data;data.authAs='STUDENT';if(ctrl.callback){ctrl.callback({data})} dlg.hide()})}else if(ctrl.credentials.authAs=='EMPLOYEE'){authEmployee.authenticate(ctrl.credentials).then(function(result){var data=result.data;data.authAs='EMPLOYEE';if(ctrl.callback){ctrl.callback({data})} dlg.hide()})}else{}}},bindings:{callback:'&',ngDisabled:'<',enableEmployee:'<'}});angular.module('app').component('enrollmentProcedure2026',{templateUrl:'pages/com.enrollment-procedure-2026.html?'+time,controllerAs:'vm',transclude:!0,controller:function(util,$q,admission){var ctrl=this;ctrl.admission_policy={};ctrl.is_fetching=!1;var dlg={};ctrl.$onInit=function(){ctrl.guid=util.guidGenerator()} const box=document.getElementById('scrollBox');const btn=document.getElementById('agreeBtn');box.addEventListener('scroll',function(){console.log(box.scrollTop+box.clientHeight,box.scrollHeight);if(box.scrollTop+box.clientHeight+1>=box.scrollHeight){btn.disabled=!1}})},bindings:{callback:'&',}});angular.module('app').component('admissionPolicy',{templateUrl:'pages/com.admission-policy.html?'+time,controllerAs:'vm',transclude:!0,controller:function(util,$q,admission){var ctrl=this;ctrl.admission_policy={};ctrl.is_fetching=!1;var dlg={};ctrl.$onInit=function(){ctrl.guid=util.guidGenerator()} ctrl.show=function(){admission.fetch.admission_policy().then((result)=>{ctrl.admission_policy=result.value;var id="dlg_admission_policy_"+ctrl.guid;document.body.appendChild(document.getElementById(id));dlg=new bootstrap.Modal(document.getElementById(id),{keyboard:!1,backdrop:'static'});dlg.show()})}},bindings:{callback:'&',}});angular.module('app').component('studentSearch',{templateUrl:'pages/com.search-student.html?'+time,controllerAs:'vm',transclude:!0,controller:function(util,query,$q,enrollment){var ctrl=this;ctrl.filter={search_keys:""} ctrl.result={};ctrl.is_fetching=!1;var dlg={};ctrl.$onInit=function(){ctrl.guid=util.guidGenerator()} ctrl.open=function(){var id="dlg_student_search_"+ctrl.guid;dlg=new bootstrap.Modal(document.getElementById(id),{keyboard:!1,backdrop:'static'});dlg.show()} ctrl.search=function(){ctrl.is_fetching=!0;enrollment.find_students(ctrl.filter).then(function(result){console.log(result);ctrl.result=result;ctrl.is_fetching=!1})} ctrl.select=function(g){var data=angular.copy(g);if(ctrl.callback){dlg.hide();ctrl.callback({data})}}},bindings:{callback:'&',}});angular.module('app').component('applicationStudentScholarship',{templateUrl:'pages/com.application.student-scholarship.php.html?'+time,scope:{},controllerAs:'vm',controller:function(chartjs,util,$scope,fetch,$q){var ctrl=this;ctrl.listing={sex:['Male','Female'],birth_order:['First Born','Middle Born','Last Born'],civil_status:['Single','Married'],hs_type:['Public','Private'],school:['Undergraduate','Graduate School','Integrated/Laboratory School'],living_arrangement:['Living with Parents','Living with relatives','Boarding House','Apartment','Owned house','Others'],transport_means:['Public Transportation','Own Vehicle','School Service','Others'],family_form:['Living together','Permanently Separated','Legally separated/marriage annulled','Mother with another partner','Father with another partner','Temporary separated'],family_monthly_income:['Less than P10,957','Greater than or equal to P10,957 but less than P21,194','Greater than or equal to P21,194 but less than P43,828','Greater than or equal to P43,828 but less than P76,669','Greater than or equal to P76,669 but less than P131,484','Greater than or equal to P131,484 but less than P219,140','Greater than or equal to P219,140'],regions:[],provinces:[]} ctrl.form={data:{srcode:'',lastname:'',firstname:'',middlename:'',birth_order:'',email:'',telephonenumber:''}} String.prototype.toProperCase=function(){return this.replace(/\w\S*/g,function(txt){return txt.charAt(0).toUpperCase()+txt.substr(1).toLowerCase()})};ctrl.fetch_citymun() ctrl.$onInit=function(){$q.all([fetch.provinces().then(function(result){console.log(result);ctrl.listing.provinces=result})]).then(function(data){ctrl.guid=util.guidGenerator();ctrl.form.data.srcode=ctrl.clientInfo.srcode;ctrl.form.data.lastname=ctrl.clientInfo.lastname;ctrl.form.data.firstname=ctrl.clientInfo.firstname;ctrl.form.data.middlename=ctrl.clientInfo.middlename;ctrl.form.data.sex=ctrl.clientInfo.sex.toProperCase();ctrl.form.data.birthdate=new Date(ctrl.clientInfo.birthdate);ctrl.form.data.email=ctrl.clientInfo.email;ctrl.form.data.telephone=ctrl.clientInfo.telephonenumber})}},bindings:{callback:'&',clientInfo:'<'}});app.service('csvExportService',[function(){this.downloadCSV=function(dataArray,filename='data.csv'){if(!Array.isArray(dataArray)||dataArray.length===0){console.warn('No data to export');return} const keys=Object.keys(dataArray[0]);const csvRows=[];csvRows.push(keys.join(','));dataArray.forEach(row=>{const values=keys.map(key=>{const escaped=(''+row[key]).replace(/"/g,'""');return `"${escaped}"`});csvRows.push(values.join(','))});const csvContent='\uFEFF'+csvRows.join('\n');const blob=new Blob([csvContent],{type:'text/csv;charset=utf-8;'});const url=window.URL.createObjectURL(blob);const a=document.createElement('a');a.href=url;a.download=filename;document.body.appendChild(a);a.click();document.body.removeChild(a);window.URL.revokeObjectURL(url)}}]);var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(e){var t="";var n,r,i,s,o,u,a;var f=0;e=Base64._utf8_encode(e);while(f>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},decode:function(e){var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(f>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+String.fromCharCode(n);if(u!=64){t=t+String.fromCharCode(r)}if(a!=64){t=t+String.fromCharCode(i)}}t=Base64._utf8_decode(t);return t},_utf8_encode:function(e){e=e.replace(/\r\n/g,"\n");var t="";for(var n=0;n127&&r<2048){t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t},_utf8_decode:function(e){var t="";var n=0;var r=c1=c2=0;while(n191&&r<224){c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6|c2&63);n+=2}else{c2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);n+=3}}return t}} app.controller('BaseController',function($scope,$rootScope,$http,query,$location,$routeParams,$q,util,auth,md5,$interval,gRecaptcha){$scope.pass_attr="password";$scope.togglePassword=()=>{$scope.pass_attr=$scope.pass_attr=="password"?"text":"password"} $scope.check_credentials=()=>{let err=0;if($rootScope.login.credentials.username.length==0){err++} if($rootScope.login.credentials.password==undefined){err++} if($rootScope.login.credentials.password!=undefined&&$rootScope.login.credentials.password.length==0){err++} return err==0?true:!1} $scope.check_console=function(){var ret=!1;if(window.console){ret=!0;console.log('****************************************');console.log('* (c)Batangas State University *');console.log('****************************************');console.log('Local IP:'+$rootScope.system.localip);console.log('Public IP :'+ipaddress);console.log('Browser Information:');console.log(navigator)}} $scope.gRecaptchaResponse="";$rootScope.login.credentials.username="";$rootScope.login.credentials.password="";$rootScope.login.credentials.remember=!1;if($rootScope.login.credentials.remember){$rootScope.login.credentials.username=$cookies.get('username');$rootScope.login.credentials.password=$cookies.get('password')} $scope.is_processing=!1;$scope.authenticate=function(){$scope.is_processing=!0;gRecaptcha.initialize({key:'6LeF0eMpAAAAAF22kAejPj-ALtczNJGyqrJju9Wk'}).then(function(){gRecaptcha.execute({action:'login'}).then(function(token){var credentials={username:$rootScope.login.credentials.username,password:$rootScope.login.credentials.password,recaptcha_token:token} var promise=auth.authenticate(credentials,"/dashboard");promise.then(function(result){$scope.is_processing=!1;if(!result.success){Swal.fire({title:"Error",text:result.message,icon:"error"});$rootScope.login.credentials.username="";$rootScope.login.credentials.password=""}else{$rootScope.idleTime=0}})})})} $scope.printDiv=function(divID){var printContents=document.getElementById(divID).innerHTML;var popupWin=window.open('','_blank');popupWin.document.open();popupWin.document.write(''+' '+' '+' '+' '+' '+' '+printContents+'');popupWin.document.close()} $scope.defaults={};$scope.fetch_data=function(service,params){var deffered=$q.defer();var promise=query.post($scope.backend_url+'/'+service,params);promise.then(function(result){deffered.resolve(result)});return deffered.promise} $q.all([]).then(function(data){})});app.controller('DashboardController',function($scope,$controller,$rootScope,$parse,$http,query,$location,$routeParams,$q,util,$window,auth,$interval,$timeout,fetch,csvExportService,jwt,admission,admissionCheck,toast,appointment){angular.extend(this,$controller('BaseController',{$scope:$scope}));let path=$location.path();$rootScope.application_details={};$rootScope.admission_defaults={};$rootScope.admission_result={};$rootScope.qualifier={};$scope.is_fetching_application=!0;$scope.fetching_documents=!1;$rootScope.preregistration_confirmed=!1;admission.fetch.application().then((result)=>{$rootScope.application_details=result;$rootScope.application_details.documents=[];$rootScope.application_details.deficiencies=[];admission.fetch.deficiencies().then((result2)=>{$rootScope.application_details.deficiencies=result2});if(path=='/dashboard/submitted-documents'){$scope.fething_documents=!0;admission.fetch.application_files().then((result2)=>{$rootScope.application_details.documents=result2;$scope.fething_documents=!1})} $scope.is_fetching_application=!1});$scope.prereg_allowed=!1;$scope.is_prereg_checking=!1;$scope.appointment={listing:{pre_enrollment:[]}} $timeout(function(){$rootScope.admission_defaults=admissionCheck.defaults;$rootScope.admission_result=admissionCheck.result;if(!$rootScope.admission_defaults.enable_admission_result){$rootScope.admission_result.allow_appeal=!1;$rootScope.admission_result.qualifier=!1} if(path=='/dashboard/admission-appeal'){$scope.appeal.show_status()} if(path=='/dashboard/admission-result'){if($rootScope.admission_result.qualifier){Swal.fire({title:"",icon:"info",html:`

After viewing your "Notice of Admission", Don't forget to click the "Pre-registration" to confirm your slot.

`,showCloseButton:!0,}).then(()=>{window.open($rootScope.admission_result.result_url,'_blank','noopener,noreferrer')})}} if(path=='/dashboard/appointment'){appointment.fetch.pre_enrollment().then((result)=>{console.log(result);$scope.appointment.listing.pre_enrollment=result})} if(path=='/dashboard/pre-registration'){admission.qualifier.fetch_data().then((data)=>{$rootScope.qualifier=data;let params={campus:$rootScope.qualifier.data.campus,college:$rootScope.qualifier.data.college,program:$rootScope.qualifier.data.program_code} $scope.is_prereg_checking=!0;admission.interview.check(params).then((result)=>{$scope.is_prereg_checking=!1;if(result.ok=='YES'){if($rootScope.qualifier.allow_preregistration){$scope.prereg_allowed=!0;let msg="Enrollment is strictly on a first-come, first-served basis. Applicants are encouraged to complete the enrollment process as soon as possible to fully secure the slot of the program offered.";Swal.fire("",msg,"info")}else{}}else{Swal.fire("FOR INTERVIEW","You are qualified for a program that requires an interview. Kindly contact the Testing and Admission Office of your campus for assistance.","error").then((result)=>{$timeout(function(){$location.path('/dashboard')})})}})})} if($rootScope.admission_result.qualifier){if(path=='/dashboard'){$scope.enrollment_procedure.show()} admission.qualifier.fetch_data().then((data)=>{$rootScope.qualifier=data});$scope.preregistration.fetch()}});var popoverTriggerList=[].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]')) var popoverList=popoverTriggerList.map(function(popoverTriggerEl){return new bootstrap.Popover(popoverTriggerEl)}) $scope.filing_centers=['MAIN','LIPA','MALVAR','NASUGBU'];$scope.contactus={email:[{campus:'Pablo Borbon',email:'tao.pb@g.batstate-u.edu.ph',telno:''},{campus:'Alangilan',email:'tao.alangilan@g.batstate-u.edu.ph',telno:''},{campus:'Lipa',email:'tao.lipa@g.batstate-u.edu.ph',telno:''},{campus:'JPLPC-Malvar',email:'tao.malvar@g.batstate-u.edu.ph',telno:''},{campus:'ARASOF-Nasugbu',email:'tao.nasugbu@g.batstate-u.edu.ph',telno:''},{campus:'Balayan',email:'tao.balayan@g.batstate-u.edu.ph',telno:''},{campus:'Rosario',email:'tao.rosario@g.batstate-u.edu.ph',telno:''},{campus:'San Juan',email:'tao.sanjuan@g.batstate-u.edu.ph',telno:''},]} $scope.listing={} $scope.enrollment_procedure={show:()=>{var dlg=new bootstrap.Modal(document.getElementById("dlgEnrollmentProcedure"),{keyboard:!1,backdrop:'static'});dlg.show()}} $scope.appeal_procedure={show:()=>{var dlg=new bootstrap.Modal(document.getElementById("dlgAppealProcedure"),{keyboard:!1,backdrop:'static'});dlg.show()}} $scope.items=['Disadvantaged/ Marginalized','Proximity of residence to the campus during schooling','Error in encoding of grades/track/strand in the application form','Program recommended by the University does not align with the student’s interests or abilities','Other reason'];$scope.onType=function(){var val=($scope.appeal.data.reason||'').toLowerCase();$scope.filtered=$scope.items.filter(function(item){return item.toLowerCase().indexOf(val)!==-1})};$scope.select=function(item){$scope.appeal.data.reason=item;$scope.showList=!1};$scope.appeal={listing:{category:['Did not Meet the Program Quota (Non-Qualifier)','Absent on the Scheduled Examination (Absentee)','Evaluated but not Approved for Examination (with Incomplete Requirements)','No Online Application',],type:[{catIndex:0,desc:'To APPLY to programs with available slots, aligned with the provisions of the College Admission Policy'},{catIndex:1,desc:'To TAKE the examination and to APPLY to programs with available slots, aligned with the provisions of the College Admission Policy'},{catIndex:2,desc:'To SUBMIT the complete requirements, to TAKE the examination, and to APPLY to programs with available slots, aligned with the provisions of the College Admission Policy'},{catIndex:3,desc:'To SUBMIT an online application with complete requirements, to TAKE the examination, and to APPLY to programs with available slots, aligned with the provisions of the College Admission Policy'},],req:[{catIndex:0,attachments:['Letter of Appeal','Supporting Documents based on the “Reason of Request”']},{catIndex:1,attachments:['Letter of Appeal','Complete documentary requirements','Supporting Documents based on the “Reason of Request”']},{catIndex:2,attachments:['Letter of Appeal','Complete documentary requirements','Supporting Documents based on the “Reason of Request”']},{catIndex:3,attachments:['Letter of Appeal','Complete documentary requirements','Supporting Documents based on the “Reason of Request”']},]},data:{category:'',type:{},reason:'',attachment:{}},result:{},show_confirm:()=>{var dlg=new bootstrap.Modal(document.getElementById("dlgAdmissionAppealConfirm"),{keyboard:!1,backdrop:'static'});dlg.show()},show_process:()=>{var dlg=new bootstrap.Modal(document.getElementById("dlgAdmissionAppeal"),{keyboard:!1,backdrop:'static'});dlg.show()},show_status:()=>{if($rootScope.admission_result.qualifier){Swal.fire("For Non Qualifier Only","","error");return} let data={};admission.appeal.check().then(function(result){$scope.appeal.result=result;if(result){var declined=0;if(result.declined==1){declined++} angular.forEach(result,function(v,k){});if(declined>0){Swal.fire("","You have already declined to appeal.","warning")}else{var dlg=new bootstrap.Modal(document.getElementById("dlgAdmissionAppealStatus"),{keyboard:!1,backdrop:'static'});dlg.show()}}})},indexfilter:(category)=>{var catIndex=$scope.appeal.listing.category.indexOf(category);return function(data){return data.catIndex===catIndex}},check:()=>{let err=0;if($scope.appeal.data.category.length==0){err++} if($scope.appeal.data.type.catIndex==undefined){err++} if($scope.appeal.data.type.length==0){err++} if($scope.appeal.data.reason.length==0){err++} if($scope.appeal.data.attachment==undefined){err++} if($scope.appeal.data.attachment.length==0){err++} if($scope.appeal.data.attachment.filename==undefined){err++} return err==0?true:!1},submit:()=>{console.log($scope.appeal.data);let data=angular.copy($scope.appeal.data);Swal.fire({title:"Confirm",text:"Submit Appeal?",allowOutsideClick:!1,allowEscapeKey:!1,allowEnterKey:!1,showCancelButton:!0,confirmButtonColor:"#3085d6",cancelButtonColor:"#d33",cancelButtonText:"No",confirmButtonText:"Yes",reverseButtons:!0,showLoaderOnConfirm:!0,preConfirm:()=>{return admission.appeal.submit(data)},}).then((result)=>{if(result.isConfirmed){Swal.disableButtons() Swal.fire({title:"YOU HAVE SUCCESSFULLY SUBMITTED YOUR ADMISSIONS APPEAL.",icon:"info",html:`

Please allow time for the evaluation and validation of your request. Due to the volume of applicants, we kindly ask for your patience as all appeals are being carefully reviewed. Updates will be posted on this portal, so we encourage you to monitor it regularly.

Please note that the approval of your appeal is subject to the final decision of the Appeals Committee.

`,showCloseButton:!0,});$('#dlgAdmissionAppeal').modal('hide');$('#dlgAdmissionAppealConfirm').modal('hide');$timeout(function(){$rootScope.admission_result.with_appeal=!0})}})},decline:()=>{let data=angular.copy($scope.appeal.data);Swal.fire({title:"Confirm",text:"Decline Appeal?",allowOutsideClick:!1,allowEscapeKey:!1,allowEnterKey:!1,showCancelButton:!0,confirmButtonColor:"#3085d6",cancelButtonColor:"#d33",cancelButtonText:"No",confirmButtonText:"Yes",reverseButtons:!0,showLoaderOnConfirm:!0,preConfirm:()=>{return admission.appeal.decline(data)},}).then((result)=>{if(result.isConfirmed){Swal.disableButtons() Swal.fire("Declined","","success");$('#dlgAdmissionAppealConfirm').modal('hide');$timeout(function(){$rootScope.admission_result.with_appeal=!0})}})}} if(document.getElementById("attachment")){document.getElementById('attachment').addEventListener('change',handleFileSelect,!1);function handleFileSelect(evt){var files=evt.target.files;var reader=new FileReader();reader.onloadend=function(e){console.log("trig");var size=document.getElementById('attachment').files[0].size/1024/1024;var ext=document.getElementById('attachment').files[0].name.split('.').pop().toLowerCase();var max_size=10;if(Math.floor(size)>max_size){Swal.fire("Error","Maximum of "+max_size+" MB per file","error");return} var allowed_ext=["pdf"];if(!allowed_ext.includes(ext)){Swal.fire("Error","File type is not allowed","error");return} let file_info={filename:document.getElementById('attachment').files[0].name,type:ext,size:size,data:e.target.result} $scope.appeal.data.attachment=file_info;$scope.$apply();console.log(file_info)} reader.readAsDataURL(files[0])}} $scope.selectedFile=null;$scope.fileSelected=function(input){$scope.$apply(function(){$scope.selectedFile=input.files[0]})};$scope.appellant={new_attachment:{},details:{data:{attachment:{}}},show_resubmit_attachment:()=>{document.getElementById('resubmit_attachment').addEventListener('change',handleFileSelect,!1);function handleFileSelect(evt){var files=evt.target.files;var reader=new FileReader();reader.onloadend=function(e){var size=document.getElementById('resubmit_attachment').files[0].size/1024/1024;var max_size=10;if(Math.floor(size)>max_size){Swal.fire("Error","Maximum of "+max_size+" MB per file","error");$scope.$apply(function(){$scope.selectedFile=null});return} var allowed_ext=["pdf"];let ext=document.getElementById('resubmit_attachment').files[0].name.split('.').pop().toLowerCase();if(!allowed_ext.includes(ext)){Swal.fire("Error","File type is not allowed","error");$scope.$apply(function(){$scope.selectedFile=null});return} let file_info={filename:document.getElementById('resubmit_attachment').files[0].name,type:ext,size:size,data:e.target.result} $scope.appellant.new_attachment=file_info;$scope.$apply();console.log(file_info)} reader.readAsDataURL(files[0])} var dlg=new bootstrap.Modal(document.getElementById("dlgresubmit_attachment"),{keyboard:!1,backdrop:'static'});dlg.show()},resubmit_attachment:()=>{let endpoint='data/appeal/re-submit-attachment';let data=angular.copy($scope.appellant.details);data.attachment=angular.copy($scope.appellant.new_attachment);Swal.fire({title:"Confirm",text:"Update attachment?",allowOutsideClick:!1,allowEscapeKey:!1,allowEnterKey:!1,showCancelButton:!0,confirmButtonColor:"#3085d6",cancelButtonColor:"#d33",cancelButtonText:"No",confirmButtonText:"Yes",reverseButtons:!0,showLoaderOnConfirm:!0,preConfirm:()=>{Swal.disableButtons();return query.post(endpoint,data)},}).then((result)=>{if(result.isConfirmed){Swal.disableButtons() Swal.fire({title:"Done",text:"Updated",icon:"success"});$('#dlgresubmit_attachment').modal('hide');admission.appeal.check().then(function(result){$scope.appeal.result=result})}})},} $scope.preregistration={confirmed:!1,confirm:function(){if(!$rootScope.admission_result.qualifier){Swal.fire("Only admission qualifier is allowed","","error");return} Swal.fire({title:"Confirm",text:"Confirm Pre-registration?",allowOutsideClick:!1,allowEscapeKey:!1,allowEnterKey:!1,showCancelButton:!0,confirmButtonColor:"#3085d6",cancelButtonColor:"#d33",cancelButtonText:"No",confirmButtonText:"Yes",reverseButtons:!0,showLoaderOnConfirm:!0}).then((result)=>{if(result.isConfirmed){Swal.disableButtons() admission.qualifier.preregistration.confirm().then((result)=>{$scope.preregistration.fetch().then((result2)=>{$scope.preregistration.confirmed=!0;Swal.fire("Pre-registration Confirmed. Thank You")})})}})},cancel:function(){Swal.fire({title:"Confirm",text:"Cancel Pre-registration?",type:"warning",showCancelButton:!0,confirmButtonColor:"#5cb85c",confirmButtonText:"Yes",closeOnConfirm:!1,showLoaderOnConfirm:!0,onOpen:function(){swal.disableConfirmButton()}},function(){return admission.qualifier.preregistration.cancel().then((result)=>{$scope.preregistration.fetch().then((result2)=>{Swal.fire("Pre-registration Cancelled. Thank You")})})})},fetch:function(){return admission.qualifier.preregistration.check().then((result)=>{$scope.preregistration.confirmed=result.confirmed;$rootScope.preregistration_confirmed=result.confirmed})},} $scope.defaults={};$q.all([]).then(function(data){})});app.controller('DefaultController',function($scope,$controller,$rootScope,$http,query,$location,$routeParams,$q,util,auth,$interval){angular.extend(this,$controller('BaseController',{$scope:$scope}));if($location.path()=="/"){document.addEventListener("contextmenu",function(e){e.preventDefault();swal("Batangas State University","Online Document Request")},!1)} var navListItems=$('div.setup-panel div a'),allWells=$('.setup-content'),allNextBtn=$('.nextBtn'),allPrevBtn=$('.prevBtn');allWells.hide();var empty_signature="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAjgAAADcCAQAAADXNhPAAAACIklEQVR42u3UIQEAAAzDsM+/6UsYG0okFDQHMBIJAMMBDAfAcADDATAcwHAAwwEwHMBwAAwHMBzAcAAMBzAcAMMBDAcwHADDAQwHwHAAwwEMB8BwAMMBMBzAcADDATAcwHAADAcwHADDAQwHMBwAwwEMB8BwAMMBDAfAcADDATAcwHAAwwEwHMBwAAwHMBzAcAAMBzAcAMMBDAcwHADDAQwHwHAAwwEwHMBwAMMBMBzAcAAMBzAcwHAADAcwHADDAQwHMBwAwwEMB8BwAMMBDAfAcADDATAcwHAAwwEwHMBwAAwHMBzAcCQADAcwHADDAQwHwHAAwwEMB8BwAMMBMBzAcADDATAcwHAADAcwHMBwAAwHMBwAwwEMBzAcAMMBDAfAcADDAQwHwHAAwwEwHMBwAAwHMBzAcAAMBzAcAMMBDAcwHADDAQwHwHAAwwEMB8BwAMMBMBzAcADDATAcwHAADAcwHMBwAAwHMBwAwwEMB8BwAMMBDAfAcADDATAcwHAAwwEwHMBwAAwHMBzAcAAMBzAcAMMBDAcwHADDAQwHwHAAwwEMB8BwAMMBMBzAcADDkQAwHMBwAAwHMBwAwwEMBzAcAMMBDAfAcADDAQwHwHAAwwEwHMBwAMMBMBzAcAAMBzAcwHAADAcwHADDAQwHMBwAwwEMB8BwAMMBMBzAcADDATAcwHAADAcwHMBwAAwHMBwAwwEMBzAcAMMBDAegeayZAN3dLgwnAAAAAElFTkSuQmCC";navListItems.click(function(e){e.preventDefault();var $target=$($(this).attr('href')),$item=$(this);if(!$item.hasClass('disabled')){navListItems.removeClass('btn-success').addClass('btn-light');$item.removeClass('btn-light');$item.removeClass('border-warning');$item.addClass('btn-success');allWells.hide();$target.show();$target.find('input:eq(0)').focus()}});allPrevBtn.click(function(){var curStep=$(this).closest(".setup-content"),curStepBtn=curStep.attr("id"),prevStepWizard=$('div.setup-panel div a[href="#'+curStepBtn+'"]').parent().prev().children("a");prevStepWizard.removeAttr('disabled').trigger('click')});allNextBtn.click(function(){var curStep=$(this).closest(".setup-content"),curStepBtn=curStep.attr("id"),nextStepWizard=$('div.setup-panel div a[href="#'+curStepBtn+'"]').parent().next().children("a"),curInputs=curStep.find("select, input,textarea"),isValid=!0;for(var i=0;i0?true:!1},clear:function(){this.data.docs=[];this.cert_type=util.set_default_value($scope.listing.certs,'code',' ');this.data.srcode="";this.data.fullname="";this.data.year_graduated="";this.data.telno="";this.data.email="";this.data.orno="";this.data.cert_type="";this.data.program="";this.data.major="";this.data.purposes="";this.data.requested_by_name="";this.data.requested_by_address="";this.data.requested_by_relation="";this.data.office=util.set_default_value($scope.listing.offices,'code','REGISTRAR_MAIN')},submit:function(){var signature=$scope.accept();$scope.request.data.signature=signature.dataUrl;if(signature.dataUrl==undefined||signature.dataUrl==empty_signature){swal("Error","No signature or signature error, please try again","error");return} if(this.has_cert()){if($scope.request.data.cert_type.code==undefined){swal("Error","Please select type of certification","error");return}} var data=angular.copy($scope.request.data);data.docs=[];angular.forEach($scope.listing.office_docs,function(value,key){if(value.checked){data.docs.push(value)}});if(data.docs.length==0){swal("Error","No document selected","error");return} swal({title:"Confirm",text:"Submit",type:"warning",showCancelButton:!0,confirmButtonColor:"#5cb85c",confirmButtonText:"Yes",closeOnConfirm:!1,showLoaderOnConfirm:!0,onOpen:function(){swal.disableConfirmButton()}},function(){var deffered=$q.defer();var promise=query.post($scope.backend_url+'/submit',data);promise.then(function(result){console.log(result) $scope.request.result=result;swal("Success","Submitted","success")})})}} $(".srcode").on('keyup',function(e){var find=!1;if(e.keyCode==13){find=!0}else{if($scope.request.data.srcode.length>=8){find=!0}} if(find){if($scope.request.data.requested_by_name.length==0){return} var param={srcode:$scope.request.data.srcode} $scope.fetch.service_param('enroll/fetch/last',param).then(function(result){console.log(result);$scope.request.data.fullname=result.fullname;$scope.request.data.program=result.coursename;$scope.request.data.major=result.majorname})}});$scope.fetch={certs:function(){$scope.listing.certs=[];var deffered=$q.defer();var promise=query.get($scope.backend_url+'/fetch_certs',{});promise.then(function(result){$scope.listing.certs=result;deffered.resolve(result)});return deffered.promise},service:function(service){var deffered=$q.defer();var promise=query.get($scope.backend_url+'/fetch_service',{service:service});promise.then(function(result){console.log(result);deffered.resolve(result)});return deffered.promise},service_param:function(service,param){var data=param;data.service=service;var deffered=$q.defer();var promise=query.get($scope.backend_url+'/fetch_service',data);promise.then(function(result){console.log(result);deffered.resolve(result)});return deffered.promise},programs:function(){var deffered=$q.defer();var promise=query.post($scope.backend_url+'/fetch_programs',{});promise.then(function(result){$scope.listing.programs=result;deffered.resolve(result)});return deffered.promise},offices:function(){var deffered=$q.defer();var promise=query.post($scope.backend_url+'/fetch_offices',{});promise.then(function(result){$scope.listing.offices=result;deffered.resolve(result)});return deffered.promise},office_docs:function(item){if(item==undefined){return} $scope.listing.office_docs=[];var param={office_id:item.code} var deffered=$q.defer();var promise=query.post($scope.backend_url+'/fetch_office_docs',param);promise.then(function(result){$scope.listing.office_docs=result;deffered.resolve(result)});return deffered.promise},} $scope.filteredPrograms=[];$scope.complete=function(string){console.log(string);var output=[];angular.forEach($scope.listing.programs,function(pos){if(pos.coursename.toLowerCase().indexOf(string.toLowerCase())>=0){output.push(pos.coursename)}});$scope.filteredPrograms=output} $scope.fillTextbox=function(string){$scope.request.data.program=string;$scope.filteredPrograms=null} $scope.upload={files:[],max_size:5,show:function(){$('#dlgUpload').modal({keyboard:!1,backdrop:'static'})},go:function(){swal({title:"Confirm",text:"Upload files?",type:"warning",showCancelButton:!0,confirmButtonColor:"#5cb85c",confirmButtonText:"Yes",closeOnConfirm:!1,showLoaderOnConfirm:!0,onOpen:function(){swal.disableConfirmButton()}},function(){var data={ref_id:$scope.request.track.filter.ref_id,files:$scope.upload.files} var promise=query.post($scope.backend_url+'/upload_files',data);promise.then(function(result){swal("Uploaded","","success");$scope.request.track.file_reload();$('#dlgUpload').modal('hide');$scope.upload.files=[]})})},remove:function(item){var index=$scope.upload.files.indexOf(item);$scope.upload.files.splice(index,1)},prepare:function(files){var f=document.getElementById('file1').files[0],r=new FileReader();r.onloadend=function(e){var size=document.getElementById('file1').files[0].size/1024/1024;if(Math.floor(size)>$scope.upload.max_size){swal("Error","Maximum of "+$scope.upload.max_size+" MB per file","error");return} var allowed_ext=["pdf","png","jpg","jpeg"];var ext=document.getElementById('file1').files[0].name.split('.').pop().toLowerCase();if(!allowed_ext.includes(ext)){swal("Error","File type is not allowed","error");return} $scope.upload.files.push({'filename':document.getElementById('file1').files[0].name,'type':document.getElementById('file1').files[0].name.split('.').pop().toLowerCase(),'size':size,'data':e.target.result,});$scope.$apply()} r.readAsDataURL(f)}} if($location.path().substr(0,6)=="/track"||$location.path().substr(0,7)=="/track2"){var wpin=!0;if($location.path().substr(0,7)=="/track2"){wpin=!0} $('[href="#tbtrack"]').tab('show');if($routeParams.refid!=undefined){$scope.request.track.filter.ref_id=$routeParams.refid;if($routeParams.pin!=undefined){$scope.request.track.filter.pin=$routeParams.pin} if($scope.request.track.filter.ref_id.length>0){$scope.request.track.go(wpin)}}} $scope.allow_request=!0;$scope.datetime={data:{},fetch:function(campus){var deffered=$q.defer();var promise=query.get($scope.backend_url+'/fetch_datetime',{campus:campus});promise.then(function(result){$scope.datetime.data=result;var err=0;if(result.day2=="SAT"||result.day2=="SUN"){err++} if(!(result.hour>=8&&result.hour<=17)){err++}else{if(result.hour==17&&result.mins>0){err++}} if(result.is_holiday){err++} $scope.allow_request=err==0?true:!1;if($location.path()=='/_test_'){$scope.allow_request=!0} deffered.resolve(result)});return deffered.promise}} $interval(function(){var d=new Date();var h=d.getHours();var m=d.getMinutes();var now=new Date().getTime();$scope.datetime.fetch()},1000);$q.all([$scope.fetch.offices(),$scope.fetch.programs(),$scope.fetch.certs()]).then(function(data){$scope.request.clear();$scope.fetch.office_docs($scope.request.data.office)})});function validatePINInput(input){input.value=input.value.replace(/\D/g,'').slice(0,4)} app.controller('AccountController',function($scope,$controller,$rootScope,$parse,$http,query,$location,$routeParams,$q,util,$window,auth,$interval,fetch,csvExportService,jwt,$timeout,admission,admissionCheck,student_portal,toast){angular.extend(this,$controller('BaseController',{$scope:$scope}));$rootScope.admission_defaults={};$rootScope.admission_result={};$rootScope.qualifier={};let path=$location.path();$timeout(function(){$rootScope.admission_defaults=admissionCheck.defaults;$rootScope.admission_result=admissionCheck.result;console.log(admissionCheck) if($rootScope.admission_result.qualifier){admission.qualifier.fetch_data().then((data)=>{$rootScope.qualifier=data;$scope.account_activation.data.username=$rootScope.qualifier.data.srcode;student_portal.check({username:$scope.account_activation.data.username}).then((data2)=>{console.log(data2);$scope.account_activation.activated=data2.activated})})}});toast.info("Our system may slow down or respond with delays during peak periods due to a high number of users. For a better experience, please try accessing the system during off-peak hours. ");auth.verify((result)=>{console.log(result);$timeout(()=>{if(!result.success){Swal.fire("Verification Failed","","error").then((data)=>{$timeout(function(){$location.path('/dashboard')})})}})});$scope.change_pin={data:{current_pin:'',new_pin:'',confirm_pin:''},data_check:()=>{let err=0;err+=($scope.change_pin.data.current_pin.length==0?1:0);err+=($scope.change_pin.data.new_pin.length==0?1:0);err+=($scope.change_pin.data.confirm_pin.length==0?1:0);err+=($scope.change_pin.data.new_pin!=$scope.change_pin.data.confirm_pin?1:0);return err==0?true:!1},submit:()=>{auth.change_pin($scope.change_pin.data,(result)=>{console.log(result);if(result.success){Swal.fire("Done","","success").then((data)=>{})}else{Swal.fire("Failed","","error").then((data)=>{})} $scope.change_pin.data.current_pin="";$scope.change_pin.data.new_pin="";$scope.change_pin.data.confirm_pin=""})}} $scope.pass_attr1="password";$scope.pass_attr2="password";$scope.togglePassword1=()=>{$scope.pass_attr1=$scope.pass_attr1=="password"?"text":"password"} $scope.togglePassword2=()=>{$scope.pass_attr2=$scope.pass_attr2=="password"?"text":"password"} $scope.account_activation={activated:!1,error:{password:!1,confirm_password:!1},data:{username:'',password:'',confirm_password:''},is_activated:!1,generatePassword:()=>{var regex=/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()_+\-=\[\]{};:'"\\|,.<>\/?`~]).{8}$/;var chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_+-;:,.?~";var password="";do{password="";for(var i=0;i<8;i++){password+=chars.charAt(Math.floor(Math.random()*chars.length))}}while(!regex.test(password));$scope.account_activation.data.password=password;$scope.account_activation.data.confirm_password=password},checkPassword:()=>{$timeout(function(){$scope.account_activation.error.password=!1;$scope.account_activation.error.confirm_password=!1;var regex=/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*()_+\-=\[\]{};:'"\\|,.<>\/?`~]).{8,}$/;$scope.account_activation.error.password=$scope.account_activation.data.password.length>0&&!regex.test($scope.account_activation.data.password);console.log("1->",$scope.account_activation.error.password)})},checkConfirmPassword:()=>{$timeout(function(){$scope.account_activation.error.confirm_password=$scope.account_activation.data.password!==$scope.account_activation.data.confirm_password;console.log($scope.account_activation.data.password,"=",$scope.account_activation.data.confirm_password)})},check_activated:()=>{},data_check:()=>{let err=0;err+=($scope.account_activation.data.username.length==0?1:0);err+=($scope.account_activation.data.password.length==0?1:0);err+=($scope.account_activation.data.confirm_password.length==0?1:0);err+=($scope.account_activation.data.password!=$scope.account_activation.data.confirm_password?1:0);err+=($scope.account_activation.error.password?1:0);err+=($scope.account_activation.error.confirm_password?1:0);return err==0?true:!1},submit:()=>{let data=angular.copy($scope.account_activation.data);Swal.fire({title:"Confirm",text:"Activate?",allowOutsideClick:!1,allowEscapeKey:!1,allowEnterKey:!1,showCancelButton:!0,confirmButtonColor:"#3085d6",cancelButtonColor:"#d33",cancelButtonText:"No",confirmButtonText:"Yes",reverseButtons:!0,showLoaderOnConfirm:!0,}).then((result)=>{console.log(result.value);if(result.isConfirmed){Swal.disableButtons();student_portal.activate(data).then((result2)=>{console.log(result2);if(result2.success){swal.fire("Success","","success");$scope.account_activation.activated=!0}else{swal.fire(result2.message,"","error")}})}})}} var base=$location.path().split('/')[1];$q.all([]).then(function(data){})})