1import{a as _i,b as vi,d as Le}from"./chunk-C3QYK3XU.js";import{a as ji}from"./chunk-OXGSOEBO.js";import{a as di}from"./chunk-WXQS62KK.js";import{a as V,b as R,c as be,d as O}from"./chunk-PQY6EGWL.js";import{a as B}from"./chunk-VLT7SV2D.js";import{a as Si}from"./chunk-ZDDKSTJX.js";import{A as gi,B as fe,C as hi,D as N,F as X,j as Me,k as pi,l as Ie,m as Re,n as z,p as Fe,q as Be,r as mi,s as ci,t as je,u as fi,w as We,x as De,y as ui,z as Ue}from"./chunk-CIG4DQXI.js";import"./chunk-WVUG4747.js";import"./chunk-L4KS4O4D.js";import{a as li,b as Ve,c as Te}from"./chunk-OBL3UMJK.js";import{a as J}from"./chunk-3CO4C5KT.js";import"./chunk-A7DVSW7U.js";import{c as Q}from"./chunk-LBLKBDMD.js";import"./chunk-YLPDWZZX.js";import"./chunk-Y7PLHQ6M.js";import"./chunk-3R646RNR.js";import{d as oi,e as ai,f as si}from"./chunk-PLPK6HII.js";import{D as Z,E as ii,F as Ee,G as ni,H as ri,c as k,e as ne,g as A,h as se,j as Xt,l as F,m as le,o as we,q as Pe,t as xe,u as $t,v as ei,w as ti,z as G}from"./chunk-UFCZWRLF.js";import"./chunk-7Q5L7ALI.js";import"./chunk-CARY4E7O.js";import"./chunk-2PT6A6VZ.js";import{$ as he,$a as ve,A as Ut,Ac as Se,Bc as ye,Cc as I,Eb as re,Fa as ee,Fb as oe,Gb as ae,Hb as C,Ib as s,J as qt,Ja as a,Jb as x,Ka as P,Kb as b,Lb as Ae,Mb as zt,Rc as Kt,Sb as v,Tb as S,Ub as y,Va as f,Xb as Oe,Xc as Jt,Yc as Qt,Za as W,Zc as Zt,_ as Ht,_a as d,ab as te,ba as ce,fa as M,ga as _e,gd as H,hd as Ce,id as L,jc as ie,kb as r,lb as n,mb as g,md as Ne,na as h,nb as U,oa as _,ob as q,qb as T,t as Dt,ub as w,wa as Gt,wb as u,yc as Yt}from"./chunk-32W73H3G.js";import{a as Wt,g as Bi}from"./chunk-WWX6BADO.js";function yi(){import("./chunk-GDCZYS7V.js")}function Ci(){import("./chunk-46BOMPA5.js")}function Di(i,m){if(i&1&&(r(0,"div",8),g(1,"i",9),r(2,"span"),s(3),n()()),i&2){let e=u();a(3),x(e.phoneUpdateRedirectMessage)}}function Ui(i,m){i&1&&(r(0,"p",14),s(1," Complete the security check to continue. "),n())}function qi(i,m){i&1&&(r(0,"p",14),s(1," Complete the security check again to send your verification code. "),n())}function Hi(i,m){i&1&&(r(0,"p",14),s(1," Select a number and send your code. "),n())}function Gi(i,m){i&1&&(r(0,"p",14),s(1," Complete the security check, then enter your code below. "),n())}function zi(i,m){if(i&1&&(r(0,"div",10)(1,"div",11),g(2,"div",12),n(),f(3,Ui,2,0,"p",13)(4,qi,2,0,"p",13)(5,Hi,2,0,"p",13)(6,Gi,2,0,"p",13),n()),i&2){let e=u();a(3),d("ngIf",!e.turnstileGatePassed&&!e.phonesLoaded),a(),d("ngIf",e.phonesLoaded&&!e.showOtpTab&&e.turnstile.enabled&&!e.turnstileGatePassed),a(),d("ngIf",e.turnstileGatePassed&&!e.showOtpTab&&e.phonesLoaded),a(),d("ngIf",e.turnstileGatePassed&&e.showOtpTab)}}function Yi(i,m){i&1&&(r(0,"div",15)(1,"p",16),s(2,"Waiting for security check\u2026"),n()())}function Ki(i,m){i&1&&(r(0,"p",21),s(1," If your mobile number is incorrect, tap "),r(2,"strong"),s(3,"Change phone number"),n(),s(4," before sending the code. "),n())}function Ji(i,m){if(i&1){let e=T();r(0,"button",37),w("click",function(t){return h(e),u(4).openPhoneChangeModal(),t.preventDefault(),_(t.stopPropagation())}),s(1," Change phone number "),n()}}function Qi(i,m){if(i&1){let e=T();r(0,"div",29)(1,"label",30)(2,"input",31),y("ngModelChange",function(t){h(e);let l=u(3);return S(l.selectedPhoneType,t)||(l.selectedPhoneType=t),_(t)}),n(),r(3,"div",32)(4,"div",33)(5,"span",34),s(6),n(),f(7,Ji,2,0,"button",35),n(),r(8,"span",36),s(9),n()()()()}if(i&2){let e=m.$implicit,o=u(3);a(2),v("ngModel",o.selectedPhoneType),d("value",e.type),a(4),x(e.type),a(),d("ngIf",e.type==="Student"&&o.canUpdateMobile&&(o.errorMessage==null?null:o.errorMessage.error)!=="NOPHONE"),a(2),x(e.number)}}function Zi(i,m){if(i&1&&(r(0,"div",38),g(1,"i",39),r(2,"span"),s(3),n()()),i&2){let e=u(3);a(3),x(e.errorMessage.error)}}function Xi(i,m){if(i&1&&(r(0,"div",40),g(1,"i",9),r(2,"span"),s(3),n()()),i&2){let e=u(3);a(3),x(e.successMessage)}}function $i(i,m){i&1&&(r(0,"div",38),g(1,"i",39),r(2,"span"),s(3,"No mobile number on file. Add or update your number to receive OTP."),n()())}function en(i,m){if(i&1){let e=T();r(0,"div",41)(1,"button",42),w("click",function(){h(e);let t=u(3);return _(t.openPhoneChangeModal())}),g(2,"i",43),s(3," Add mobile number "),n()()}}function tn(i,m){i&1&&(r(0,"span"),s(1,"Send Verification Code"),n())}function nn(i,m){i&1&&(r(0,"span"),s(1," Sending "),g(2,"span",44),n())}function rn(i,m){if(i&1){let e=T();r(0,"div",22),f(1,Qi,10,5,"div",23)(2,Zi,4,1,"div",24)(3,Xi,4,1,"div",25)(4,$i,4,0,"div",24)(5,en,4,0,"div",26),r(6,"button",27),w("click",function(){h(e);let t=u(2);return _(t.sendOtp())}),f(7,tn,2,0,"span",28)(8,nn,3,0,"span",28),n()()}if(i&2){let e=u(2);a(),d("ngForOf",e.phoneNumbers),a(),d("ngIf",e.errorMessage&&e.errorMessage.error&&e.errorMessage.error!=="NOPHONE"&&!e.successMessage),a(),d("ngIf",e.successMessage),a(),d("ngIf",e.errorMessage&&e.errorMessage.error==="NOPHONE"),a(),d("ngIf",e.errorMessage&&e.errorMessage.error==="NOPHONE"),a(),d("disabled",!e.selectedPhoneType||e.isLoading||e.turnstile.enabled&&!e.turnstileGatePassed),a(),d("ngIf",!e.isLoading),a(),d("ngIf",e.isLoading)}}function on(i,m){i&1&&(r(0,"div",15),g(1,"span",44),r(2,"p"),s(3,"Loading your contact information..."),n()())}function an(i,m){if(i&1&&(r(0,"div",17)(1,"div",18)(2,"h2"),s(3,"Verify Your Account"),n(),r(4,"p",16),s(5,"Select where to receive your verification code"),n(),f(6,Ki,5,0,"p",19),n(),f(7,rn,9,8,"div",20)(8,on,4,0,"div",3),n()),i&2){let e=u();a(6),d("ngIf",e.canUpdateMobile),a(),d("ngIf",!e.isLoading),a(),d("ngIf",e.isLoading&&!e.showOtpTab&&e.phonesLoaded)}}function sn(i,m){if(i&1&&(r(0,"p",16)(1,"strong"),s(2,"Sent to:"),n(),s(3),n()),i&2){let e=u(2);a(3),b(" ",e.otpSentToDisplay," ")}}function ln(i,m){i&1&&(r(0,"div",38),g(1,"i",55),r(2,"span"),s(3,"Please enter a valid 6-digit code"),n()())}function dn(i,m){if(i&1&&(r(0,"div",38),g(1,"i",39),r(2,"span"),s(3),n()()),i&2){let e=u(2);a(3),x(e.errorMessage.error||e.errorMessage)}}function pn(i,m){i&1&&(r(0,"p",14),s(1," Complete the security check above, then verify your code. "),n())}function mn(i,m){i&1&&(r(0,"span"),s(1,"Verify & Proceed"),n())}function cn(i,m){i&1&&(r(0,"span"),s(1," Verifying "),g(2,"span",44),n())}function fn(i,m){if(i&1&&(r(0,"p",56),s(1),n()),i&2){let e=u(2);a(),b(" You can resend in ",e.countdown," seconds. ")}}function un(i,m){i&1&&(r(0,"span"),s(1,"Resend verification code"),n())}function gn(i,m){i&1&&(r(0,"span"),s(1,"Resending\u2026"),n())}function hn(i,m){if(i&1){let e=T();r(0,"button",57),w("click",function(){h(e);let t=u(2);return _(t.resendOtp())}),f(1,un,2,0,"span",28)(2,gn,2,0,"span",28),n()}if(i&2){let e=u(2);d("disabled",e.isLoading),a(),d("ngIf",!e.isLoading),a(),d("ngIf",e.isLoading)}}function _n(i,m){if(i&1){let e=T();r(0,"div",45)(1,"div",18)(2,"h2"),s(3,"Enter Verification Code"),n(),r(4,"p",16),s(5,"Enter the 6-digit code sent to your mobile"),n(),f(6,sn,4,1,"p",46),n(),r(7,"form",47),w("ngSubmit",function(){h(e);let t=u();return _(t.submitOtp())}),r(8,"div",48)(9,"label",49),s(10,"Verification code"),n(),g(11,"input",50),f(12,ln,4,0,"div",24)(13,dn,4,1,"div",24),n(),f(14,pn,2,0,"p",13),r(15,"button",51),f(16,mn,2,0,"span",28)(17,cn,3,0,"span",28),n(),r(18,"details",52)(19,"summary"),s(20,"Didn't receive the OTP?"),n(),f(21,fn,2,1,"p",53)(22,hn,3,3,"button",54),n()()()}if(i&2){let e=u();a(6),d("ngIf",e.otpSentToDisplay),a(),d("formGroup",e.loginOTPForm),a(5),d("ngIf",e.loginOTPForm.controls.studentOTP.invalid&&e.loginOTPForm.controls.studentOTP.touched),a(),d("ngIf",e.errorMessage),a(),d("ngIf",e.turnstile.enabled&&!e.turnstileGatePassed),a(),d("disabled",e.loginOTPForm.invali
1d||e.isLoading||e.turnstile.enabled&&!e.turnstileGatePassed),a(),d("ngIf",!e.isLoading),a(),d("ngIf",e.isLoading),a(4),d("ngIf",!e.showResendButton),a(),d("ngIf",e.showResendButton)}}function vn(i,m){if(i&1){let e=T();r(0,"div",58),w("click",function(){h(e);let t=u();return _(t.closePhoneChangeModal())}),n()}}function Sn(i,m){if(i&1&&(r(0,"span",69),s(1),n()),i&2){let e=u(2);a(),x(e.maskedOldPhoneDisplay)}}function yn(i,m){i&1&&(r(0,"span",78),s(1,"Not on file"),n())}function Cn(i,m){if(i&1&&(r(0,"div",79),g(1,"i",80),r(2,"span"),s(3,"Department: "),r(4,"strong"),s(5),n()()()),i&2){let e=u(2);a(5),x(e.departmentName)}}function wn(i,m){i&1&&(r(0,"p",81),s(1," If you still cannot verify, contact your department office for assistance. "),n())}function Pn(i,m){i&1&&(r(0,"p",82),s(1," Enter your new phone number. We will send an OTP to verify it, then save it to your record. "),n())}function xn(i,m){if(i&1&&(r(0,"p",82),s(1," Enter the 6-digit code sent to "),r(2,"strong"),s(3),n(),s(4,". "),n()),i&2){let e=u(2);a(3),x(e.phoneChangeMaskedPhone)}}function En(i,m){if(i&1&&(r(0,"div",83),g(1,"i",39),r(2,"span"),s(3),n()()),i&2){let e=u(2);a(3),x(e.phoneChangeError)}}function Tn(i,m){if(i&1&&(r(0,"div",84),g(1,"i",9),r(2,"span"),s(3),n()()),i&2){let e=u(2);a(3),x(e.phoneChangeSuccess)}}function bn(i,m){i&1&&(r(0,"span"),s(1,"Send OTP"),n())}function Mn(i,m){i&1&&(r(0,"span"),s(1,"Sending\u2026"),n())}function In(i,m){if(i&1){let e=T();r(0,"div")(1,"div",85)(2,"label",86),s(3,"New phone"),n(),r(4,"input",87),y("ngModelChange",function(t){h(e);let l=u(2);return S(l.phoneChangeNewPhone,t)||(l.phoneChangeNewPhone=t),_(t)}),n()(),r(5,"button",88),w("click",function(){h(e);let t=u(2);return _(t.phoneChangeSendOtp())}),f(6,bn,2,0,"span",28)(7,Mn,2,0,"span",28),n()()}if(i&2){let e=u(2);a(4),v("ngModel",e.phoneChangeNewPhone),a(),d("disabled",e.phoneChangeLoading||!e.canSendPhoneChangeOtp),a(),d("ngIf",!e.phoneChangeLoading),a(),d("ngIf",e.phoneChangeLoading)}}function Ln(i,m){if(i&1&&(r(0,"div",89)(1,"div",84),g(2,"i",9),r(3,"span"),s(4),n()(),r(5,"p",90),s(6,"Please wait\u2026"),n()()),i&2){let e=u(2);a(4),x(e.phoneChangeSuccess)}}function kn(i,m){i&1&&(r(0,"span"),s(1,"Verify OTP & save number"),n())}function An(i,m){i&1&&(r(0,"span"),s(1,"Please wait\u2026"),n())}function On(i,m){if(i&1){let e=T();r(0,"div")(1,"div",85)(2,"label",91),s(3,"Verification code"),n(),r(4,"input",92),y("ngModelChange",function(t){h(e);let l=u(2);return S(l.phoneChangeOtp,t)||(l.phoneChangeOtp=t),_(t)}),n()(),r(5,"button",93),w("click",function(){h(e);let t=u(2);return _(t.phoneChangeVerifyOtp())}),f(6,kn,2,0,"span",28)(7,An,2,0,"span",28),n(),r(8,"button",94),w("click",function(){h(e);let t=u(2);return t.phoneChangeStep="enter-phone",t.phoneChangeOtp="",_(t.phoneChangeError="")}),s(9," Change number "),n()()}if(i&2){let e=u(2);a(4),v("ngModel",e.phoneChangeOtp),a(),d("disabled",e.phoneChangeLoading),a(),d("ngIf",!e.phoneChangeLoading),a(),d("ngIf",e.phoneChangeLoading),a(),d("disabled",e.phoneChangeLoading)}}function Nn(i,m){if(i&1){let e=T();r(0,"div",59)(1,"div",60),w("click",function(t){return h(e),_(t.stopPropagation())}),r(2,"div",61)(3,"div",62)(4,"h5",63),s(5),n(),r(6,"button",64),w("click",function(){h(e);let t=u();return _(t.closePhoneChangeModal())}),n()(),r(7,"div",65)(8,"div",66)(9,"div",67)(10,"span",68),s(11,"Student name"),n(),r(12,"span",69),s(13),n()(),r(14,"div",67)(15,"span",68),s(16,"Register no."),n(),r(17,"span",69),s(18),n()(),r(19,"div",67)(20,"span",68),s(21,"Old phone"),n(),f(22,Sn,2,1,"span",70)(23,yn,2,0,"span",71),n()(),f(24,Cn,6,1,"div",72)(25,wn,2,0,"p",73)(26,Pn,2,0,"p",74)(27,xn,5,1,"p",74)(28,En,4,1,"div",75)(29,Tn,4,1,"div",76)(30,In,8,4,"div",28)(31,Ln,7,1,"div",77)(32,On,10,5,"div",28),n()()()()}if(i&2){let e=u();a(5),b(" ",e.phoneChangeStep==="success"?"Phone updated":e.phoneChangeStep==="enter-phone"?"Update mobile number":"Verify OTP"," "),a(),d("disabled",e.phoneChangeLoading||e.phoneChangeStep==="success"),a(7),x(e.studentName||"\u2014"),a(5),x(e.regNo),a(4),d("ngIf",e.maskedOldPhoneDisplay),a(),d("ngIf",!e.maskedOldPhoneDisplay),a(),d("ngIf",e.departmentName),a(),d("ngIf",e.departmentName&&e.phoneChangeStep==="enter-phone"),a(),d("ngIf",e.phoneChangeStep==="enter-phone"),a(),d("ngIf",e.phoneChangeStep==="verify-otp"),a(),d("ngIf",e.phoneChangeError),a(),d("ngIf",e.phoneChangeSuccess&&e.phoneChangeStep!=="success"),a(),d("ngIf",e.phoneChangeStep==="enter-phone"),a(),d("ngIf",e.phoneChangeStep==="success"),a(),d("ngIf",e.phoneChangeStep==="verify-otp")}}var qe=(()=>{class i{formBuilder;route;router;loginService;authSession;turnstileService;showOtpTab=!1;phoneNumbers=[];loginOTPForm;regNo;studentName="";isLoading=!1;errorMessage;selectedPhoneType="";countdown=0;timerSubscription;showResendButton=!1;loginData;successMessage;departmentName="";maskedOldStudentPhone="";showPhoneChangeModal=!1;phoneChangeStep="enter-phone";phoneChangeOtp="";phoneChangeNewPhone="";phoneChangeMaskedPhone="";phoneChangeToken="";phoneChangeLoading=!1;phoneChangeError="";phoneChangeSuccess="";phoneUpdateRedirectMessage="";phoneChangeRedirectTimer=null;static PHONE_UPDATE_REDIRECT_MS=2800;fromRevaluationPortal=!1;fromCertificatePortal=!1;stepToken="";turnstile={enabled:!0,token:"",widgetId:""};turnstileGatePassed=!1;phonesLoaded=!1;bootstrapAttempt=0;bootstrapRetryTimer=null;routeReadySub=null;phoneLoadAuthRetryUsed=!1;phoneChangeAuthRetryUsed=!1;bootstrapSettled=!1;loginBlockMessageTimer=null;loginBlockMessageVisible=!1;static BOOTSTRAP_MAX_ATTEMPTS=60;static BOOTSTRAP_RETRY_MS=100;static LOGIN_BLOCK_MESSAGE_MS=1e4;get otpSentToDisplay(){return this.selectedPhoneType?this.phoneNumbers.find(o=>o.type===this.selectedPhoneType||o.name===this.selectedPhoneType)?.number??"":""}get canUpdateMobile(){return this.phonesLoaded}get maskedOldPhoneDisplay(){return(this.maskedOldStudentPhone||"").toUpperCase()}get canSendPhoneChangeOtp(){return/^[0-9]{10}$/.test((this.phoneChangeNewPhone||"").trim())}constructor(e,o,t,l,c,p){this.formBuilder=e,this.route=o,this.router=t,this.loginService=l,this.authSession=c,this.turnstileService=p,this.loginOTPForm=this.formBuilder.group({studentOTP:["",[ne.required,ne.minLength(6),ne.maxLength(6)]]})}ngOnInit(){Ci(),this.routeReadySub=Dt([this.route.paramMap,this.route.queryParamMap]).subscribe(([e,o])=>{let t=Re(e.get("regNo")||"");if(!t)return;let l=t!==this.regNo;this.regNo=t,this.fromRevaluationPortal=o.get("revaluation")==="1",this.fromCertificatePortal=o.get("certificate")==="1",l&&(this.bootstrapAttempt=0,this.bootstrapSettled=!1,this.phoneLoadAuthRetryUsed=!1,this.phonesLoaded=!1,this.stepToken=""),this.bootstrapOtpStep()})}
1bootstrapOtpStep(){if(this.regNo||(this.regNo=Re(this.route.snapshot.paramMap.get("regNo")||"")),!this.regNo){if(this.shouldRetryBootstrap()){this.scheduleBootstrapRetry();return}this.redirectToLoginEntry({studentLoginExpired:"1"});return}let e=this.router.lastSuccessfulNavigation?.extras?.state??(typeof history<"u"?history.state:null),o=Ie(this.regNo,e);if(!o){if(this.shouldRetryBootstrap()){this.scheduleBootstrapRetry();return}this.redirectToLoginEntry({studentLoginExpired:"1"});return}this.bootstrapAttempt=0,this.stepToken=o,this.bootstrapSettled=!0,Be(),this.tryInitialPhoneLoad()}shouldRetryBootstrap(){return Fe(this.regNo)?this.bootstrapAttempt<i.BOOTSTRAP_MAX_ATTEMPTS:this.bootstrapAttempt<20}scheduleBootstrapRetry(){this.bootstrapAttempt++,this.bootstrapRetryTimer&&clearTimeout(this.bootstrapRetryTimer),this.bootstrapRetryTimer=setTimeout(()=>{this.bootstrapRetryTimer=null,this.bootstrapOtpStep()},i.BOOTSTRAP_RETRY_MS)}tryInitialPhoneLoad(){if(this.phonesLoaded||this.isLoading||!this.stepToken)return;let e=We();(e||!this.turnstile.enabled)&&(e&&(this.turnstileGatePassed=!0),this.loadPhoneNumbers())}ngAfterViewInit(){V(this.turnstileService,"student","student-otp-turnstile-widget",e=>{this.turnstile=e,e.enabled||(this.turnstileGatePassed=!0,this.tryInitialPhoneLoad())},e=>{this.errorMessage=e},()=>this.onTurnstileTokenReady()),this.tryInitialPhoneLoad()}onTurnstileTokenReady(){this.turnstile.enabled&&(this.turnstileGatePassed=!0,this.loginBlockMessageVisible||(this.errorMessage=""),this.phonesLoaded||this.loadPhoneNumbers())}ngOnDestroy(){this.routeReadySub&&(this.routeReadySub.unsubscribe(),this.routeReadySub=null),this.bootstrapRetryTimer&&(clearTimeout(this.bootstrapRetryTimer),this.bootstrapRetryTimer=null),this.clearPhoneChangeRedirectTimer(),this.clearLoginBlockMessageTimer(),this.timerSubscription&&this.timerSubscription.unsubscribe(),O(this.turnstile)}resolveTurnstileForAction(){let e=R(this.turnstileService,this.turnstile);if(this.turnstile.enabled&&!e){let o=We();return o||(this.errorMessage="Please complete the security check",null)}return e}shouldIgnoreLoginStepAuthError(){return je()}isStudentLoginBlockMessage(e){let o=(e||"").toLowerCase();return o.includes("too many")||o.includes("temporarily blocked")||o.includes("maximum number of login attempts")}applyOtpRateLimitMessage(e){if(e?.status!==401&&e?.status!==403)return!1;let o=this.readApiErrorMessage(e);return this.isStudentLoginBlockMessage(o)?(this.isLoading=!1,this.showLoginBlockMessage(o),!0):!1}showLoginBlockMessage(e){this.clearLoginBlockMessageTimer(),this.loginBlockMessageVisible=!0,this.errorMessage={error:e},this.loginBlockMessageTimer=setTimeout(()=>{this.loginBlockMessageTimer=null,this.loginBlockMessageVisible=!1,(typeof this.errorMessage=="string"?this.errorMessage:this.errorMessage?.error)===e&&(this.errorMessage=null)},i.LOGIN_BLOCK_MESSAGE_MS)}clearLoginBlockMessageTimer(){this.loginBlockMessageTimer&&(clearTimeout(this.loginBlockMessageTimer),this.loginBlockMessageTimer=null),this.loginBlockMessageVisible=!1}bindStudentProfileFromPhoneResponse(e){if(!e)return;let o=String(e.name||e.studentName||"").trim();o&&(this.studentName=o),e.student&&(this.maskedOldStudentPhone=String(e.student))}loadPhoneNumbers(){if(this.phonesLoaded||this.isLoading)return;let e=this.resolveActiveStepToken();if(!e){if(Fe(this.regNo))return;this.redirectToLoginEntry({studentLoginExpired:"1"});return}let o=this.resolveTurnstileForAction();o!==null&&(this.isLoading=!0,this.successMessage="",this.loginService.loginNew(this.regNo,e,o).then(t=>{t?(this.bindStudentProfileFromPhoneResponse(t),this.phoneNumbers=[],t.student&&this.phoneNumbers.push({type:"Student",number:t.student,name:"Student",selected:!1}),t.father&&this.phoneNumbers.push({type:"Father",number:t.father,name:"Father",selected:!1}),t.mother&&this.phoneNumbers.push({type:"Mother",number:t.mother,name:"Mother",selected:!1}),this.phoneNumbers.length===0?this.errorMessage={error:"NOPHONE"}:t.error?this.errorMessage=t:this.errorMessage=null,t.departmentName&&(this.departmentName=t.departmentName)):t&&t.error&&(this.errorMessage=t),this.isLoading=!1,this.phonesLoaded=!0,this.bootstrapSettled=!0,De(),this.prepareTurnstileForSendOtp()}).catch(t=>{if(t?.status===401||t?.status===403){if(this.isLoading=!1,this.shouldIgnoreLoginStepAuthError()||this.applyOtpRateLimitMessage(t))return;let l=this.readApiErrorMessage(t).toLowerCase(),c=l.includes("step token")||l.includes("login step");if(!this.phoneLoadAuthRetryUsed&&c){this.phoneLoadAuthRetryUsed=!0;let p=this.router.lastSuccessfulNavigation?.extras?.state??(typeof history<"u"?history.state:null),E=Ie(this.regNo,p);if(E){this.stepToken=E,this.loadPhoneNumbers();return}}z(),this.redirectToLoginEntry({studentLoginExpired:"1"});return}this.errorMessage=t.error,this.isLoading=!1,this.turnstileGatePassed=!1,be(this.turnstileService,this.turnstile)}))}resolveActiveStepToken(){let e=this.router.lastSuccessfulNavigation?.extras?.state??(typeof history<"u"?history.state:null),o=Ie(this.regNo,e);return o?(this.stepToken=o,o):this.stepToken||null}sendOtp(){if(!this.selectedPhoneType){this.errorMessage="Please select a phone number";return}let e=this.resolveActiveStepToken();if(!e){this.redirectToLoginEntry({studentLoginExpired:"1"});return}let o=this.resolveTurnstileForAction();o!==null&&(this.isLoading=!0,this.loginService.sendOTP(this.regNo,[this.selectedPhoneType],e,o).then(t=>{let l=this.readSendOtpError(t);if(l){this.errorMessage=l,this.isLoading=!1,this.prepareTurnstileForSendOtp();return}this.applyRefreshedStepToken(t),this.errorMessage="",this.showOtpTab=!0,this.isLoading=!1,this.prepareTurnstileForOtpVerify(),this.startResendTimer()},t=>{if(this.isLoading=!1,t?.status===401||t?.status===403){if(this.shouldIgnoreLoginStepAuthError())return;if(this.applyOtpRateLimitMessage(t)){this.prepareTurnstileForSendOtp();return}z(),this.redirectToLoginEntry({studentLoginExpired:"1"});return}this.errorMessage=this.readApiErrorMessage(t)||"Failed to send OTP",this.prepareTurnstileForSendOtp()}))}startResendTimer(){this.showResendButton=!1,this.countdown=60,this.timerSubscription&&this.timerSubscription.unsubscribe(),this.timerSubscription=Ut(1e3).pipe(qt(61)).subscribe(e=>{this.countdown=60-e,this.countdown===0&&(this.showResendButton=!0)})}resendOtp(){let e=this.resolveActiveStepToken();if(!e){this.redirectToLoginEntry({studentLoginExpired:"1"});return}let o=this.resolveTurnstileForAction();o!==null&&(this.isLoading=!0,this.loginService.sendOTP(this.regNo,[this.selectedPhoneType],e,o).then(t=>{let l=this.readSendOtpError(t);if(l){this.errorMessage=l,this.isLoading=!1,this.prepareTurnstileForOtpVerify();return}this.applyRefreshedStepToken(t),this.errorMessage="",this.isLoading=!1,this.prepareTurnstileForOtpVerify(),this.startResendTimer()},t=>{if(this.isLoading=!1,t?.status===401||t?.status===403){if(this.shouldIgnoreLoginStepAuthError())return;if(this.applyOtpRateLimitMessage(t)){this.prepareTurnstileForOtpVerify();return}z(),this.redirectToLoginEntry({studentLoginExpired:"1"});return}this.errorMessage=this.readApiErrorMessage(t)||"Failed to resend OTP",this.prepareTurnstileForOtpVerify()}))}submitOtp(){if(!this.loginOTPForm.valid)return;let e=this.loginOTPForm.get("studentOTP")?.value,o=this.resolveActiveStepToken();if(!o){this.redirectToLoginEntry({studentLoginExpired:"1"});return}let t=this.resolveTurnstileForAction();t!==null&&(this.isLoading=!0,this.loginService.verifyOTP(this.regNo,e,o,t).then(l=>{if(this.loginData=l,this.isLoading=!1,this.errorMessage="",this.loginData.logStatus==="Invalid OTP"){this.errorMessage="Invalid OTP";return}if(this.loginData.logStatus==="Invalid Account"){this.errorMessage="Cannot be Logged In, Please contact your Department!";return}if(!(String(this.loginData?.statusMessage||"").toUpperCase()==="SUCCESS"||!!this.loginData?.token)){this.errorMessage="Login failed. Please try again.";return}let p=()=>z(),E=this.loginData.userRole||(this.loginData.rollType&&this.loginData.rollType.length>0?this.loginData.rollType[0]:null)||"STUDENT",j=$=>{if(!$){this.errorMessage="Login succeeded but session could not be started. Please try again.";return}if(this.authSession.setStudentBrowserSession({token:$,registerNo:this.regNo,userId:this.loginData.userId??this.loginData.id,userName:this.loginData.userName,userRole:E,userType:"STUDENT",email:this.loginData.email}),this.fromCertificatePortal){this.router.navigate(["/student-application","view"],{replaceUrl:!0}).then(p);return}if(this.fromRevaluationPortal){this.router.navigate(["/student-application","revaluation-form"],{replaceUrl:!0}).then(p);return}if(this.isRevaluationTempStudentResponse(this.loginData)){this.router.navigate(["/student-application","revaluation-form"],{replaceUrl:!0}).then(p);return}this.navigateToNextPage(this.loginData.nextPage).then(p)};if(this.loginData.token){j(String(this.loginData.token));return}this.authSession.resolveSessionTokenAfterLogin(this.loginData).then(j)},l=>{if(this.isLoading=!1,l?.status===401||l?.status===403){if(this.shouldIgnoreLoginStepAuthError())return;if(this.applyOtpRateLimitMessage(l)){this.prepareTurnstileForOtpVerify();return}z(),this.redirectToLoginEntry({studentLoginExpired:"1"});return}this.errorMessage=this.readApiErrorMessage(l)||"Failed to verify OTP"}))}applyRefreshedStepToken(e){let o=e?.stepToken;o&&(this.stepToken=o,Me(this.regNo,o))}prepareTurnstileForSendOtp(){if(!this.turnstile.enabled){this.turnstileGatePassed=!0;return}be(this.turnstileService,this.turnstile),this.turnstileGatePassed=!1}
1readSendOtpError(e){if(!e)return"Failed to send OTP";if(e.error)return String(e.error);let o=e.maskedNumbers;if(Array.isArray(o)&&o.length>0){let t=String(o[0]||"");if(/invalid/i.test(t))return t}return""}prepareTurnstileForOtpVerify(){if(!this.turnstile.enabled){this.turnstileGatePassed=!0;return}be(this.turnstileService,this.turnstile),this.turnstileGatePassed=!1}redirectToLoginEntry(e={}){if(je())return;mi(),z(),De(),Be(),e.phoneUpdated!=="1"&&this.authSession.clearLocalSessionState();let o=Wt({},e);this.regNo&&(o.regNo=this.regNo);let t={queryParams:o,replaceUrl:!0};if(this.fromCertificatePortal){this.router.navigate(["/student-application/login"],t);return}if(this.fromRevaluationPortal){this.router.navigate(["/student-application/revaluation-login"],t);return}this.router.navigate(["/login"],t)}isRevaluationTempStudentResponse(e){let o=e?.rollType;return Array.isArray(o)?o.some(t=>(t||"").toUpperCase()==="TEMPSTUDENT"):(e?.userRole||"").toUpperCase()==="TEMPSTUDENT"}navigateToNextPage(e){if(!e)return this.router.navigate(["/dashboard"],{replaceUrl:!0});if(/^https?:\/\//i.test(e))return window.location.replace(e),Promise.resolve(!0);let t=this.normalizeNextPagePath(e);return this.router.navigateByUrl(t,{replaceUrl:!0}).catch(()=>(window.location.replace(`${window.location.origin}${t}`),!1))}readApiErrorMessage(e){let o=e?.error;return typeof o=="string"&&o.trim()?o.trim():o&&typeof o=="object"?(o.message||o.error||"").toString().trim():""}normalizeNextPagePath(e){let o=(e||"").trim();if(!o)return"/dashboard";let t=o.replace(/^\/?client(\/|$)/i,"/");return(t.startsWith("/")?t:`/${t}`).replace(/\/{2,}/g,"/")}openPhoneChangeModal(){this.clearPhoneChangeRedirectTimer(),this.phoneChangeStep="enter-phone",this.phoneChangeOtp="",this.phoneChangeNewPhone="",this.phoneChangeMaskedPhone="",this.phoneChangeToken="",this.phoneChangeError="",this.phoneChangeSuccess="",this.phoneChangeAuthRetryUsed=!1,this.resolveActiveStepToken()||(this.phoneChangeError="Your sign-in session expired. Please start login again."),this.showPhoneChangeModal=!0}clearPhoneChangeRedirectTimer(){this.phoneChangeRedirectTimer&&(clearTimeout(this.phoneChangeRedirectTimer),this.phoneChangeRedirectTimer=null)}closePhoneChangeModal(){this.phoneChangeLoading||this.phoneChangeStep==="success"||(this.showPhoneChangeModal=!1,this.phoneChangeError="",this.phoneChangeSuccess="")}phoneChangeSendOtp(){let e=(this.phoneChangeNewPhone||"").trim();if(!/^[0-9]{10}$/.test(e)){this.phoneChangeError="Please enter a valid 10-digit new phone number.";return}let o=this.resolveActiveStepToken();if(!o){this.phoneChangeError="Your sign-in session expired. Please close this dialog and sign in again.";return}let t=this.resolveTurnstileForAction();t!==null&&(this.phoneChangeLoading=!0,this.phoneChangeError="",this.loginService.sendPhoneChangeOtp(this.regNo,e,o,t).then(l=>{if(l?.stepToken&&(this.stepToken=l.stepToken,Me(this.regNo,l.stepToken)),l?.statusMessage!=="SUCCESS"){this.phoneChangeLoading=!1,this.phoneChangeError=l?.error||"Failed to send OTP",this.prepareTurnstileForSendOtp();return}this.phoneChangeMaskedPhone=l.maskedPhone||e,this.phoneChangeStep="verify-otp",this.phoneChangeLoading=!1,this.phoneChangeAuthRetryUsed=!1},l=>this.handlePhoneChangeAuthError(l,()=>this.phoneChangeSendOtp())))}phoneChangeVerifyOtp(){let e=(this.phoneChangeOtp||"").trim();if(!/^[0-9]{6}$/.test(e)){this.phoneChangeError="Please enter a valid 6-digit OTP.";return}let o=this.resolveActiveStepToken();if(!o){this.phoneChangeError="Your sign-in session expired. Please close this dialog and sign in again.";return}let t=this.resolveTurnstileForAction();t!==null&&(this.phoneChangeLoading=!0,this.phoneChangeError="",this.loginService.verifyPhoneChangeOtp(this.regNo,e,o,t).then(l=>{if(l?.statusMessage!=="SUCCESS"||!l?.phoneChangeToken){this.phoneChangeLoading=!1,this.phoneChangeError=l?.error||"Invalid OTP. Please try again.";return}l?.stepToken&&(this.stepToken=l.stepToken,Me(this.regNo,l.stepToken)),this.phoneChangeToken=l.phoneChangeToken,this.phoneChangeApplyUpdate()},l=>this.handlePhoneChangeAuthError(l,()=>this.phoneChangeVerifyOtp())))}handlePhoneChangeAuthError(e,o){if(this.phoneChangeLoading=!1,e?.status!==401&&e?.status!==403){this.phoneChangeError=this.readApiErrorMessage(e)||"Request failed. Please try again.",this.prepareTurnstileForSendOtp();return}if(this.shouldIgnoreLoginStepAuthError())return;let t=this.readApiErrorMessage(e);if(this.isStudentLoginBlockMessage(t)){this.phoneChangeError=t||"Too many OTP requests. Please wait and try again.",this.prepareTurnstileForSendOtp();return}if(!this.phoneChangeAuthRetryUsed&&(this.phoneChangeAuthRetryUsed=!0,this.resolveActiveStepToken())){o();return}z(),this.closePhoneChangeModal(),this.redirectToLoginEntry({studentLoginExpired:"1"})}phoneChangeApplyUpdate(){let e=(this.phoneChangeNewPhone||"").trim();if(!this.phoneChangeToken){this.phoneChangeLoading=!1,this.phoneChangeError="Phone verification expired. Please try again.";return}let o={domain:_i(),phone:e,registerNo:this.regNo};this.loginService.updatePhoneNumber(o,this.phoneChangeToken).then(t=>{if(this.phoneChangeLoading=!1,t?.statusMessage==="SUCCESS"){let l="Phone number updated successfully. Redirecting you to sign in again with your register number\u2026";this.phoneChangeStep="success",this.phoneChangeError="",this.phoneChangeSuccess=l,this.phoneUpdateRedirectMessage=l,this.successMessage=l,this.errorMessage=null,this.clearPhoneChangeRedirectTimer(),this.phoneChangeRedirectTimer=setTimeout(()=>{this.phoneChangeRedirectTimer=null,this.showPhoneChangeModal=!1,this.redirectToLoginEntry({ph
1oneUpdated:"1"})},i.PHONE_UPDATE_REDIRECT_MS);return}this.phoneChangeError=t?.error||"Failed to update phone number"},t=>this.handlePhoneChangeAuthError(t,()=>this.phoneChangeApplyUpdate()))}static \u0275fac=function(o){return new(o||i)(P(Ee),P(H),P(L),P(N),P(Le),P(B))};static \u0275cmp=M({type:i,selectors:[["app-student-login-opt-page"]],decls:8,vars:7,consts:[[1,"jp-ims-otp-card","jp-ims-otp-card--student","otp-container"],["class","jp-ims-otp-success success-message mb-3","role","status",4,"ngIf"],["class","jp-turnstile-otp-section",4,"ngIf"],["class","jp-ims-otp-loading loading-container",4,"ngIf"],["class","phone-selection",4,"ngIf"],["class","otp-verification",4,"ngIf"],["class","jp-ims-phone-change-backdrop",3,"click",4,"ngIf"],["class","modal fade show d-block jp-ims-phone-change-modal","tabindex","-1","role","dialog","aria-labelledby","phoneChangeModalTitle","aria-modal","true",4,"ngIf"],["role","status",1,"jp-ims-otp-success","success-message","mb-3"],["aria-hidden","true",1,"fa","fa-check-circle"],[1,"jp-turnstile-otp-section"],[1,"jp-turnstile-field"],["id","student-otp-turnstile-widget",1,"jp-turnstile-widget-host"],["class","subtitle turnstile-hint",4,"ngIf"],[1,"subtitle","turnstile-hint"],[1,"jp-ims-otp-loading","loading-container"],[1,"subtitle"],[1,"phone-selection"],[1,"jp-ims-otp-header","otp-header"],["class","subtitle jp-ims-otp-phone-hint mb-0",4,"ngIf"],["class","jp-ims-otp-channels phone-numbers",4,"ngIf"],[1,"subtitle","jp-ims-otp-phone-hint","mb-0"],[1,"jp-ims-otp-channels","phone-numbers"],["class","jp-ims-otp-channel-item phone-item",4,"ngFor","ngForOf"],["class","jp-ims-otp-error error-message",4,"ngIf"],["class","jp-ims-otp-success success-message",4,"ngIf"],["class","jp-ims-otp-phone-change-link",4,"ngIf"],["type","button",1,"jp-ims-otp-btn","jp-ims-otp-btn--student","send-otp-btn",3,"click","disabled"],[4,"ngIf"],[1,"jp-ims-otp-channel-item","phone-item"],[1,"jp-ims-otp-channel-label","radio-container"],["type","radio","name","phoneSelection",3,"ngModelChange","ngModel","value"],[1,"jp-ims-otp-channel-text","phone-info"],[1,"jp-ims-otp-channel-title-row"],[1,"jp-ims-otp-channel-title","phone-label"],["type","button","class","jp-ims-otp-student-change-btn","title","Change your registered mobile number",3,"click",4,"ngIf"],[1,"jp-ims-otp-channel-mask","phone-number"],["type","button","title","Change your registered mobile number",1,"jp-ims-otp-student-change-btn",3,"click"],[1,"jp-ims-otp-error","error-message"],["aria-hidden","true",1,"fa","fa-exclamation-triangle"],[1,"jp-ims-otp-success","success-message"],[1,"jp-ims-otp-phone-change-link"],["type","button",1,"update-phone-btn",3,"click"],["aria-hidden","true",1,"fa","fa-mobile","me-1"],["aria-hidden","true",1,"loading-spinner"],[1,"otp-verification"],["class","subtitle",4,"ngIf"],[1,"jp-ims-otp-form","otp-form",3,"ngSubmit","formGroup"],[1,"form-group"],["for","studentOTP",1,"jp-ims-otp-field-label","otp-field-label"],["type","text","id","studentOTP","placeholder","\xB7\xB7\xB7\xB7\xB7\xB7","formControlName","studentOTP","maxlength","6","inputmode","numeric","autocomplete","one-time-code",1,"form-control"],["type","submit",1,"jp-ims-otp-btn","jp-ims-otp-btn--student","verify-btn",3,"disabled"],[1,"jp-ims-otp-help","otp-help-details"],["class","subtitle otp-help-note",4,"ngIf"],["type","button","class","resend-btn",3,"disabled","click",4,"ngIf"],["aria-hidden","true",1,"fa","fa-exclamation-circle"],[1,"subtitle","otp-help-note"],["type","button",1,"resend-btn",3,"click","disabled"],[1,"jp-ims-phone-change-backdrop",3,"click"],["tabindex","-1","role","dialog","aria-labelledby","phoneChangeModalTitle","aria-modal","true",1,"modal","fade","show","d-block","jp-ims-phone-change-modal"],["role","document",1,"modal-dialog","modal
1-dialog-centered",3,"click"],[1,"modal-content"],[1,"modal-header"],["id","phoneChangeModalTitle",1,"modal-title"],["type","button","aria-label","Close",1,"btn-close",3,"click","disabled"],[1,"modal-body"],["role","status",1,"jp-ims-otp-student-summary","mb-3"],[1,"jp-ims-otp-student-summary-row"],[1,"jp-ims-otp-student-summary-label"],[1,"jp-ims-otp-student-summary-value"],["class","jp-ims-otp-student-summary-value",4,"ngIf"],["class","jp-ims-otp-student-summary-value text-muted",4,"ngIf"],["class","jp-ims-otp-dept-help mb-3","role","status",4,"ngIf"],["class","subtitle mb-3 jp-ims-otp-dept-help-note",4,"ngIf"],["class","subtitle mb-3",4,"ngIf"],["class","jp-ims-otp-error error-message mb-3",4,"ngIf"],["class","jp-ims-otp-success success-message mb-3",4,"ngIf"],["class","text-center py-2",4,"ngIf"],[1,"jp-ims-otp-student-summary-value","text-muted"],["role","status",1,"jp-ims-otp-dept-help","mb-3"],["aria-hidden","true",1,"fa","fa-building-o"],[1,"subtitle","mb-3","jp-ims-otp-dept-help-note"],[1,"subtitle","mb-3"],[1,"jp-ims-otp-error","error-message","mb-3"],[1,"jp-ims-otp-success","success-message","mb-3"],[1,"form-group","mb-3"],["for","phoneChangeNewPhone",1,"jp-ims-otp-field-label"],["type","tel","id","phoneChangeNewPhone","maxlength","10","inputmode","numeric","autocomplete","tel","placeholder","10-digit mobile number",1,"form-control",3,"ngModelChange","ngModel"],["type","button",1,"jp-ims-otp-btn","jp-ims-otp-btn--student","w-100",3,"click","disabled"],[1,"text-center","py-2"],[1,"subtitle","mb-0"],["for","phoneChangeOtp",1,"jp-ims-otp-field-label"],["type","text","id","phoneChangeOtp","maxlength","6","inputmode","numeric","autocomplete","one-time-code","placeholder","\xB7\xB7\xB7\xB7\xB7\xB7",1,"form-control",3,"ngModelChange","ngModel"],["type","button",1,"update-phone-btn",3,"click","disabled"],["type","button",1,"btn","btn-link","btn-sm","mt-2","p-0",3,"click","disabled"]],template:function(o,t){o&1&&(r(0,"div",0),f(1,Di,4,1,"div",1)(2,zi,7,4,"div",2)(3,Yi,3,0,"div",3)(4,an,9,3,"div",4)(5,_n,23,10,"div",5),n(),f(6,vn,1,0,"div",6)(7,Nn,33,15,"div",7)),o&2&&(a(),d("ngIf",t.phoneUpdateRedirectMessage),a(),d("ngIf",t.turnstile.enabled),a(),d("ngIf",t.turnstile.enabled&&!t.turnstileGatePassed&&!t.isLoading&&!t.phonesLoaded),a(),d("ngIf",t.phonesLoaded&&!t.showOtpTab),a(),d("ngIf",t.showOtpTab),a(),d("ngIf",t.showPhoneChangeModal),a(),d("ngIf",t.showPhoneChangeModal))},dependencies:[ye,I,le,k,we,A,se,Z,F,Pe,xe],styles:["[_nghost-%COMP%]{display:block;width:100%}"]})}return i})();var wi=(()=>{class i{static \u0275fac=function(o){return new(o||i)};static \u0275cmp=M({type:i,selectors:[["app-login-layout"]],decls:5,vars:0,consts:[[1,"login-container"],[1,"login-content"],[1,"login-header"],["src","assets/images/mgrLogo.png","alt","College Logo",1,"logo"]],template:function(o,t){o&1&&(r(0,"div",0)(1,"div",1)(2,"div",2),g(3,"img",3),n(),g(4,"router-outlet"),n()())},dependencies:[Ce],styles:[".login-container[_ngcontent-%COMP%]{width:100%;min-height:100vh;display:flex;align-items:center;justify-content:center}.login-content[_ngcontent-%COMP%]{background:#fff;padding:2rem;border-radius:10px;box-shadow:0 4px 6px #0000001a;width:100%;max-width:400px;margin:1rem}.login-header[_ngcontent-%COMP%]{text-align:center;margin-bottom:2rem}.logo[_ngcontent-%COMP%]{max-width:150px;height:auto;margin-bottom:1rem}@media (max-width: 480px){.login-content[_ngcontent-%COMP%]{margin:.5rem;padding:1.5rem}.logo[_ngcontent-%COMP%]{max-width:120px}}"]})}return i})();var Vn=["signIn"];function Rn(i,m){if(i&1&&(r(0,"div",26),g(1,"i",27),s(2),n()),i&2){let e=u(3);a(2),b("",e.errorMessage," ")}}function Fn(i,m){i&1&&(r(0,"div",28),s(1,"Email not valid"),n())}function Bn(i,m){i&1&&(r(0,"div",29),g(1,"div",30),n())}function jn(i,m){i&1&&(r(0,"span"),s(1,"Sign In"),n())}function Wn(i,m){i&1&&(r(0,"span"),g(1,"i",31),s(2," Signing In"),n())}function Dn(i,m){if(i&1){let e=T();r(0,"div"),f(1,Rn,3,1,"div",12),r(2,"div",13)(3,"label",14),s(4,"Email"),n(),r(5,"input",15),y("ngModelChange",function(t){h(e);let l=u(2);return S(l.login.email,t)||(l.login.email=t),_(t)}),n(),f(6,Fn,2,0,"div",16),n(),r(7,"div",17)(8,"label",14),s(9,"Password"),n(),r(10,"div",18)(11,"input",19),y("ngModelChange",function(t){h(e);let l=u(2);return S(l.login.password,t)||(l.login.password=t),_(t)}),n(),r(12,"button",20),w("click",function(){h(e);let t=u(2);return _(t.showStaffPassword=!t.showStaffPassword)}),g(13,"i",21),n()()(),r(14,"div",22)(15,"button",23),w("click",function(){h(e);let t=u(2);return _(t.goToForgotPassword())}),s(16,"Forgot Password?"),n()(),f(17,Bn,2,0,"div",24),r(18,"button",25),w("click",function(){h(e);let t=u(2);return _(t.staffLogin())}),f(19,jn,2,0,"span",6)(20,Wn,3,0,"span",6),n()()}if(i&2){let e=u(2);a(),d("ngIf",e.errorMessage),a(4),v("ngModel",e.login.email),a(),d("ngIf",e.invali
1dEmail),a(5),d("type",e.showStaffPassword?"text":"password"),v("ngModel",e.login.password),a(),W("aria-label",e.showStaffPassword?"Hide password":"Show password")("aria-pressed",e.showStaffPassword),a(),d("ngClass",e.showStaffPassword?"fa-eye-slash":"fa-eye"),a(4),d("ngIf",e.staffTurnstileEnabled),a(),d("disabled",e.staffLoading),a(),d("ngIf",!e.staffLoading),a(),d("ngIf",e.staffLoading)}}function Un(i,m){if(i&1&&(r(0,"div",37),g(1,"i",38),s(2),n()),i&2){let e=u(3);a(2),b("",e.StuSuccessMessage," ")}}function qn(i,m){if(i&1&&(r(0,"span"),s(1),n()),i&2){let e=u(4);a(),x(e.StuErrorMessage)}}function Hn(i,m){if(i&1&&(r(0,"span"),s(1),n()),i&2){let e=u(4);a(),Ae("",e.getOtp[1]," - ",e.getOtp[0],". Please contact your Department to Register")}}function Gn(i,m){i&1&&(r(0,"span"),s(1,"Invalid Register Number"),n())}function zn(i,m){if(i&1&&(r(0,"div",26),g(1,"i",27),f(2,qn,2,1,"span",6)(3,Hn,2,2,"span",6)(4,Gn,2,0,"span",6),n()),i&2){let e=u(3);a(2),d("ngIf",e.StuErrorMessage),a(),d("ngIf",e.showNoPhone),a(),d("ngIf",e.showInvalidRegister)}}function Yn(i,m){if(i&1){let e=T();r(0,"div",13)(1,"label",14),s(2,"Domain"),n(),r(3,"input",39),y("ngModelChange",function(t){h(e);let l=u(3);return S(l.student.domain,t)||(l.student.domain=t),_(t)}),n()()}if(i&2){let e=u(3);a(3),v("ngModel",e.student.domain)}}function Kn(i,m){i&1&&(r(0,"div",40),g(1,"div",41),n())}function Jn(i,m){i&1&&(r(0,"span"),s(1,"Sign In"),n())}function Qn(i,m){i&1&&(r(0,"span"),g(1,"i",31),s(2," Signing In"),n())}function Zn(i,m){if(i&1){let e=T();r(0,"div"),f(1,Un,3,1,"div",32)(2,zn,5,3,"div",12),r(3,"div",13)(4,"label",14),s(5,"Register Number"),n(),r(6,"input",33,0),y("ngModelChange",function(t){h(e);let l=u(2);return S(l.registerNumber,t)||(l.registerNumber=t),_(t)}),n()(),f(8,Yn,4,1,"div",34)(9,Kn,2,0,"div",35),r(10,"button",36),w("click",function(){h(e);let t=u(2);return _(t.studentLogin())}),f(11,Jn,2,0,"span",6)(12,Qn,3,0,"span",6),n()()}if(i&2){let e=u(2);a(),d("ngIf",e.StuSuccessMessage),a(),d("ngIf",e.StuErrorMessage||e.showNoPhone||e.showInvalidRegister),a(4),v("ngModel",e.registerNumber),a(2),d("ngIf",e.showDomainBox),a(),d("ngIf",e.turnstileEnabled),a(),d("disabled",e.studentLoading),a(),d("ngIf",!e.studentLoading),a(),d("ngIf",e.studentLoading)}}function Xn(i,m){if(i&1){let e=T();U(0),r(1,"div",9),g(2,"div",10),r(3,"button",11),w("click",function(){h(e);let t=u();return _(t.setLoginTab("staff"))}),s(4," Faculty / Staff "),n(),r(5,"button",11),w("click",function(){h(e);let t=u();return _(t.setLoginTab("student"))}),s(6," Student / Parent "),n()(),f(7,Dn,21,12,"div",6)(8,Zn,13,8,"div",6),q()}if(i&2){let e=u();a(2),te("jp-ims-login-tab-indicator--student",e.loginTab==="student"),a(),te("active",e.loginTab==="staff"),a(2),te("active",e.loginTab==="student"),a(2),d("ngIf",e.loginTab==="staff"),a(),d("ngIf",e.loginTab==="student")}}function $n(i,m){if(i&1&&(r(0,"p",51),s(1),n()),i&2){let e=u(2);a(),zt(" OTP sent to ",e.getOtp[0]," - ",e.getOtp[1]," - ",e.getOtp[2]," ")}}function er(i,m){i&1&&(r(0,"div",29),g(1,"div",52),n())}function tr(i,m){i&1&&(r(0,"span"),s(1,"Submit OTP"),n())}function ir(i,m){i&1&&(r(0,"span"),g(1,"i",31),s(2," Verifying"),n())}function nr(i,m){if(i&1){let e=T();U(0),r(1,"h2",42),s(2,"Sign In with OTP"),n(),f(3,$n,2,3,"p",43)(4,er,2,0,"div",24),r(5,"div",44)(6,"input",45),y("ngModelChange",function(t){h(e);let l=u();return S(l.studentOTP,t)||(l.studentOTP=t),_(t)}),n()(),r(7,"button",46),w("click",function(){h(e);let t=u();return _(t.submitOtp())}),f(8,tr,2,0,"span",6)(9,ir,3,0,"span",6),n(),r(10,"button",47),w("click",function(){h(e);let t=u();return _(t.backToLogin())}),s(11,"Back to Login"),n(),r(12,"ul",48)(13,"li",49),g(14,"i",50),s(15," Contact your Department Head if your mobile number is invalid."),n(),r(16,"li"),g(17,"i",50),s(18," If OTP is not received within 5 minutes, contact your Department Head."),n()(),q()}if(i&2){let e=u();a(3),d("ngIf",e.getOtp&&e.getOtp.length>0),a(),d("ngIf",e.inlineOtpTurnstile.enabled),a(2),v("ngModel",e.studentOTP),a(),d("disabled",e.otpLoading||!e.studentOTP),a(),d("ngIf",!e.otpLoading),a(),d("ngIf",e.otpLoading)}}function rr(i,m){i&1&&(r(0,"div",62),s(1,"Password reset successfully!"),n())}function or(i,m){if(i&1&&(r(0,"div",26),s(1),n()),i&2){let e=u(2);a(),x(e.errorMessage)}}function ar(i,m){if(i&1&&(r(0,"span"),s(1),n()),i&2){let e=u(3);a(),b(" | ",e.usercp.maskEmail,"")}}function sr(i,m){if(i&1&&(r(0,"p",63),s(1),f(2,ar,2,1,"span",6),n()),i&2){let e=u(2);a(),Ae(" OTP sent to: ",e.usercp.maskPhone," ",e.usercp.maskAltPhone," "),a(),d("ngIf",e.usercp.maskEmail)}}function lr(i,m){i&1&&(r(0,"div",40),g(1,"div",64),r(2,"p",65),s(3,"Complete the security check before resetting your password."),n()())}function dr(i,m){i&1&&(r(0,"div",28),s(1,"Passwords do not match"),n())}function pr(i,m){if(i&1&&(r(0,"ul",66)(1,"li"),s(2,"At least 6 characters"),n()()),i&2){let e=u(2);a(),te("text-success",e.passwordValidations.minLength)}}function mr(i,m){i&1&&(r(0,"span"),s(1,"Reset Password"),n())}function cr(i,m){i&1&&(r(0,"span"),g(1,"i",31),s(2," Processing"),n())}function fr(i,m){if(i&1){let e=T();U(0),r(1,"h2",53),s(2,"Reset Password"),n(),f(3,rr,2,0,"div",54)(4,or,2,1,"div",12)(5,sr,3,3,"p",55),r(6,"p",56),s(7,"If OTP not received, contact your Department Head or Data center."),n(),f(8,lr,4,0,"div",35),r(9,"div",13)(10,"input",57),y("ngModelChange",function(t){h(e);let l=u();return S(l.usercp.otpToken,t)||(l.usercp.otpToken=t),_(t)}),n()(),r(11,"div",13)(12,"div",18)(13,"input",58),y("ngModelChange",function(t){h(e);let l=u();return S(l.usercp.newPassword,t)||(l.usercp.newPassword=t),_(t)}),w("input",function(){h(e);let t=u();return _(t.onPasswordInput())}),n(),r(14,"button",20),w("click",function(){h(e);let t=u();return _(t.showNewPassword=!t.showNewPassword)}),g(15,"i",21),n()()(),r(16,"div",13)(17,"div",18)(18,"input",59),y("ngModelChange",function(t){h(e);let l=u();return S(l.usercp.confirmPassword,t)||(l.usercp.confirmPassword=t),_(t)}),w("input",function(){h(e);let t=u();return _(t.onPasswordInput())}),n(),r(19,"button",20),w("click",function(){h(e);let t=u();return _(t.showConfirmPassword=!t.showConfirmPassword)}),g(20,"i",21),n()(),f(21,dr,2,0,"div",16),n(),f(22,pr,3,2,"ul",60),r(23,"button",61),w("click",function(){h(e);let t=u();return _(t.isFullPageReset?t.submitResetPasswordForm():t.submitVerify())}),f(24,mr,2,0,"span",6)(25,cr,3,0,"span",6),n(),r(26,"button",47),w("click",function(){h(e);let t=u();return _(t.backToLogin())}),s(27,"Back to Login"),n(),q()}if(i&2){let e=u();a(3),d("ngIf",e.resetSuccess),a(),d("ngIf",e.errorMessage),a(),d("ngIf",e.usercp.maskPhone||e.usercp.maskEmail||e.usercp.maskAltPhone),a(3),d("ngIf",e.resetTurnstile.enabled&&e.securityPasswordReset),a(2),v("ngModel",e.usercp.otpToken),a(3),d("type",e.showNewPassword?"text":"password"),v("ngModel",e.usercp.newPassword),a(),W("aria-label",e.showNewPassword?"Hide password":"Show password")("aria-pressed",e.showNewPassword),a(),d("ngClass",e.showNewPassword?"fa-eye-slash":"fa-eye"),a(3),d("type",e.showConfirmPassword?"text":"password"),v("ngModel",e.usercp.confirmPassword),a(),W("aria-label",e.showConfirmPassword?"Hide password":"Show password")("aria-pressed",e.showConfirmPassword),a(),d("ngClass",e.showConfirmPassword?"fa-eye-slash":"fa-eye"),a(),d("ngIf",e.passwordMismatch),a(),d("ngIf",e.usercp.newPassword),a(),d("disabled",e.resetLoading),a(),d("ngIf",!e.resetLoading),a(),d("ngIf",e.resetLoading)}}var Ye=(()=>{class i{router;route;location;loginService;loginProvider;cookieService;turnstileService;userService;authTokenService;authSession;signIn;login={domain:"",email:"",password:""};registerNumber="";student={registerNo:"",domain:""};usercp={otpToken:"",newPassword:"",confirmPassword:"",maskPhone:"",maskEmail
1:"",email:"",password:"",domain:"",maskAltPhone:"",turnstileToken:""};studentOTP="";getOtp=[];showStaffPassword=!1;showNewPassword=!1;showConfirmPassword=!1;errorMessage="";isLoading=!1;staffLoading=!1;studentLoading=!1;otpLoading=!1;resetLoading=!1;showOtpTab=!1;showResetPassword=!1;loginTab="staff";currentYear=new Date().getFullYear();securityPasswordReset=!1;showDomainBox=!1;setLoginTab(e){e==="staff"&&this.loginTab==="student"&&this.destroyStudentTurnstile(),e==="student"&&this.loginTab==="staff"&&this.destroyStaffTurnstile(),this.loginTab=e,this.errorMessage="",this.StuErrorMessage="",this.StuSuccessMessage="",e==="student"&&this.ensureStudentTurnstile(),e==="staff"&&this.initStaffTurnstile()}showNoPhone=!1;showInvalidRegister=!1;invalidEmail=!1;passwordMismatch=!1;resetToken="";isFullPageReset=!1;otpExpired=!1;resetSuccess=!1;passwordValidations={minLength:!1,uppercase:!1,lowercase:!1,number:!1,special:!1};StuErrorMessage="";StuSuccessMessage="";turnstileEnabled=!1;turnstileToken="";turnstileWidgetId="";turnstileSiteKey="";turnstileConfigLoaded=!1;staffTurnstileEnabled=!0;staffTurnstileToken="";staffTurnstileWidgetId="";resetTurnstile={enabled:!0,token:"",widgetId:""};inlineOtpTurnstile={enabled:!0,token:"",widgetId:""};constructor(e,o,t,l,c,p,E,j,$,ge){this.router=e,this.route=o,this.location=t,this.loginService=l,this.loginProvider=c,this.cookieService=p,this.turnstileService=E,this.userService=j,this.authTokenService=$,this.authSession=ge}ngOnInit(){this.login.domain=fe,this.authTokenService.getToken()||this.authTokenService.clearToken(),this.route.queryParams.subscribe(e=>{e.token&&(this.resetToken=e.token,this.isFullPageReset=!0,this.validateResetToken()),e.studentLoginExpired==="1"?(this.setLoginTab("student"),this.StuSuccessMessage="",this.StuErrorMessage="Your sign-in step expired or was interrupted. Enter your register number and complete the security check again."):e.phoneUpdated==="1"&&(this.setLoginTab("student"),this.StuErrorMessage="",this.StuSuccessMessage="Mobile number updated successfully. Enter your register number and sign in again.");let o=(e.regNo||"").trim();o&&(this.setLoginTab("student"),this.registerNumber=o),(e.phoneUpdated||e.studentLoginExpired||e.regNo)&&(ci(),fi(this.router,this.route,this.location)),e.sessionExpired==="1"&&(this.setLoginTab("staff"),this.errorMessage="Your session expired. Please sign in again to continue.")})}ngAfterViewInit(){this.signIn?.nativeElement&&this.signIn.nativeElement.focus(),this.ensureStudentTurnstile(),this.loginTab==="staff"&&this.initStaffTurnstile()}ngOnDestroy(){this.destroyStudentTurnstile(),this.destroyStaffTurnstile(),O(this.resetTurnstile),O(this.inlineOtpTurnstile)}destroyStudentTurnstile(){if(this.turnstileWidgetId&&window.turnstile)try{window.turnstile.remove(this.turnstileWidgetId)}catch{}this.turnstileWidgetId="",this.turnstileToken=""}ensureStudentTurnstile(){if(this.turnstileConfigLoaded){this.scheduleStudentTurnstileRender();return}this.turnstileService.loadConfig().then(e=>{this.turnstileConfigLoaded=!0,this.turnstileEnabled=e.enabled,this.turnstileSiteKey=e.siteKey??"",!(!e.enabled||!e.siteKey)&&this.scheduleStudentTurnstileRender()}).catch(()=>{this.turnstileConfigLoaded=!0,this.turnstileEnabled=!1})}scheduleStudentTurnstileRender(){!this.turnstileEnabled||!this.turnstileSiteKey||this.loginTab!=="student"||this.renderStudentTurnstileWidget(0)}renderStudentTurnstileWidget(e){if(this.loginTab!=="student"||this.turnstileWidgetId)return;let o=document.getElementById("student-turnstile-widget");if(!o){e<12&&setTimeout(()=>this.renderStudentTurnstileWidget(e+1),50);return}this.turnstileWidgetId&&o.childElementCount>0||(o.childElementCount>0&&o.replaceChildren(),this.turnstileService.render(o,this.turnstileSiteKey,t=>{this.turnstileToken=t}).then(t=>{this.loginTab==="student"?this.turnstileWidgetId=t:window.turnstile&&window.turnstile.remove(t)}).catch(()=>{this.StuErrorMessage="Security check failed to load. Please refresh the page."}))}destroyStaffTurnstile(){if(this.staffTurnstileWidgetId&&window.turnstile)try{window.turnstile.remove(this.staffTurnstileWidgetId)}catch{}this.staffTurnstileWidgetId="",this.staffTurnstileToken=""}initStaffTurnstile(){this.staffTurnstileWidgetId||this.turnstileService.loadStaffConfig().then(e=>{this.staffTurnstileEnabled=e.enabled,!(!e.enabled||!e.siteKey||this.loginTab!=="staff")&&this.renderStaffTurnstileWidget(e.siteKey,0)}).catch(()=>{this.staffTurnstileEnabled=!1})}renderStaffTurnstileWidget(e,o){if(this.loginTab!=="staff"||this.staffTurnstileWidgetId)return;let t=document.getElementById("staff-turnstile-widget");if(!t){o<12&&setTimeout(()=>this.renderStaffTurnstileWidget(e,o+1),50);return}t.childElementCount>0||this.turnstileService.render(t,e,l=>{this.staffTurnstileToken=l}).then(l=>{this.loginTab==="staff"?this.staffTurnstileWidgetId=l:window.turnstile&&window.turnstile.remove(l)}).catch(()=>{this.errorMessage="Security check failed to load. Please refresh the page."})}staffLogin(){if(!this.login.email||!this.login.password){this.errorMessage="Please fill email and password";return}if(!/^[\w-]+(\.[\w-]+)*@([a-z0-9-]+(\.[a-z0-9-]+)*?\.[a-z]{2,6}|(\d{1,3}\.){3}\d{1,3})(:\d{4})?$/.test(this.login.email)){this.invalidEmail=!0;return}this.invalidEmail=!1,this.staffLoading=!0,this.errorMessage="",this.authSession.clearBrowserSession();let o=fe,t={domain:o,email:this.login.email,password:this.login.password},l=this.login.email,c=this.staffTurnstileEnabled?this.staffTurnstileToken||this.turnstileService.getResponse(this.staffTurnstileWidgetId):"";if(this.staffTurnstileEnabled&&!c){this.errorMessage="Please complete the security check",this.staffLoading=!1;return}(this.staffTurnstileEnabled?this.loginService.startStaffLogin(t,c):this.loginService.mainLoginPage(t)).then(E=>this.processStaffLoginResponse(E,l,o)).catch(E=>{this.errorMessage=this.resolveStaffLoginErrorMessage(E),this.resetStaffTurnstileAfterFailure()})}processStaffLoginResponse(e,o,t){if(this.usercp=e,this.staffLoading=!1,e.statusMessage==="SECURITY")this.handleSecurityPasswordChange(e);else if(e.statusMessage==="VALIDATIONFAIL")if(e.nextPage){this.clearStaffLoginForm();let l=e.token||this.extractTokenFromUrl(e.nextPage);if(l){this.persistAuthToken(l);let c={email:o,domain:t};e.id&&(c.id=e.id),e.userName&&(c.userName=e.userName),e.userRole&&(c.userRole=e.userRole),e.userType&&(c.userType=e.userType),this.cookieService.put("currentUser",JSON.stringify(c))}this.navigateToNextPage(e.nextPage)}else this.errorMessage="Account validation required. Please contact administrator.",this.resetStaffTurnstileAfterFailure();else e.statusMessage==="INVALID"?(this.errorMessage="Sorry, Invalid details...!",this.resetStaffTurnstileAfterFailure()):e.statusMessage==="NOTAPPROVE"?(this.errorMessage="Sorry, Your account is not approved...!",this.resetStaffTurnstileAfterFailure()):e.statusMessage==="INACTIVE"?(this.errorMessage="Sorry, Your account is inactive...",this.resetStaffTurnstileAfterFailure()):e.logStatus==="Invalid Account"?(this.errorMessage="Cannot be Logged In, Please contact your Department!",this.resetStaffTurnstileAfterFailure()):e.statusMessage==="NOPHONE"?(this.errorMessage="Sorry, No phone number is added please contact your Admin or Department HOD...!",this.resetStaffTurnstileAfterFailure()):e.statusMessage==="SUCCESS"&&e.token?(this.clearStaffLoginForm(),this.persistAuthToken(e.token),e.nextPage?this.navigateToNextPage(e.nextPage):this.router.navigate(["/dashboard"],{replaceUrl:!0})):(e.loginStepToken&&ui(o,e.loginStepToken),this.router.navigate(["/login/staff-login-mfa"],{queryParams:{email:o,domain:t,phone:e.maskPhone,altPhone:e.maskAltPhone},queryParamsHandling:"merge",replaceUrl:!0}))}clearStaffLoginForm(){this.login={domain:"",email:"",password:""}}resetStaffTurnstileAfterFailure(){this.staffLoading=!1,this.staffTurnstileWidgetId&&this.turnstileService.reset(this.staffTurnstileWidgetId),this.staffTurnstileToken=""}resolveStaffLoginErrorMessage(e){let o=e?.error,t=typeof o=="str
1ing"?o.toLowerCase():JSON.stringify(o||{}).toLowerCase(),l=String(e?.message||"").toLowerCase();return t.includes("10017")||t.includes("captcha")||t.includes("turnstile")||l.includes("captcha")||l.includes("turnstile")?"Security check failed. Please complete captcha again and verify your system date/time is correct.":t.includes("invalid date")||l.includes("invalid date")?"Security check failed due to date/time mismatch. Please correct your system date/time and try again.":"Login failed. Please check your credentials."}extractTokenFromUrl(e){if(!e)return null;let o=e.match(/token=([^&]+)/);return o?o[1]:null}studentLogin(){if(!this.registerNumber){this.StuErrorMessage="Please enter your register number";return}this.StuErrorMessage="",this.StuSuccessMessage="";let e=this.turnstileEnabled?this.turnstileToken||this.turnstileService.getResponse(this.turnstileWidgetId):"";if(this.turnstileEnabled&&!e){this.StuErrorMessage="Please complete the security check";return}this.studentLoading=!0;let o=this.registerNumber.trim();this.registerNumber="",this.authSession.clearLocalSessionState(),vi(this.loginService,this.router,o,e).then(()=>{this.studentLoading=!1}).catch(t=>{this.studentLoading=!1,this.registerNumber=o;let l=t?.error?.message||t?.error?.error||"Login failed. Please try again.";this.StuErrorMessage=typeof l=="string"?l:"Login failed. Please try again.",this.turnstileWidgetId&&(this.turnstileService.reset(this.turnstileWidgetId),this.turnstileToken="")})}submitOtp(){if(!this.studentOTP){this.errorMessage="Please enter OTP";return}this.otpLoading=!0,this.errorMessage="";let e=this.studentOTP,o=this.registerNumber||sessionStorage.getItem("studentLoginRegNo")||"",t=R(this.turnstileService,this.inlineOtpTurnstile);if(this.inlineOtpTurnstile.enabled&&!t){this.errorMessage="Please complete the security check";return}let l={registerNo:o,otp:e,stepToken:pi(o),turnstileToken:t};this.studentOTP="",this.loginService.verifyStudentOtp(l).then(c=>{if(this.otpLoading=!1,c.logStatus==="Invalid OTP"){this.errorMessage="Invalid OTP. Please try again.",this.studentOTP=e;return}if(c.logStatus==="Invalid Account"){this.errorMessage="Cannot be Logged In, Please contact your Department!",this.studentOTP=e;return}if(!(String(c?.statusMessage||"").toUpperCase()==="SUCCESS"||!!c?.token)){this.errorMessage="Login failed. Please try again.",this.studentOTP=e;return}this.authSession.resolveSessionTokenAfterLogin(c).then(E=>{if(!E){this.errorMessage="Login succeeded but session could not be started. Please try again.",this.studentOTP=e;return}this.persistAuthToken(E),this.cookieService.putObject("currentUser",{userId:c.id??c.userId,userName:c.userName,userRole:c.userRole,userType:"STUDENT",regNo:o}),z(),this.navigateToNextPage(c.nextPage)})}).catch(c=>{this.otpLoading=!1,this.errorMessage="Failed to verify OTP. Please try again.",this.studentOTP=e})}goToForgotPassword(){this.router.navigate(["/login/forgot-password"],{replaceUrl:!1})}initResetTurnstile(){V(this.turnstileService,"staff","reset-turnstile-widget",e=>{this.resetTurnstile=e},e=>{this.errorMessage=e})}initInlineOtpTurnstile(){V(this.turnstileService,"student","inline-otp-turnstile-widget",e=>{this.inlineOtpTurnstile=e},e=>{this.errorMessage=e})}submitVerify(){if(this.errorMessage="",this.passwordMismatch=!1,!this.usercp.otpToken||!this.usercp.newPassword||!this.usercp.confirmPassword){this.errorMessage="Please fill all required fields";return}if(this.usercp.newPassword.length<6||this.usercp.newPassword.length>20){this.errorMessage="Password should be between 6 and 20 characters";return}if(this.usercp.newPassword!==this.usercp.confirmPassword){this.passwordMismatch=!0,this.errorMessage="Passwords do not match";return}if(this.securityPasswordReset){let o=R(this.turnstileService,this.resetTurnstile);if(this.resetTurnstile.enabled&&!o){this.errorMessage="Please complete the security check";return}this.usercp.turnstileToken=o}else this.usercp.turnstileToken="";let e=localStorage.getItem("securityData");if(e)try{let o=JSON.parse(e);this.usercp.email=this.usercp.email||o.email||"",this.usercp.domain=this.usercp.domain||o.domain||fe}catch{}this.resetLoading=!0,this.usercp.password=this.usercp.newPassword,this.loginService.resetPassword(this.usercp).then(o=>{if(this.resetLoading=!1,o.statusMessage==="VALIDATIONFAIL"){if(o.nextPage){let t=o.token||this.extractTokenFromUrl(o.nextPage);t&&this.persistAuthToken(t),this.router.navigate([o.nextPage])}setTimeout(()=>{this.backToLogin()},3e3)}else{if(o.statusMessage==="INVALID_OTP")this.errorMessage="Invalid OTP code. Please try again.";else if(o.statusMessage==="OTP_EXPIRED")this.errorMessage="OTP has expired. Please request a new one.";else if(o.statusMessage==="WRONGOTP")this.errorMessage="Wrong OTP entered. Please check and try again.";else if(o.statusMessage==="SUCCESS"&&o.nextPage){let t=o.token;t&&this.persistAuthToken(t),this.navigateToNextPage(o.nextPage)}setTimeout(()=>{let t=document.querySelector(".reset-error-message");t&&t.scrollIntoView({behavior:"smooth",block:"center"})},100)}}).catch(o=>{this.resetLoading=!1,this.errorMessage="Failed to connect to server. Please try again later."})}backToLogin(){this.showStaffPassword=!1,this.showNewPassword=!1,this.showConfirmPassword=!1,this.showOtpTab=!1,this.showResetPassword=!1,this.securityPasswordReset=!1,O(this.resetTurnstile),this.errorMessage="",this.invalidEmail=!1,this.passwordMismatch=!1,this.studentOTP="",this.usercp={otpToken:"",newPassword:"",confirmPassword:"",maskPhone:"",maskEmail
1:"",email:"",password:"",domain:"",maskAltPhone:"",turnstileToken:""}}handleSecurityPasswordChange(e){this.securityPasswordReset=!0,this.usercp.maskPhone=e.maskPhone||"",this.usercp.maskEmail=e.maskEmail||"",this.usercp.maskAltPhone=e.maskAltPhone||"",this.usercp.email=e.email||this.login.email||"",this.usercp.domain=e.domain||fe,this.showResetPassword=!0,setTimeout(()=>this.initResetTurnstile(),0),localStorage.setItem("securityData",JSON.stringify({id:e.id,domain:e.domain,email:e.email}))}validateResetToken(){if(!this.resetToken){this.otpExpired=!0;return}this.resetLoading=!0,this.loginService.validateResetToken({token:this.resetToken}).then(e=>{this.resetLoading=!1,e.status==="success"?this.usercp.maskEmail=e.email||"":this.otpExpired=!0}).catch(e=>{this.resetLoading=!1,this.otpExpired=!0})}submitResetPasswordForm(){if(!this.usercp.newPassword||!this.usercp.confirmPassword){this.errorMessage="Please fill all required fields";return}if(this.validatePassword(),!Object.values(this.passwordValidations).every(t=>t===!0)){this.errorMessage="Please ensure your password meets all requirements";return}if(this.usercp.newPassword!==this.usercp.confirmPassword){this.passwordMismatch=!0,this.errorMessage="Passwords do not match";return}this.resetLoading=!0,this.errorMessage="";let o={token:this.resetToken,newPassword:this.usercp.newPassword};this.loginService.resetPassword(o).then(t=>{this.resetLoading=!1,t.status==="success"?(this.resetSuccess=!0,setTimeout(()=>{this.router.navigate(["/login"])},5e3)):this.errorMessage=t.message||"Failed to reset password. Please try again."}).catch(t=>{this.resetLoading=!1,this.errorMessage="Failed to connect to server. Please try again later."})}validatePassword(){let e=this.usercp.newPassword;this.passwordValidations.minLength=e.length>=6,this.passwordValidations.uppercase=/[A-Z]/.test(e),this.passwordValidations.lowercase=/[a-z]/.test(e),this.passwordValidations.number=/[0-9]/.test(e),this.passwordValidations.special=/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/.test(e)}onPasswordInput(){this.validatePassword(),this.usercp.newPassword&&this.usercp.confirmPassword?this.passwordMismatch=this.usercp.newPassword!==this.usercp.confirmPassword:this.passwordMismatch=!1}backToLoginPage(){this.router.navigate(["/login"])}persistAuthToken(e){if(e){this.userService.clearSessionCaches(),this.authTokenService.setToken(e);try{sessionStorage.setItem("jp_session_valid","1")}catch{}}}navigateToNextPage(e){if(!e)return;if(/^https?:\/\//i.test(e)){window.location.replace(e);return}let t=this.normalizeNextPagePath(e);this.router.navigateByUrl(t,{replaceUrl:!0}).catch(()=>{window.location.replace(`${window.location.origin}${t}`)})}normalizeNextPagePath(e){let o=(e||"").trim();if(!o)return"/login";let t=o.replace(/^\/?client(\/|$)/i,"/");return(t.startsWith("/")?t:`/${t}`).replace(/\/{2,}/g,"/")}static \u0275fac=function(o){return new(o||i)(P(L),P(H),P(Yt),P(N),P(hi),P(J),P(B),P(Q),P(X),P(Le))};static \u0275cmp=M({type:i,selectors:[["app-login-home"]],viewQuery:function(o,t){if(o&1&&re(Vn,5),o&2){let l;oe(l=ae())&&(t.signIn=l.first)}},decls:11,vars:4,consts:[["signIn",""],[1,"jp-ims-login-page"],[1,"jp-ims-login-card"],[1,"text-center","jp-ims-login-logo","mb-3"],["src","assets/images/ims/mgr_ims.png","alt","MGR IMS Logo"],[1,"jp-ims-login-gold-line","rounded","mb-3"],[4,"ngIf"],[1,"jp-ims-login-footer","text-center","text-secondary","mb-0","mt-3"],[1,"fa-solid","fa-copyright","me-1"],[1,"jp-ims-login-tabs","mb-3","position-relative"],[1,"jp-ims-login-tab-indicator"],["type","button",1,"jp-ims-login-tab",3,"click"],["class","card-error",4,"ngIf"],[1,"jp-ims-login-field","mb-2"],[1,"form-label","small","fw-semibold","text-secondary"],["type","email","id","staffEmail","placeholder","Enter Email","name","staffEmail","required","",1,"form-control",3,"ngModelChange","ngModel"],["class","error-message",4,"ngIf"],[1,"jp-ims-login-field","mb-1"],[1,"input-group","jp-ims-password-input-group"],["id","staffPassword","placeholder","Enter Password","name","staffPassword","required","",1,"form-control",3,"ngModelChange","type","ngModel"],["type","button",1,"btn","jp-ims-password-toggle",3,"click"],[1,"fa-solid",3,"ngClass"],[1,"text-end","mb-2"],["type","button",1,"btn","btn-link","btn-sm","p-0","jp-forgot-password-link",3,"click"],["class","jp-ims-login-field mb-3 jp-turnstile-form-group",4,"ngIf"],["type","button",1,"btn","w-100","rounded-3","fw-bold","jp-ims-login-submit--staff","py-2",3,"click","disabled"],[1,"card-error"],[1,"fa-solid","fa-circle-exclamation","me-1"],[1,"error-message"],[1,"jp-ims-login-field","mb-3","jp-turnstile-form-group"],["id","staff-turnstile-widget",1,"jp-turnstile-widget-host"],[1,"fa-solid","fa-spinner","fa-spin","me-1"],["class","alert alert-success py-2 small mb-2","role","status",4,"ngIf"],["type","text","id","registerNumber","placeholder","Enter Register Number","name","registerNumber","required","",1,"form-control",3,"ngModelChange","ngModel"],["class","jp-ims-login-field mb-2",4,"ngIf"],["class","jp-ims-login-field mb-2 jp-turnstile-form-group",4,"ngIf"],["type","button",1,"btn","w-100","rounded-3","fw-bold","jp-ims-login-submit--student","py-2",3,"click","disabled"],["role","status",1,"alert","alert-success","py-2","small","mb-2"],[1,"fa-solid","fa-circle-check","me-1"],["type","text","id","studentDomain","placeholder","Enter Domain","
1name","studentDomain","required","",1,"form-control",3,"ngModelChange","ngModel"],[1,"jp-ims-login-field","mb-2","jp-turnstile-form-group"],["id","student-turnstile-widget",1,"jp-turnstile-widget-host"],[1,"h6","fw-bold","text-center","mb-2",2,"color","var(--jp-ims-purple)"],["class","small text-center text-secondary mb-3",4,"ngIf"],[1,"jp-ims-login-field","mb-3"],["type","text","id","studentOTP","placeholder","Enter OTP","name","studentOTP","required","",1,"form-control",3,"ngModelChange","ngModel"],["type","button",1,"btn","w-100","rounded-3","fw-bold","jp-ims-login-submit--student","py-2","mb-2",3,"click","disabled"],["type","button",1,"back-btn","w-100",3,"click"],[1,"otp-instructions","list-unstyled","text-secondary","mt-3","mb-0"],[1,"mb-1"],[1,"fa-solid","fa-circle-check","me-1","text-success"],[1,"small","text-center","text-secondary","mb-3"],["id","inline-otp-turnstile-widget",1,"jp-turnstile-widget-host"],[1,"h6","fw-bold","text-center","mb-3",2,"color","var(--jp-ims-purple)"],["class","alert alert-success",4,"ngIf"],["class","small text-secondary",4,"ngIf"],[1,"small","text-warning","mb-2"],["type","text","id","otpToken","placeholder","Enter OTP Code","name","otpToken","required","",1,"form-control",3,"ngModelChange","ngModel"],["id","newPassword","placeholder","New Password","name","newPassword","required","",1,"form-control",3,"ngModelChange","input","type","ngModel"],["id","confirmPassword","placeholder","Confirm Password","name","confirmPassword","required","",1,"form-control",3,"ngModelChange","input","type","ngModel"],["class","small text-secondary mb-3",4,"ngIf"],["type","button",1,"btn","w-100","rounded-3","fw-bold","jp-ims-login-submit--staff","py-2","mb-2",3,"click","disabled"],[1,"alert","alert-success"],[1,"small","text-secondary"],["id","reset-turnstile-widget",1,"jp-turnstile-widget-host"],[1,"small","text-secondary","mb-0","mt-1"],[1,"small","text-secondary","mb-3"]],template:function(o,t){o&1&&(r(0,"div",1)(1,"div",2)(2,"div",3),g(3,"img",4),n(),g(4,"div",5),f(5,Xn,9,8,"ng-container",6)(6,nr,19,6,"ng-container",6)(7,fr,28,20,"ng-container",6),r(8,"p",7),g(9,"i",8),s(10),n()()()),o&2&&(a(5),d("ngIf",!t.showOtpTab&&!t.showResetPassword),a(),d("ngIf",t.showOtpTab),a(),d("ngIf",t.showResetPassword),a(3),b(" ",t.currentYear," Ebullitent.com | All Rights Reserved "))},dependencies:[Se,I,k,A,G,F],styles:[".jp-ims-login-page[_ngcontent-%COMP%] .alert[_ngcontent-%COMP%]{border-radius:.5rem;font-size:12px}.jp-ims-login-page[_ngcontent-%COMP%] .card-error[_ngcontent-%COMP%], .jp-ims-login-page[_ngcontent-%COMP%] .reset-error-message[_ngcontent-%COMP%]{background-color:#fef2f2;border:1px solid #fecaca;border-radius:.5rem;color:#b91c1c;font-size:12px;margin-bottom:.75rem;padding:.5rem .75rem}.jp-ims-login-page[_ngcontent-%COMP%] .error-message[_ngcontent-%COMP%]{color:#dc2626;font-size:11px;margin-top:.25rem}.jp-forgot-password-link[_ngcontent-%COMP%]{color:var(--jp-ims-purple);font-size:.8125rem;font-weight:600;text-decoration:none}.jp-forgot-password-link[_ngcontent-%COMP%]:hover{text-decoration:underline}.jp-ims-login-page[_ngcontent-%COMP%] .back-btn[_ngcontent-%COMP%]{background:transparent;border:0;color:var(--jp-ims-purple);font-size:12px;font-weight:600;margin-top:.5rem;text-decoration:underline}.jp-ims-login-page[_ngcontent-%COMP%] .otp-instructions[_ngcontent-%COMP%]{font-size:11px;margin-top:1rem}"]})}return i})();var ur=Bi(ji());var gr=["updateProfileForm"],hr=()=>["Dr.","Mr.","Mrs.","Ms."],_r=()=>[];function vr(i,m){if(i&1&&(r(0,"ng-option",186),s(1),n()),i&2){let e=m.$implicit;d("value",e),a(),x(e)}}function Sr(i,m){i&1&&(r(0,"div",69),s(1,"Salutation is required."),n())}function yr(i,m){i&1&&(r(0,"div",69),s(1,"First Name is required."),n())}function Cr(i,m){i&1&&(r(0,"div",69),s(1,"Middle Name is required."),n())}function wr(i,m){i&1&&(r(0,"div",69),s(1,"Last Name is required."),n())}function Pr(i,m){i&1&&(r(0,"span"),s(1,"Phone is required."),n())}function xr(i,m){i&1&&(r(0,"span"),s(1,"Phone must be exactly 10 digits."),n())}function Er(i,m){if(i&1&&(r(0,"div",69),f(1,Pr,2,0,"span",185)(2,xr,2,0,"span",185),n()),i&2){u();let e=C(72);a(),d("ngIf",e.errors==null?null:e.errors.required),a(),d("ngIf",e.errors==null?null:e.errors.pattern)}}function Tr(i,m){if(i&1&&(r(0,"option",186),s(1),n()),i&2){let e=m.$implicit;d("value",e.id),a(),x(e.name)}}
1function br(i,m){i&1&&(r(0,"div",69),s(1,"Designation is required."),n())}function Mr(i,m){i&1&&(r(0,"div",69),s(1,"Employee Id is required."),n())}function Ir(i,m){i&1&&(r(0,"span"),s(1,"Alternate Contact No is required."),n())}function Lr(i,m){i&1&&(r(0,"span"),s(1,"Alternate Contact No must be exactly 10 digits."),n())}function kr(i,m){if(i&1&&(r(0,"div",69),f(1,Ir,2,0,"span",185)(2,Lr,2,0,"span",185),n()),i&2){u();let e=C(113);a(),d("ngIf",e.errors==null?null:e.errors.required),a(),d("ngIf",e.errors==null?null:e.errors.pattern)}}function Ar(i,m){i&1&&(r(0,"div",69),s(1,"Personal Email is required."),n())}function Or(i,m){i&1&&(r(0,"div",69),s(1,"Nationality is required."),n())}function Nr(i,m){i&1&&(r(0,"div",69),s(1,"Religion is required."),n())}function Vr(i,m){i&1&&(r(0,"div",69),s(1,"Caste is required."),n())}function Rr(i,m){i&1&&(r(0,"div",69),s(1,"Spouse Name is required."),n())}function Fr(i,m){if(i&1){let e=T();r(0,"div",67)(1,"label",83)(2,"strong"),s(3,"Spouse Name "),r(4,"span",69),s(5," *"),n()(),r(6,"span",70),s(7,":"),n()(),r(8,"div",66)(9,"input",187,56),y("ngModelChange",function(t){h(e);let l=u();return S(l.profile.spouseName,t)||(l.profile.spouseName=t),_(t)}),n(),g(11,"span",188),f(12,Rr,2,0,"div",76),n()()}if(i&2){let e=C(10),o=u(),t=C(8);a(9),v("ngModel",o.profile.spouseName),a(3),d("ngIf",e.invalid&&(e.touched||t.submitted))}}function Br(i,m){i&1&&(r(0,"div",69),s(1,"Specialization is required."),n())}function jr(i,m){if(i&1&&(r(0,"option",186),s(1),n()),i&2){let e=m.$implicit;d("value",e.id),a(),x(e.name)}}function Wr(i,m){i&1&&(r(0,"div",69),s(1,"Staff Type is required."),n())}function Dr(i,m){i&1&&(r(0,"div",69),s(1,"Gender is required."),n())}function Ur(i,m){i&1&&(r(0,"div",69),s(1,"Marital Status is required."),n())}function qr(i,m){if(i&1&&(r(0,"ng-option",186),s(1),n()),i&2){let e=m.$implicit;d("value",e),a(),x(e)}}function Hr(i,m){i&1&&(r(0,"div",69),s(1,"Blood Group is required."),n())}function Gr(i,m){if(i&1&&(r(0,"ng-option",186),s(1),n()),i&2){let e=m.$implicit;d("value",e),a(),x(e)}}function zr(i,m){i&1&&(r(0,"div",69),s(1,"Date of Birth Date is required."),n())}function Yr(i,m){if(i&1&&(r(0,"ng-option",186),s(1),n()),i&2){let e=m.$implicit;d("value",e),a(),x(e)}}function Kr(i,m){i&1&&(r(0,"div",69),s(1,"Date of Birth Month is required."),n())}function Jr(i,m){i&1&&(r(0,"div",69),s(1,"Date of Birth Year is required."),n())}function Qr(i,m){if(i&1&&(r(0,"ng-option",186),s(1),n()),i&2){let e=m.$implicit;d("value",e),a(),x(e)}}function Zr(i,m){i&1&&(r(0,"div",69),s(1,"Date of Joining Date is required."),n())}function Xr(i,m){if(i&1&&(r(0,"ng-option",186),s(1),n()),i&2){let e=m.$implicit;d("value",e),a(),x(e)}}function $r(i,m){i&1&&(r(0,"div",69),s(1,"Date of Joining Month is required."),n())}function eo(i,m){i&1&&(r(0,"div",69),s(1,"Date of Joining Year is required."),n())}function to(i,m){i&1&&(r(0,"div",69),s(1,"Father Name is required."),n())}function io(i,m){i&1&&(r(0,"div",69),s(1,"Mother Name is required."),n())}function no(i,m){i&1&&(r(0,"div",69),s(1,"Emergency Name is required."),n())}function ro(i,m){i&1&&(r(0,"span"),s(1,"Emergency Phone is required."),n())}function oo(i,m){i&1&&(r(0,"span"),s(1,"Emergency Phone must be exactly 10 digits."),n())}function ao(i,m){if(i&1&&(r(0,"div",69),f(1,ro,2,0,"span",185)(2,oo,2,0,"span",185),n()),i&2){u();let e=C(373);a(),d("ngIf",e.errors==null?null:e.errors.required),a(),d("ngIf",e.errors==null?null:e.errors.pattern)}}function so(i,m){i&1&&(r(0,"div",69),s(1,"Emergency Email is required."),n())}function lo(i,m){i&1&&(r(0,"div",69),s(1,"Emergency Relation is required."),n())}function po(i,m){i&1&&(r(0,"div",69),s(1,"Permanent Address Line 1 is required."),n())}function mo(i,m){i&1&&(r(0,"div",69),s(1,"Permanent Address Line 2 is required."),n())}function co(i,m){i&1&&(r(0,"div",69),s(1,"Permanent City is required."),n())}function fo(i,m){i&1&&(r(0,"div",69),s(1,"Permanent Pin is required."),n())}function uo(i,m){i&1&&(r(0,"div",69),s(1,"Permanent State is required."),n())}function go(i,m){i&1&&(r(0,"div",69),s(1,"Permanent Country is required."),n())}function ho(i,m){i&1&&(r(0,"div",69),s(1,"Temporary Address Line 1 is required."),n())}function _o(i,m){i&1&&(r(0,"div",69),s(1,"Temporary Address Line 2 is required."),n())}function vo(i,m){i&1&&(r(0,"div",69),s(1,"Temporary City is required."),n())}function So(i,m){i&1&&(r(0,"div",69),s(1,"Temporary Pin is required."),n())}
1function yo(i,m){i&1&&(r(0,"div",69),s(1,"Temporary State is required."),n())}function Co(i,m){i&1&&(r(0,"div",69),s(1,"Temporary Country is required."),n())}function wo(i,m){i&1&&(r(0,"div",69),s(1,"Emergency Address Line 1 is required."),n())}function Po(i,m){i&1&&(r(0,"div",69),s(1,"Emergency Address Line 2 is required."),n())}function xo(i,m){i&1&&(r(0,"div",69),s(1,"Emergency City is required."),n())}function Eo(i,m){i&1&&(r(0,"div",69),s(1,"Emergency Pin is required."),n())}function To(i,m){i&1&&(r(0,"div",69),s(1,"Emergency State is required."),n())}function bo(i,m){i&1&&(r(0,"div",69),s(1,"Emergency Country is required."),n())}function Mo(i,m){i&1&&(r(0,"div",69),s(1,"Pancard No is required."),n())}function Io(i,m){i&1&&(r(0,"div",69),s(1,"Pancard Front is required."),n())}function Lo(i,m){if(i&1&&(r(0,"div",69),s(1),n()),i&2){let e=u(2);a(),x(e.panCardImageError)}}function ko(i,m){if(i&1){let e=T();U(0),r(1,"input",189,57),w("change",function(t){h(e);let l=u();return _(l.onFileChange(t,"panCard"))}),n(),r(3,"small",190),s(4),n(),f(5,Io,2,0,"div",76)(6,Lo,2,1,"div",76),q()}if(i&2){let e=C(2),o=u(),t=C(8);a(4),x(o.panCardLabel),a(),d("ngIf",t.submitted&&!e.files.length),a(),d("ngIf",o.panCardImageError)}}function Ao(i,m){i&1&&(r(0,"div",195)(1,"span",196),g(2,"i",197),s(3," Uploaded "),n()())}function Oo(i,m){if(i&1&&(r(0,"div",195)(1,"div",198)(2,"div",199),s(3),n()()()),i&2){let e=u(2);a(2),ve("width",e.uploadProgress.panCard,"%"),W("aria-valuenow",e.uploadProgress.panCard),a(),b(" ",e.uploadProgress.panCard,"% ")}}function No(i,m){if(i&1&&(r(0,"div",69),s(1),n()),i&2){let e=u(2);a(),x(e.panCardImageError)}}function Vo(i,m){if(i&1){let e=T();r(0,"div",191)(1,"span"),s(2),n(),r(3,"a",192),w("click",function(){h(e);let t=u();return _(t.removeFile("panCard"))}),g(4,"i",193),n()(),f(5,Ao,4,0,"div",194)(6,Oo,4,4,"div",194)(7,No,2,1,"div",76)}if(i&2){let e=u();a(2),x(e.panCardLabel),a(3),d("ngIf",e.panCardUpload&&!e.uploadingFiles.panCard),a(),d("ngIf",e.uploadingFiles.panCard),a(),d("ngIf",e.panCardImageError)}}function Ro(i,m){if(i&1&&(r(0,"div",200),g(1,"img",201),n()),i&2){let e=u();a(),d("src",e.panCardLocalPreview,ee)}}function Fo(i,m){if(i&1&&(r(0,"div",200),g(1,"img",201),n()),i&2){let e=u(2);a(),d("src",e.profile.fileAttachment.panCard.url,ee)}}function Bo(i,m){i&1&&(r(0,"div",204),g(1,"img",205),n())}function jo(i,m){if(i&1&&f(0,Fo,2,1,"div",202)(1,Bo,2,0,"div",203),i&2){let e=u();d("ngIf",e.profile.fileAttachment==null?null:e.profile.fileAttachment.panCard),a(),d("ngIf",!(e.profile.fileAttachment!=null&&e.profile.fileAttachment.panCard))}}function Wo(i,m){i&1&&(r(0,"div",69),s(1,"Aadhaar No is required."),n())}function Do(i,m){i&1&&(r(0,"div",69),s(1,"Aadhaar Card Front is required."),n())}function Uo(i,m){if(i&1&&(r(0,"div",69),s(1),n()),i&2){let e=u(2);a(),x(e.aadhaarFrontImageError)}}function qo(i,m){if(i&1){let e=T();U(0),r(1,"input",206,58),w("change",function(t){h(e);let l=u();return _(l.onFileChange(t,"adarCard"))}),n(),r(3,"small",190),s(4),n(),f(5,Do,2,0,"div",76)(6,Uo,2,1,"div",76),q()}if(i&2){let e=C(2),o=u(),t=C(8);a(4),x(o.adarCardLabel),a(),d("ngIf",t.submitted&&!e.files.length),a(),d("ngIf",o.aadhaarFrontImageError)}}function Ho(i,m){i&1&&(r(0,"div",195)(1,"span",196),g(2,"i",197),s(3," Uploaded "),n()())}function Go(i,m){if(i&1&&(r(0,"div",195)(1,"div",198)(2,"div",199),s(3),n()()()),i&2){let e=u(2);a(2),ve("width",e.uploadProgress.adarCard,"%"),W("aria-valuenow",e.uploadProgress.adarCard),a(),b(" ",e.uploadProgress.adarCard,"% ")}}function zo(i,m){if(i&1&&(r(0,"div",69),s(1),n()),i&2){let e=u(2);a(),x(e.aadhaarFrontImageError)}}function Yo(i,m){if(i&1){let e=T();r(0,"div",191)(1,"span"),s(2),n(),r(3,"a",192),w("click",function(){h(e);let t=u();return _(t.removeFile("adarCard"))}),g(4,"i",193),n()(),f(5,Ho,4,0,"div",194)(6,Go,4,4,"div",194)(7,zo,2,1,"div",76)}if(i&2){let e=u();a(2),x(e.adarCardLabel),a(3),d("ngIf",e.adarCardUpload&&!e.uploadingFiles.adarCard),a(),d("ngIf",e.uploadingFiles.adarCard),a(),d("ngIf",e.aadhaarFrontImageError)}}function Ko(i,m){if(i&1&&(r(0,"div",200),g(1,"img",201),n()),i&2){let e=u();a(),d("src",e.adarCardLocalPreview,ee)}}function Jo(i,m){if(i&1&&(r(0,"div",200),g(1,"img",201),n()),i&2){let e=u(2);a(),d("src",e.profile.fileAttachment.adarCard.url,ee)}}function Qo(i,m){i&1&&(r(0,"div",204),g(1,"img",205),n())}function Zo(i,m){if(i&1&&f(0,Jo,2,1,"div",202)(1,Qo,2,0,"div",203),i&2){let e=u();d("ngIf",e.profile.fileAttachment==null?null:e.profile.fileAttachment.adarCard),a(),d("ngIf",!(e.profile.fileAttachment!=null&&e.profile.fileAttachment.adarCard))}}function Xo(i,m){i&1&&(r(0,"div",69),s(1,"Aadhaar Card Back is required."),n())}function $o(i,m){if(i&1&&(r(0,"div",69),s(1),n()),i&2){let e=u(2);a(),x(e.aadhaarBackImageError)}}function ea(i,m){if(i&1){let e=T();U(0),r(1,"input",207,59),w("change",function(t){h(e);let l=u();return _(l.onFileChange(t,"aadhaarCardBack"))}),n(),r(3,"small",190),s(4),n(),f(5,Xo,2,0,"div",76)(6,$o,2,1,"div",76),q()}if(i&2){let e=C(2),o=u(),t=C(8);a(4),x(o.aadhaarCardBackLabel),a(),d("ngIf",t.submitted&&!e.files.length),a(),d("ngIf",o.aadhaarBackImageError)}}function ta(i,m){i&1&&(r(0,"div",195)(1,"span",196),g(2,"i",197),s(3," Uploaded "),n()())}function ia(i,m){if(i&1&&(r(0,"div",195)(1,"div",198)(2,"div",199),s(3),n()()()),i&2){let e=u(2);a(2),ve("width",e.uploadProgress.aadhaarCardBack,"%"),W("aria-valuenow",e.uploadProgress.aadhaarCardBack),a(),b(" ",e.uploadProgress.aadhaarCardBack,"% ")}}function na(i,m){if(i&1&&(r(0,"div",69),s(1),n()),i&2){let e=u(2);a(),x(e.aadhaarBackImageError)}}function ra(i,m){if(i&1){let e=T();r(0,"div",191)(1,"span"),s(2),n(),r(3,"a",192),w("click",function(){h(e);let t=u();return _(t.removeFile("aadhaarCardBack"))}),g(4,"i",193),n()(),f(5,ta,4,0,"div",194)(6,ia,4,4,"div",194)(7,na,2,1,"div",76)}if(i&2){let e=u();a(2),x(e.aadhaarCardBackLabel),a(3),d("ngIf",e.aadhaarCardBackUpload&&!e.uploadingFiles.aadhaarCardBack),a(),d("ngIf",e.uploadingFiles.aadhaarCardBack),a(),d("ngIf",e.aadhaarBackImageError)}}function oa(i,m){if(i&1&&(r(0,"div",200),g(1,"img",201),n()),i&2){let e=u();a(),d("src",e.aadhaarCardBackLocalPreview,ee)}}function aa(i,m){if(i&1&&(r(0,"div",200),g(1,"img",201),n()),i&2){let e=u(2);a(),d("src",e.profile.fileAttachment.aadhaarCardBack.url,ee)}}function sa(i,m){i&1&&(r(0,"div",204),g(1,"img",205),n())}function la(i,m){if(i&1&&f(0,aa,2,1,"div",202)(1,sa,2,0,"div",203),i&2){let e=u();d("ngIf",e.profile.fileAttachment==null?null:e.profile.fileAttachment.aadhaarCardBack),a(),d("ngIf",!(e.profile.fileAttachment!=null&&e.profile.fileAttachment.aadhaarCardBack))}}function da(i,m){i&1&&(r(0,"span"),g(1,"i",208),s(2,"Update"),n())}
1function pa(i,m){i&1&&(r(0,"span"),g(1,"span",209),s(2,"Loading..."),n())}var Pi=(()=>{class i{route;cookieService;http;loginService;userService;fileUploadService;ngZone;authTokenService;updateProfileForm;apiUrl="/api";email="";profile={salutation:"",name:"",middleName:"",lastName:"",phone:"",specialization:"",staffTypeId:"",gender:"",maritalStatus:"",bloodGroup:"",designationId:"",employeeId:"",altContactNo:"",personalEmail:"",nationality:"",religion:"",caste:"",dobDate:"",dobMonth:"",dobYear:"",dojDate:"",dojMonth:"",dojYear:"",fatherName:"",motherName:"",spouseName:"",addressline1:"",addressline2:"",city:"",pin:"",state:"",country:"",temporaryAddress:{temporaryAddressLine1:"",temporaryAddressLine2:"",tcity:"",tpin:"",tstate:"",tempCountry:""},emerAddressLine:{emerName:"",emerMobile:"",emerMail:"",relationship:"",emerAddressLine1:"",emerAddressLine2:"",emerCity:"",emerPin:"",emerState:"",emerCountry:""},fileAttachment:{panCard:null,adarCard:null,aadhaarCardBack:null},idCardDocument:null};workProfileData={identifyDetails:{panCard:"",adarCard:""}};designations=[];config={staffType:[]};currentUser;bloodGroupCon=["A+","A-","B+","B-","AB+","AB-","O+","O-"];date=Array.from({length:31},(e,o)=>o+1);month=["January","February","March","April","May","June","July","August","September","October","November","December"];panCardAttached=!1;panCardFile=null;panCardLabel="No file chosen";panCardUpload=!1;panCardLocalPreview=null;panCardImageError="";isButtonDisabled;adarCardAttached=!1;adarCardFile=null;adarCardLabel="No file chosen";adarCardUpload=!1;adarCardLocalPreview=null;aadhaarFrontImageError="";aadhaarCardBackAttached=!1;aadhaarCardBackFile=null;aadhaarCardBackLabel="No file chosen";aadhaarCardBackUpload=!1;aadhaarCardBackLocalPreview=null;aadhaarBackImageError="";uploadingFiles={};uploadProgress={};work;constructor(e,o,t,l,c,p,E,j){this.route=e,this.cookieService=o,this.http=t,this.loginService=l,this.userService=c,this.fileUploadService=p,this.ngZone=E,this.authTokenService=j}ngOnInit(){this.route.queryParams.subscribe(o=>{let t=o.token;if(t&&this.authTokenService.setToken(t),!this.authTokenService.getToken()){console.error("No authenticated session found");let l=document.getElementById("errorshowId");l&&(l.innerHTML="Authentication error. Please try logging in again.");return}this.desingnation(),this.staffType(),this.getCurrentUser()});let e=this.cookieService.get("currentUser");if(e)try{let o=JSON.parse(e);this.email=o.email||""}catch(o){console.error("Error parsing user info",o)}}getCurrentUser(){this.userService.getCurrentUser().then(e=>{this.currentUser=e,this.loadUserProfile(),this.getWorkProfile()})}loadUserProfile(){console.log("Loading user profile..."),this.userService.getUserDetails(this.currentUser.userId).then(e=>{console.log("User profile loaded:",e),this.profile=e,this.profile.emerAddressLine||(this.profile.emerAddressLine={emerName:"",emerMobile:"",emerMail:"",relationship:"",emerAddressLine1:"",emerAddressLine2:"",emerCity:"",emerPin:"",emerState:"",emerCountry:""}),this.profile.temporaryAddress||(this.profile.temporaryAddress={temporaryAddressLine1:"",temporaryAddressLine2:"",tcity:"",tpin:"",tstate:"",tempCountry:""}),this.profile.fileAttachment?(console.log("File attachments found:",this.profile.fileAttachment),this.profile.fileAttachment.panCard&&(this.panCardLabel=this.profile.fileAttachment.panCard.fileKey||"File attached",this.panCardAttached=!0,this.panCardUpload=!0,console.log("PAN card exists:",this.panCardLabel)),this.profile.fileAttachment.adarCard&&(this.adarCardLabel=this.profile.fileAttachment.adarCard.fileKey||"File attached",this.adarCardAttached=!0,this.adarCardUpload=!0,console.log("Aadhaar front exists:",this.adarCardLabel)),this.profile.fileAttachment.aadhaarCardBack&&(this.aadhaarCardBackLabel=this.profile.fileAttachment.aadhaarCardBack.fileKey||"File attached",this.aadhaarCardBackAttached=!0,this.aadhaarCardBackUpload=!0,console.log("Aadhaar back exists:",this.aadhaarCardBackLabel))):(console.log("No file attachments found in profile"),this.profile.fileAttachment={})}).catch(e=>{console.error("Error loading user profile:",e),alert("Failed to load your profile. Please refresh the page and try again.")})}sameAsPermanent(e){e.temporaryAddress.temporaryAddressLine1=e.addressline1,e.temporaryAddress.temporaryAddressLine2=e.addressline2,e.temporaryAddress.tcity=e.city,e.temporaryAddress.tpin=e.pin,e.temporaryAddress.tstate=e.state,e.temporaryAddress.tempCountry=e.country}isNumberKey(e){let o=e.which?e.which:e.keyCode;return!(o>31&&(o<48||o>57))}
1trimValue(e){e.target.value=e.target.value.trim()}onFileChange(e,o){let t=e.target.files[0];if(!t){o==="panCard"&&(this.panCardLocalPreview=null),o==="adarCard"&&(this.adarCardLocalPreview=null),o==="aadhaarCardBack"&&(this.aadhaarCardBackLocalPreview=null);return}let l=["jpg","jpeg","png"],c=t.name.split(".").pop()?.toLowerCase()||"",p=t.size/1024;if(!l.includes(c)){alert("Please select a valid image file (JPG or PNG)"),e.target.value="";return}if(p<25){alert("File size must be at least 25KB"),e.target.value="";return}if(p>1024){alert("File size must be less than 1MB"),e.target.value="";return}if(o==="panCard"){this.panCardAttached=!0,this.panCardFile=t,this.panCardLabel=t.name,this.panCardUpload=!1,this.panCardImageError="";let E=new FileReader;E.onload=()=>this.panCardLocalPreview=E.result,E.readAsDataURL(t),this.autoUploadFile(t,"panCard")}else if(o==="adarCard"){this.adarCardAttached=!0,this.adarCardFile=t,this.adarCardLabel=t.name,this.adarCardUpload=!1,this.aadhaarFrontImageError="";let E=new FileReader;E.onload=()=>this.adarCardLocalPreview=E.result,E.readAsDataURL(t),this.autoUploadFile(t,"adarCard")}else if(o==="aadhaarCardBack"){this.aadhaarCardBackAttached=!0,this.aadhaarCardBackFile=t,this.aadhaarCardBackLabel=t.name,this.aadhaarCardBackUpload=!1,this.aadhaarBackImageError="";let E=new FileReader;E.onload=()=>this.aadhaarCardBackLocalPreview=E.result,E.readAsDataURL(t),this.autoUploadFile(t,"aadhaarCardBack")}}autoUploadFile(e,o){this.uploadingFiles[o]=!0,this.uploadProgress[o]=0;let t=setInterval(()=>{this.uploadProgress[o]<90&&(this.uploadProgress[o]+=10)},200);this.fileUploadService.uploadFileData(e).then(l=>{clearInterval(t),this.uploadProgress[o]=100,this.profile.fileAttachment||(this.profile.fileAttachment={}),o==="panCard"?(this.panCardUpload=!0,this.profile.fileAttachment.panCard=l,this.panCardImageError=""):o==="adarCard"?(this.adarCardUpload=!0,this.profile.fileAttachment.adarCard=l,this.aadhaarFrontImageError=""):o==="aadhaarCardBack"&&(this.aadhaarCardBackUpload=!0,this.profile.fileAttachment.aadhaarCardBack=l,this.aadhaarBackImageError=""),setTimeout(()=>{this.uploadingFiles[o]=!1},500)}).catch(l=>{clearInterval(t),this.uploadingFiles[o]=!1,this.uploadProgress[o]=0,console.error("Upload failed for",o,l),alert("Failed to upload file. Please try again."),this.resetAttachmentAfterFailedUpload(o)})}resetAttachmentAfterFailedUpload(e){if(e==="panCard"){this.panCardAttached=!1,this.panCardFile=null,this.panCardLabel="No file chosen",this.panCardUpload=!1,this.panCardLocalPreview=null;let o=document.getElementById("pan");o&&(o.value="")}else if(e==="adarCard"){this.adarCardAttached=!1,this.adarCardFile=null,this.adarCardLabel="No file chosen",this.adarCardUpload=!1,this.adarCardLocalPreview=null;let o=document.getElementById("aadhar");o&&(o.value="")}else if(e==="aadhaarCardBack"){this.aadhaarCardBackAttached=!1,this.aadhaarCardBackFile=null,this.aadhaarCardBackLabel="No file chosen",this.aadhaarCardBackUpload=!1,this.aadhaarCardBackLocalPreview=null;let o=document.getElementById("aadharBack");o&&(o.value="")}}uploadFiles(e){let o=null;e==="panCard"?o=this.panCardFile:e==="adarCard"?o=this.adarCardFile:e==="aadhaarCardBack"&&(o=this.aadhaarCardBackFile),o&&this.autoUploadFile(o,e)}removeFile(e){if(this.uploadingFiles[e]=!1,this.uploadProgress[e]=0,e==="panCard"){this.panCardAttached=!1,this.panCardFile=null,this.panCardLabel="No file chosen",this.panCardUpload=!1,this.panCardLocalPreview=null;let o=document.getElementById("pan");if(o&&(o.value=""),this.profile.fileAttachment?.panCard){let t=this.profile.fileAttachment.panCard.versionId,l=this.profile.fileAttachment.panCard.fileKey;t&&l?this.fileUploadService.AssignmentdeleteFile(t,l).then(()=>{console.log("PAN card removed successfully"),this.profile.fileAttachment.panCard=null}).catch(c=>{console.error("Failed to delete PAN card:",c),alert("Failed to delete file. Please try again.")}):this.profile.fileAttachment.panCard=null}else this.profile.fileAttachment.panCard=null}else if(e==="adarCard"){this.adarCardAttached=!1,this.adarCardFile=null,this.adarCardLabel="No file chosen",this.adarCardUpload=!1,this.adarCardLocalPreview=null;let o=document.getElementById("aadhar");if(o&&(o.value=""),this.profile.fileAttachment?.adarCard){let t=this.profile.fileAttachment.adarCard.versionId,l=this.profile.fileAttachment.adarCard.fileKey;t&&l?this.fileUploadService.AssignmentdeleteFile(t,l).then(()=>{console.log("Aadhaar front removed successfully"),this.profile.fileAttachment.adarCard=null}).catch(c=>{console.error("Failed to delete Aadhaar front:",c),alert("Failed to delete file. Please try again.")}):this.profile.fileAttachment.adarCard=null}else this.profile.fileAttachment.adarCard=null}else if(e==="aadhaarCardBack"){this.aadhaarCardBackAttached=!1,this.aadhaarCardBackFile=null,this.aadhaarCardBackLabel="No file chosen",this.aadhaarCardBackUpload=!1,this.aadhaarCardBackLocalPreview=null;let o=document.getElementById("aadharBack");if(o&&(o.value=""),this.profile.fileAttachment?.aadhaarCardBack){let t=this.profile.fileAttachment.aadhaarCardBack.versionId,l=this.profile.fileAttachment.aadhaarCardBack.fileKey;t&&l?this.fileUploadService.AssignmentdeleteFile(t,l).then(()=>{console.log("Aadhaar back removed successfully"),this.profile.fileAttachment.aadhaarCardBack=null}).catch(c=>{console.error("Failed to delete Aadhaar back:",c),alert("Failed to delete file. Please try again.")}):this.profile.fileAttachment.aadhaarCardBack=null}else this.profile.fileAttachment.aadhaarCardBack=null}}validateProfileAttachment(e,o,t){console.log("validateProfileAttachment called with fileId:",e);let l="";e==="pan"?l="panCard":e==="aadhar"?l="adarCard":e==="aadharBack"&&(l="aadhaarCardBack"),this.onFileChange(t,l)}uploadAttachFile(e,o){console.log("uploadAttachFile called with fileId:",o),this.uploadFiles(o)}deleteFile(e,o){console.log("deleteFile called with fileId:",o),this.removeFile(o)}updateProfile(e){if(this.isButtonDisabled=!0,this.updateProfileForm&&this.updateProfileForm.invali
1d){Object.values(this.updateProfileForm.controls).forEach(c=>{c.markAsTouched()}),document.getElementById("errorshowId").innerHTML="Please fill all required fields",this.isButtonDisabled=!1;return}if(this.panCardImageError="",this.aadhaarFrontImageError="",this.aadhaarBackImageError="",!this.profile.fileAttachment){document.getElementById("errorshowId").innerHTML="Aadhaar and pancard Details missing",this.isButtonDisabled=!1;return}let o=this.panCardUpload&&this.profile.fileAttachment.panCard,t=this.adarCardUpload&&this.profile.fileAttachment.adarCard,l=this.aadhaarCardBackUpload&&this.profile.fileAttachment.aadhaarCardBack;if(this.panCardUpload||(this.panCardImageError="Pancard Front must be uploaded.",this.isButtonDisabled=!1),this.adarCardUpload||(this.aadhaarFrontImageError="Aadhaar Card Front must be uploaded.",this.isButtonDisabled=!1),this.aadhaarCardBackUpload||(this.aadhaarBackImageError="Aadhaar Card Back must be uploaded.",this.isButtonDisabled=!1),!o||!t||!l){document.getElementById("errorshowId").innerHTML="Please upload all required images.",this.isButtonDisabled=!1;return}if(!this.workProfileData.identifyDetails.panCard||!this.workProfileData.identifyDetails.adarCard){document.getElementById("errorshowId").innerHTML="PAN Card Number or Aadhar Card Number is required",this.isButtonDisabled=!1;return}document.getElementById("errorshowId").innerHTML="",this.processProfileUpdate(e)}processProfileUpdate(e){e.dobDate&&e.dobMonth&&e.dobYear&&(e.dob=e.dobDate+"-"+e.dobMonth+"-"+e.dobYear),e.dojDate&&e.dojMonth&&e.dojYear&&(e.doj=e.dojDate+"-"+e.dojMonth+"-"+e.dojYear),e.identifyDetails=this.workProfileData?.identifyDetails;let o={identifyDetails:this.workProfileData?.identifyDetails};this.userService.updateWorkProfile(e.id,o).then(t=>{console.log("Work profile updated",t),this.userService.updateUserProfile(e.id,e).then(l=>{if(l){this.isButtonDisabled=!1,alert("Profile updated successfully");let c="/dashboard";l.nextPage&&(c=window.location.protocol+"//"+window.location.host+"/"+l.nextPage),window.location.href=c}}).catch(l=>{this.isButtonDisabled=!1,document.getElementById("errorshowId").innerHTML="Failed to update user profile. Please try again.",console.error("User profile update error",l)})}).catch(t=>{this.isButtonDisabled=!1,document.getElementById("errorshowId").innerHTML="Failed to update work profile. Please try again.",console.error("Work profile update error",t)})}getMonthNumber(e){let o=this.month.findIndex(t=>t===e)+1;return o<10?"0"+o:String(o)}validateForm(){let e=!0;return document.getElementById("errorshowId").innerHTML="",document.getElementById("salutation").innerHTML="",document.getElementById("firstName").innerHTML="",document.getElementById("phone").innerHTML="",this.profile.salutation||(document.getElementById("salutation").innerHTML="Please select salutation",e=!1),this.profile.name||(document.getElementById("firstName").innerHTML="Please enter first name",e=!1),this.profile.phone||(document.getElementById("phone").innerHTML="Please enter phone number",e=!1),e||(document.getElementById("errorshowId").innerHTML="Please fill all required fields"),e}desingnation(){this.loginService.designation().then(e=>{console.log(e,"data"),this.designations=e})}staffType(){this.loginService.staffType().then(e=>{console.log(e,"data"),this.config.staffType=e,console.log(this.config.staffType,"this.config.staffType")})}getWorkProfile(){this.userService.getWorkProfile(this.currentUser.userId,this.currentUser.email).then(e=>{console.log(e,"data"),this.work=e,console.log(this.work,"this.work"),this.work.identifyDetails.panCard!=null&&this.work.identifyDetails.adarCard&&(this.workProfileData=this.work)})}static \u0275fac=function(o){return new(o||i)(P(H),P(J),P(Jt),P(N),P(Q),P(di),P(Gt),P(X))};static \u0275cmp=M({type:i,selectors:[["app-edit-staff-personal-info"]],viewQuery:function(o,t){if(o&1&&re(gr,5),o&2){let l;oe(l=ae())&&(t.updateProfileForm=l.first)}},decls:571,vars:127,consts:[["updateProfileForm","ngForm"],["salutationRef","ngModel"],["nameRef","ngModel"],["middleNameRef","ngModel"],["lastNameRef","ngModel"],["phoneRef","ngModel"],["designationRef","ngModel"],["employeeIdRef","ngModel"],["altContactNoRef","ngModel"],["personalEmailRef","ngModel"],["nationalityRef","ngModel"],["religionRef","ngModel"],["casteRef","ngModel"],["specializationRef","ngModel"],["staffTypeRef","ngModel"],["genderRef","ngModel"],["maritalStatusRef","ngModel"],["bloodGroupRef","ngModel"],["dobDateRef","ngModel"],["dobMonthRef","ngModel"],["dobYearRef","ngModel"],["dojDateRef","ngModel"],["dojMonthRef","ngModel"],["dojYearRef","ngModel"],["fatherNameRef","ngModel"],["motherNameRef","ngModel"],["emerNameRef","ngModel"],["emerMobileRef","ngModel"],["emerMailRef","ngModel"],["relationshipRef","ngModel"],["addressline1Ref","ngModel"],["addressline2Ref","ngModel"],["cityRef","ngModel"],["pinRef","ngModel"],["stateRef","ngModel"],["countryRef","ngModel"],["temporaryAddressLine1Ref","ngModel"],["temporaryAddressLine2Ref","ngModel"],["tcityRef","ngModel"],["tpinRef","ngModel"],["tstateRef","ngModel"],["tempCountryRef","ngModel"],["emerAddressLine1Ref","ngModel"],["emerAddressLine2Ref","ngModel"],["emerCityRef","ngModel"],["emerPinRef","ngModel"],["emerStateRef","ngModel"],["emerCountryRef","ngModel"],["panCardNoRef","ngModel"],["panCardHide",""],["panCardServerPreview",""],["aadharCardNoRef","ngModel"],["adarCardHide",""],["adarCardServerPreview",""],["aadhaarCardBackHide",""],["aadhaarCardBackServerPreview",""],["spouseNameRef","ngModel"],["pancardFrontInput",""],["aadhaarCardFrontInput",""],["aadhaarCardBackInput",""],[1,"d-flex","justify-content-center"],[2,"background","#f8f9fa","border","2px solid #0d6efd","border-radius","18px","padding","32px 24px","max-width","1100px","width","100%"],[1,"text-center","mb-4"],[1,"badge","bg-primary","text-white","fs-5","py-3","px-4"],["name","updateProfileForm",1,"container","form-horizontal",3,"ngSubmit"],[1,"row"],[1,"col-md-6"],[1,"form-group","row"],[1,"col-form-label","col-md-4","text-md-right","d-flex","justify-content-between"],[1,"text-danger"],[1,"mx-1"],[1,"col-md-4"],["name","salutation","required","","placeholder","Select",1,"",3,"ngModelChange","ngModel"],["value",""],[3,"value",4,"ngFor","ngForOf"],["id","salutation",1,"text-danger"],["class","text-danger",4,"ngIf"],["type","text","name","name","placeholder","Name","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["id","firstName",1,"text-danger"],["type","text","name","middleName","placeholder","MiddleName",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["id","middleName",1,"text-danger"],["type","text","name","lastName","placeholder","LastName",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["id","lastName",1,"text-danger"],[1,"col-form-label","text-md-right","col-md-4","d-flex","justify-content-between"],["type","text","name","phone","placeholder","Phone","required","","pattern","^[0-9]{10}$","maxlength","10",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["name","designation","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["id","designation",1,"text-danger"],["type","text","name","employeeId","placeholder","Employee Id","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["id","employeeId",1,"text-danger"],["type","text","name","altContactNo","placeholder","Another Contact No","required","","pattern","^[0-9]{10}$","maxlength","10",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["type","text","name","personalEmail","placeholder","Personal Email","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["id","email",1,"text-danger"],["type","text","name","nationality","placeholder","Nationality","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["id","nationality",1,"text-danger"],["type","text","name","religion","placeholder","Religion","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["type","text","name","caste","placeholder","Caste","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["class","form-group row",4,"ngIf"],["type","text","name","specialization","placeholder","Specialization","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["id","specialization",1,"text-danger"],["name","staffType","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["id","staffType",1,"text-danger"],[1,"radio-inline"],["type","radio","name","gender","value","Male","required","",3,"ngModelChange","ngModel"],["type","radio","name","gender","value","Female","required","",3,"ngModelChange","ngModel"],["id","gender",1,"text-danger"],["type","radio","name","maritalStatus","value","Single","required","",3,"ngModelChange","ngModel"],["type","radio","name","maritalStatus","value","Married","required","",3,"ngModelChange","ngModel"],["id","maritalStatus",1,"text-danger"],["name","bloodGroup","required","","placeholder","---Select Blood Group---",3,"ngModelChange","ngModel"],["id","bloodGroup",1,"text-danger"],["type","text","name","email","placeholder","Email","id","email","required","","disabled","disabled",1,"form-control","input-sm",3,"ngModelChange","ngModel"],[1,"col-md-3"],["id","date","name","dobDate","required","","placeholder","date",3,"ngModelChange","ngModel"],["id","DOB","name","dobMonth","required","","placeholder","month",3,"ngModelChange","ngModel"],[1,"col-md-2"],["maxlength","4","name","dobYear","type","text","placeholder","Year","id","dobYear","placeholder","year","required","",1,"form-control","input-sm",3,"ngModelChange","keypress","change","ngModel"],[1,"offset-4"],["id","dobMonth",1,"text-danger"],["id","dobYear",1,"text-danger"],["id","dobDate",1,"text-danger"],["id","date","name","dojDate","required","","placeholder","date",3,"ngModelChange","ngModel"],["id","DOJ","name","dojMonth","required","","placeholder","month",3,"ngModelChange","ngModel"],["maxlength","4","name","dojYear","placeholder","year","type","text","placeholder","Year","required","",1,"form-control","input-sm",3,"ngModelChange","keypress","change","ngModel"],["id","dojDate",1,"text-md-center","text-danger"],["id","dojMonth",1,"text-danger"],["id","dojYear",1,"text-danger"],["type","text","name","fatherName","placeholder","Father Name","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["id","fatherName",1,"text-danger"],["type","text","name","motherName","placeholder","Mother Name","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["id","motherName",1,"text-danger"],[1,"col-md-6",2,"padding-left","0%"],[1,"muted"],["type","text","name","emerName","placeholder","Name","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["id","emerName",1,"text-danger"],["type","text","name","emerMobile","placeholder","Emergency Phone","required","","pattern","^[0-9]{10}$","maxlength","10",1,"form-control","input-sm",3,"ngModelChange","ngModel"],[1,"controls","col-md-6"],["type","text","name","emerMail","placeholder","E-mail","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["id","emerEmail",1,"text-danger"],["type","text","name","relationship","placeholder","Relation","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["id","relationship",1,"text-danger"],[1,"mb-4"],["type","text","name","addressline1","placeholder","Address line 1","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["type","text","name","addressline2","placeholder","Address line 2","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["type","text","name","city","placeholder","City","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["type","text","name","pin","placeholder","Pin","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["type","text","name","state","placeholder","State","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["type","text","name","country","placeholder","Country","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],[1,"form-check"],["type","checkbox",1,"form-check-input",3,"click"],[1,"form-check-label"],["type","text","name","temporaryAddressLine1","placeholder","Temp. Address line 1","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["type","text","name","temporaryAddressLine2","placeholder","Temp. Address line 2","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["type","text","name","tcity","placeholder","Temp. City","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["type","text","name","tpin","placeholder","Temp. Pin","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["type","text","name","tstate","placeholder","Temp. State","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["type","text","name","tempCountry","placeholder","Temp. Country","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["type","text","name","emerAddressLine1","placeholder","Emer. Address line 1","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["type","text","name","emerAddressLine2","placeholder","Emer. Address line 2","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["type","text","name","emerCity","placeholder","Emer. City","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["type","text","name","emerPin","placeholder","Emer. Pin","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["type","text","name","emerState","placeholder","Emer. State","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["type","text","name","emerCountry","placeholder"," Emer. Country","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],[1,"my-3"],[1,"alert","alert-warning"],[1,"mb-2"],[1,"text-muted"],[1,"mb-0"],["aria-hidden","true",1,"fa","fa-info-circle","me-1"],["aria-hidden","true",1,"fa","fa-times","text-danger"],[1,"row","mb-4"],[1,"form-group","mb-3"],["type","text","name","panCard","required","","placeholder","Pancard No",1,"form-control",3,"ngModelChange","ngModel"],["id","panCardNoErr",1,"text-danger"],[1,"form-group"],["for","panCardAttached",1,"col-form-label"],[4,"ngIf","ngIfElse"],[1,"col-md-6","d-flex","align-items-center","justify-content-center"],["class","mt-4",4,"ngIf","ngIfElse"],["type","text","name","adarCard","required","","placeholder","Aadhaar No ",1,"form-control",3,"ngModelChange","ngModel"],["id","aadharCardNoErr",1,"text-danger"],["for","adarCardAttached",1,"col-form-label"],["for","aadhaarCardBackAttached",1,"col-form-label"],["id","errorshowId",1,"text-danger","text-center","mb-3"],[1,"text-center","m-3"],["type","submit",1,"btn","btn-success","mb-1",3,"click","disabled"],[4,"ngIf"],[3,"value"],["type","text","name","spouseName","placeholder","Spouse Name","required","",1,"form-control","input-sm",3,"ngModelChange","ngModel"],["id","spouseName",1,"text-danger"],["type","file","id","pan","name","panCard","accept",".jpg,.jpeg,.png","required","",1,"form-control",3,"change"],[1,"form-text","text-muted","mt-1"],[1,"d-flex","align-items-center","my-2"],[1,"mx-2",3,"click"],["aria-hidden","true",1,"fa","fa-times","text-danger",2,"font-size","18px"],["class","mt-2",4,"ngIf"],[1,"mt-2"],[1,"badge","bg-success"],[1,"fa","fa-check"],[1,"progress",2,"height","1.25rem"],["role","progressbar","aria-valuemin","0","aria-valuemax","100",1,"progress-bar","progress-bar-striped","progress-bar-animated"],[1,"mt-4"],[1,"img-thumbnail",2,"max-width","600px","max-height","300px","width","auto","height","auto",3,"src"],["class","mt-4",4,"ngIf"],["class","text-center border bg-light p-4 mt-4",4,"ngIf"],[1,"text-center","border","bg-light","p-4","mt-4"],["src","/images/screenshots/attach.png",2,"max-width","60px","max-height","40px"],["type","file","id","aadhar","name","adarCard","accept",".jpg,.jpeg,.png","required","",1,"form-control",3,"change"],["type","file","id","aadharBack","name","aadhaarCardBack","accept",".jpg,.jpeg,.png","required","",1,"form-control",3,"change"],[1,"fa","fa-edit","me-2"],["role","status","aria-hidden","true",1,"spinner-border","spinner-border-sm","me-2"]],template:function(o,t){if(o&1){let l=T();g(0,"br")(1,"br"),r(2,"div",60)(3,"div",61)(4,"div",62)(5,"span",63),s(6," Please Update You
1r Personal Information "),n()(),r(7,"form",64,0),w("ngSubmit",function(){return h(l),_(t.updateProfile(t.profile))}),r(9,"div",65)(10,"div",66)(11,"div",67)(12,"label",68)(13,"strong"),s(14,"Salutation"),r(15,"span",69),s(16," *"),n()(),r(17,"span",70),s(18,":"),n()(),r(19,"div",71)(20,"ng-select",72,1),y("ngModelChange",function(p){return h(l),S(t.profile.salutation,p)||(t.profile.salutation=p),_(p)}),r(22,"ng-option",73),s(23,"-------Select--------"),n(),f(24,vr,2,2,"ng-option",74),n(),g(25,"span",75),f(26,Sr,2,0,"div",76),n()(),r(27,"div",67)(28,"label",68)(29,"strong"),s(30,"First Name"),r(31,"span",69),s(32," *"),n()(),r(33,"span",70),s(34,":"),n()(),r(35,"div",66)(36,"input",77,2),y("ngModelChange",function(p){return h(l),S(t.profile.name,p)||(t.profile.name=p),_(p)}),n(),g(38,"span",78),f(39,yr,2,0,"div",76),n()(),r(40,"div",67)(41,"label",68)(42,"strong"),s(43,"Middle Name "),n(),r(44,"span",70),s(45,":"),n()(),r(46,"div",66)(47,"input",79,3),y("ngModelChange",function(p){return h(l),S(t.profile.middleName,p)||(t.profile.middleName=p),_(p)}),n(),g(49,"span",80),f(50,Cr,2,0,"div",76),n()(),r(51,"div",67)(52,"label",68)(53,"strong"),s(54,"Last Name "),n(),r(55,"span",70),s(56,":"),n()(),r(57,"div",66)(58,"input",81,4),y("ngModelChange",function(p){return h(l),S(t.profile.lastName,p)||(t.profile.lastName=p),_(p)}),n(),g(60,"span",82),f(61,wr,2,0,"div",76),n()(),r(62,"div",67)(63,"label",83)(64,"strong"),s(65,"Phone"),r(66,"span",69),s(67," *"),n()(),r(68,"span",70),s(69,":"),n()(),r(70,"div",66)(71,"input",84,5),y("ngModelChange",function(p){return h(l),S(t.profile.phone,p)||(t.profile.phone=p),_(p)}),n(),f(73,Er,3,2,"div",76),n()(),r(74,"div",67)(75,"label",83)(76,"strong"),s(77,"Designation "),r(78,"span",69),s(79," *"),n()(),r(80,"span",70),s(81,":"),n()(),r(82,"div",66)(83,"select",85,6),y("ngModelChange",function(p){return h(l),S(t.profile.designationId,p)||(t.profile.designationId=p),_(p)}),r(85,"option",73),s(86,"---------------------Select--------------------"),n(),f(87,Tr,2,2,"option",74),n(),g(88,"span",86),f(89,br,2,0,"div",76),n()(),r(90,"div",67)(91,"label",83)(92,"strong"),s(93,"Employee Id "),r(94,"span",69),s(95," *"),n()(),r(96,"span",70),s(97,":"),n()(),r(98,"div",66)(99,"input",87,7),y("ngModelChange",function(p){return h(l),S(t.profile.employeeId,p)||(t.profile.employeeId=p),_(p)}),n(),g(101,"span",88),f(102,Mr,2,0,"div",76),n()(),r(103,"div",67)(104,"label",83)(105,"strong"),s(106,"Alt Contact No "),r(107,"span",69),s(108," *"),n()(),r(109,"span",70),s(110,":"),n()(),r(111,"div",66)(112,"input",89,8),y("ngModelChange",function(p){return h(l),S(t.profile.altContactNo,p)||(t.profile.altContactNo=p),_(p)}),n(),f(114,kr,3,2,"div",76),n()(),r(115,"div",67)(116,"label",83)(117,"strong"),s(118,"Personal Email "),r(119,"span",69),s(120," *"),n()(),r(121,"span",70),s(122,":"),n()(),r(123,"div",66)(124,"input",90,9),y("ngModelChange",function(p){return h(l),S(t.profile.personalEmail,p)||(t.profile.personalEmail=p),_(p)}),n(),g(126,"span",91),f(127,Ar,2,0,"div",76),n()(),r(128,"div",67)(129,"label",83)(130,"strong"),s(131,"Nationality "),r(132,"span",69),s(133," *"),n()(),r(134,"span",70),s(135,":"),n()(),r(136,"div",66)(137,"input",92,10),y("ngModelChange",function(p){return h(l),S(t.profile.nationality,p)||(t.profile.nationality=p),_(p)}),n(),g(139,"span",93),f(140,Or,2,0,"div",76),n()(),r(141,"div",67)(142,"label",83)(143,"strong"),s(144,"Religion "),r(145,"span",69),s(146," *"),n()(),r(147,"span",70),s(148,":"),n()(),r(149,"div",66)(150,"input",94,11),y("ngModelChange",function(p){return h(l),S(t.profile.religion,p)||(t.profile.religion=p),_(p)}),n(),f(152,Nr,2,0,"div",76),n()(),r(153,"div",67)(154,"label",83)(155,"strong"),s(156,"Caste "),r(157,"span",69),s(158," *"),n()(),r(159,"span",70),s(160,":"),n()(),r(161,"div",66)(162,"input",95,12),y("ngModelChange",function(p){return h(l),S(t.profile.caste,p)||(t.profile.caste=p),_(p)}),n(),f(164,Vr,2,0,"div",76),n()(),f(165,Fr,13,2,"div",96),n(),r(166,"div",66)(167,"div",67)(168,"label",83)(169,"strong"),s(170,"Specialization"),r(171,"span",69),s(172," *"),n()(),r(173,"span",70),s(174,":"),n()(),r(175,"div",66)(176,"input",97,13),y("ngModelChange",function(p){return h(l),S(t.profile.specialization,p)||(t.profile.specialization=p),_(p)}),n(),g(178,"span",98),f(179,Br,2,0,"div",76),n()(),r(180,"div",67)(181,"label",83)(182,"strong"),s(183,"Staff Type "),r(184,"span",69),s(185,"*"),n()(),r(186,"span",70),s(187,":"),n()(),r(188,"div",66)(189,"select",99,14),y("ngModelChange",function(p){return h(l),S(t.profile.staffTypeId,p)||(t.profile.staffTypeId=p),_(p)}),r(191,"option",73),s(192,"-----------------Select-----------------"),n(),f(193,jr,2,2,"option",74),n(),g(194,"span",100),f(195,Wr,2,0,"div",76),n()(),r(196,"div",67)(197,"label",83)(198,"strong"),s(199,"Gender"),r(200,"span",69),s(201," *"),n()(),r(202,"span",70),s(203,":"),n()(),r(204,"div",66)(205,"label",101)(206,"input",102,15),y("ngModelChange",function(p){return h(l),S(t.profile.gender,p)||(t.profile.gender=p),_(p)}),n(),s(208," Male "),n(),r(209,"label",101)(210,"input",103),y("ngModelChange",function(p){return h(l),S(t.profile.gender,p)||(t.profile.gender=p),_(p)}),n(),s(211," Female "),n(),g(212,"span",104),f(213,Dr,2,0,"div",76),n()(),r(214,"div",67)(215,"label",83)(216,"strong"),s(217,"Marital status"),r(218,"span",69),s(219," *"),n()(),r(220,"span",70),s(221,":"),n()(),r(222,"div",66)(223,"label",101)(224,"input",105,16),y("ngModelChange",function(p){return h(l),S(t.profile.maritalStatus,p)||(t.profile.maritalStatus=p),_(p)}),n(),s(226," Single "),n(),r(227,"label",101)(228,"input",106),y("ngModelChange",function(p){return h(l),S(t.profile.maritalStatus,p)||(t.profile.maritalStatus=p),_(p)}),n(),s(229," Married "),n(),g(230,"span",107),f(231,Ur,2,0,"div",76),n()(),r(232,"div",67)(233,"label",83)(234,"strong"),s(235,"Blood Group "),r(236,"span",69),s(237," *"),n()(),r(238,"
1span",70),s(239,":"),n()(),r(240,"div",66)(241,"ng-select",108,17),y("ngModelChange",function(p){return h(l),S(t.profile.bloodGroup,p)||(t.profile.bloodGroup=p),_(p)}),r(243,"ng-option",73),s(244,"--------------Select------------"),n(),f(245,qr,2,2,"ng-option",74),n(),g(246,"span",109),f(247,Hr,2,0,"div",76),n()(),r(248,"div",67)(249,"label",83)(250,"strong"),s(251,"Email"),r(252,"span",69),s(253," *"),n()(),r(254,"span",70),s(255,":"),n()(),r(256,"div",66)(257,"input",110),y("ngModelChange",function(p){return h(l),S(t.email,p)||(t.email=p),_(p)}),n()()(),r(258,"div",67)(259,"label",83)(260,"strong"),s(261,"Date Of Birth "),r(262,"span",69),s(263," *"),n()(),r(264,"span",70),s(265,":"),n()(),r(266,"div",111)(267,"ng-select",112,18),y("ngModelChange",function(p){return h(l),S(t.profile.dobDate,p)||(t.profile.dobDate=p),_(p)}),r(269,"ng-option",73),s(270,"----"),n(),f(271,Gr,2,2,"ng-option",74),n(),f(272,zr,2,0,"div",76),n(),r(273,"div",111)(274,"ng-select",113,19),y("ngModelChange",function(p){return h(l),S(t.profile.dobMonth,p)||(t.profile.dobMonth=p),_(p)}),r(276,"ng-option",73),s(277,"----"),n(),f(278,Yr,2,2,"ng-option",74),n(),f(279,Kr,2,0,"div",76),n(),r(280,"div",114)(281,"input",115,20),y("ngModelChange",function(p){return h(l),S(t.profile.dobYear,p)||(t.profile.dobYear=p),_(p)}),w("keypress",function(p){return h(l),_(t.isNumberKey(p))})("change",function(p){return h(l),_(t.trimValue(p))}),n(),f(283,Jr,2,0,"div",76),n(),r(284,"div",116),g(285,"span",117)(286,"span",118)(287,"span",119),n()(),r(288,"div",67)(289,"label",83)(290,"strong"),s(291,"Date Of Joining "),r(292,"span",69),s(293," *"),n()(),r(294,"span",70),s(295,":"),n()(),r(296,"div",111)(297,"ng-select",120,21),y("ngModelChange",function(p){return h(l),S(t.profile.dojDate,p)||(t.profile.dojDate=p),_(p)}),r(299,"ng-option",73),s(300,"----"),n(),f(301,Qr,2,2,"ng-option",74),n(),f(302,Zr,2,0,"div",76),n(),r(303,"div",111)(304,"ng-select",121,22),y("ngModelChange",function(p){return h(l),S(t.profile.dojMonth,p)||(t.profile.dojMonth=p),_(p)}),r(306,"ng-option",73),s(307,"----"),n(),f(308,Xr,2,2,"ng-option",74),n(),f(309,$r,2,0,"div",76),n(),r(310,"div",114)(311,"input",122,23),y("ngModelChange",function(p){return h(l),S(t.profile.dojYear,p)||(t.profile.dojYear=p),_(p)}),w("keypress",function(p){return h(l),_(t.isNumberKey(p))})("change",function(p){return h(l),_(t.trimValue(p))}),n(),f(313,eo,2,0,"div",76),n(),r(314,"div",116),g(315,"span",123)(316,"span",124)(317,"span",125),n()(),r(318,"div",67)(319,"label",83)(320,"strong"),s(321,"Father Name "),r(322,"span",69),s(323," *"),n()(),r(324,"span",70),s(325,":"),n()(),r(326,"div",66)(327,"input",126,24),y("ngModelChange",function(p){return h(l),S(t.profile.fatherName,p)||(t.profile.fatherName=p),_(p)}),n(),g(329,"span",127),f(330,to,2,0,"div",76),n()(),r(331,"div",67)(332,"label",83)(333,"strong"),s(334,"Mother Name "),r(335,"span",69),s(336," *"),n()(),r(337,"span",70),s(338,":"),n()(),r(339,"div",66)(340,"input",128,25),y("ngModelChange",function(p){return h(l),S(t.profile.motherName,p)||(t.profile.motherName=p),_(p)}),n(),g(342,"span",129),f(343,io,2,0,"div",76),n()()()(),r(344,"div",65),g(345,"div",66)(346,"div",130),n(),r(347,"h4",131),s(348,"In case of Emergency"),n(),g(349,"hr"),r(350,"div",65)(351,"div",66)(352,"div",67)(353,"label",83)(354,"strong"),s(355,"Name "),r(356,"span",69),s(357," *"),n(),s(358,": "),n()(),r(359,"div",66)(360,"input",132,26),y("ngModelChange",function(p){return h(l),S(t.profile.emerAddressLine.emerName,p)||(t.profile.emerAddressLine.emerName=p),_(p)}),n(),g(362,"span",133),f(363,no,2,0,"div",76),n()(),r(364,"div",67)(365,"label",83)(366,"strong"),s(367,"Phone "),r(368,"span",69),s(369," *"),n(),s(370,": "),n()(),r(371,"div",66)(372,"input",134,27),y("ngModelChange",function(p){return h(l),S(t.profile.emerAddressLine.emerMobile,p)||(t.profile.emerAddressLine.emerMobile=p),_(p)}),n(),f(374,ao,3,2,"div",76),n()()(),r(375,"div",130)(376,"div",67)(377,"label",83)(378,"strong"),s(379,"E-mail "),r(380,"span",69),s(381," *"),n(),s(382,": "),n()(),r(383,"div",135)(384,"input",136,28),y("ngModelChange",function(p){return h(l),S(t.profile.emerAddressLine.emerMail,p)||(t.profile.emerAddressLine.emerMail=p),_(p)}
1),n(),g(386,"span",137),f(387,so,2,0,"div",76),n()(),r(388,"div",67)(389,"label",83)(390,"strong"),s(391,"Relation "),r(392,"span",69),s(393," *"),n(),s(394,": "),n()(),r(395,"div",66)(396,"input",138,29),y("ngModelChange",function(p){return h(l),S(t.profile.emerAddressLine.relationship,p)||(t.profile.emerAddressLine.relationship=p),_(p)}),n(),g(398,"span",139),f(399,lo,2,0,"div",76),n()()()(),r(400,"h4",131),s(401,"Address"),n(),g(402,"hr"),r(403,"div",65)(404,"div",71)(405,"label",140)(406,"strong"),s(407,"Permanent"),r(408,"span",69),s(409," *"),n()()(),r(410,"input",141,30),y("ngModelChange",function(p){return h(l),S(t.profile.addressline1,p)||(t.profile.addressline1=p),_(p)}),n(),f(412,po,2,0,"div",76),r(413,"input",142,31),y("ngModelChange",function(p){return h(l),S(t.profile.addressline2,p)||(t.profile.addressline2=p),_(p)}),n(),f(415,mo,2,0,"div",76),r(416,"input",143,32),y("ngModelChange",function(p){return h(l),S(t.profile.city,p)||(t.profile.city=p),_(p)}),n(),f(418,co,2,0,"div",76),r(419,"input",144,33),y("ngModelChange",function(p){return h(l),S(t.profile.pin,p)||(t.profile.pin=p),_(p)}),n(),f(421,fo,2,0,"div",76),r(422,"input",145,34),y("ngModelChange",function(p){return h(l),S(t.profile.state,p)||(t.profile.state=p),_(p)}),n(),f(424,uo,2,0,"div",76),r(425,"input",146,35),y("ngModelChange",function(p){return h(l),S(t.profile.country,p)||(t.profile.country=p),_(p)}),n(),f(427,go,2,0,"div",76),n(),r(428,"div",71)(429,"strong"),s(430,"Temporary"),r(431,"span",69),s(432," *"),n()(),g(433,"br"),r(434,"div",147)(435,"input",148),w("click",function(){return h(l),_(t.sameAsPermanent(t.profile))}),n(),r(436,"div",149)(437,"label"),s(438,"Same as permanent address"),n()()(),r(439,"input",150,36),y("ngModelChange",function(p){return h(l),S(t.profile.temporaryAddress.temporaryAddressLine1,p)||(t.profile.temporaryAddress.temporaryAddressLine1=p),_(p)}),n(),f(441,ho,2,0,"div",76),r(442,"input",151,37),y("ngModelChange",function(p){return h(l),S(t.profile.temporaryAddress.temporaryAddressLine2,p)||(t.profile.temporaryAddress.temporaryAddressLine2=p),_(p)}),n(),f(444,_o,2,0,"div",76),r(445,"input",152,38),y("ngModelChange",function(p){return h(l),S(t.profile.temporaryAddress.tcity,p)||(t.profile.temporaryAddress.tcity=p),_(p)}),n(),f(447,vo,2,0,"div",76),r(448,"input",153,39),y("ngModelChange",function(p){return h(l),S(t.profile.temporaryAddress.tpin,p)||(t.profile.temporaryAddress.tpin=p),_(p)}),n(),f(450,So,2,0,"div",76),r(451,"input",154,40),y("ngModelChange",function(p){return h(l),S(t.profile.temporaryAddress.tstate,p)||(t.profile.temporaryAddress.tstate=p),_(p)}),n(),f(453,yo,2,0,"div",76),r(454,"input",155,41),y("ngModelChange",function(p){return h(l),S(t.profile.temporaryAddress.tempCountry,p)||(t.profile.temporaryAddress.tempCountry=p),_(p)}),n(),f(456,Co,2,0,"div",76),n(),r(457,"div",71)(458,"label",140)(459,"strong"),s(460,"Emergency"),r(461,"span",69),s(462," *"),n()()(),r(463,"input",156,42),y("ngModelChange",function(p){return h(l),S(t.profile.emerAddressLine.emerAddressLine1,p)||(t.profile.emerAddressLine.emerAddressLine1=p),_(p)}),n(),f(465,wo,2,0,"div",76),r(466,"input",157,43),y("ngModelChange",function(p){return h(l),S(t.profile.emerAddressLine.emerAddressLine2,p)||(t.profile.emerAddressLine.emerAddressLine2=p),_(p)}),n(),f(468,Po,2,0,"div",76),r(469,"input",158,44),y("ngModelChange",function(p){return h(l),S(t.profile.emerAddressLine.emerCity,p)||(t.profile.emerAddressLine.emerCity=p),_(p)}),n(),f(471,xo,2,0,"div",76),r(472,"input",159,45),y("ngModelChange",function(p){return h(l),S(t.profile.emerAddressLine.emerPin,p)||(t.profile.emerAddressLine.emerPin=p),_(p)}),n(),f(474,Eo,2,0,"div",76),r(475,"input",160,46),y("ngModelChange",function(p){return h(l),S(t.profile.emerAddressLine.emerState,p)||(t.profile.emerAddressLine.emerState=p),_(p)}),n(),f(477,To,2,0,"div",76),r(478,"input",161,47),y("ngModelChange",function(p){return h(l),S(t.profile.emerAddressLine.emerCountry,p)||(t.profile.emerAddressLine.emerCountry=p),_(p)}),n(),f(480,bo,2,0,"div",76),n()(),g(481,"br"),r(482,"h4"),s(483,"Attachment"),n(),g(484,"hr",162),r(485,"div",163)(486,"h5")(487,"strong"),s(488,"Note"),n()(),r(489,"div")(490,"p",164),s(491,"Valid Extensions: .jpg, .png "),r(492,"span",165),s(493,"Upload Size: Min 25kb - Max 1Mb"),n()(),r(494,"p",166),g(495,"i",167),s(496," To change an uploaded image, click the "),g(497,"i",168),s(498," remove icon next to the file name, then select a new picture. The new image will upload automatically. "),n()()(),r(499,"div",169)(500,"div",66)(501,"div",170)(502,"label")(503,"strong"),s(504,"Pancard No "),r(505,"span",69),s(506,"*"),n()()(),r(507,"input",171,48),y("ngModelChange",function(p){return h(l),S(t.workProfileData.identifyDetails.panCard,p)||(t.workProfileData.identifyDetails.panCard=p),_(p)}),n(),g(509,"span",172),f(510,Mo,2,0,"div",76),n(),r(511,"div",173)(512,"label",174)(513,"strong"),s(514,"Pancard Front "),r(515,"span",69),s(516,"*"),n()()(),f(517,ko,7,3,"ng-container",175)(518,Vo,8,4,"ng-template",null,49,ie),n()(),r(520,"div",176),f(521,Ro,2,1,"div",177)(522,jo,2,2,"ng-template",null,50,ie),n()(),r(524,"div",169)(525,"div",66)(526,"div",170)(527,"label")(528,"strong"),s(529,"Aadhaar No "),r(530,"span",69),s(531,"*"),n()()(),r(532,"input",178,51),y("ngModelChange",function(p){return h(l),S(t.workProfileData.identifyDetails.adarCard,p)||(t.workProfileData.identifyDetails.adarCard=p),_(p)}),n(),g(534,"span",179),f(535,Wo,2,0,"div",76),n(),r(536,"div",173)(537,"label",180)(538,"strong"),s(539,"Aadhaar Card Front "),r(540,"span",69),s(541,"*"),n()()(),f(542,qo,7,3,"ng-container",175)(543,Yo,8,4,"ng-template",null,52,ie),n()(),r(545,"div",176),f(546,Ko,2,1,"div",177)(547,Zo,2,2,"ng-template",null,53,ie),n()(),r(549,"div",169)(550,"div",66)(551,"div",173)(552,"label",181)(553,"strong"),s(554,"Aadhaar Card Back "),r(555,"span",69),s(556,"*"),n()()(),f(557,ea,7,3,"ng-container",175)(558,ra,8,4,"ng-template",null,54,ie),n()(),r(560,"div",176),f(561,oa,2,1,"div",177)(562,la,2,2,"ng-template",null,55,ie),n()(),g(564,"div",182),r(565,"div",65)(566,"div",183)(567,"button",184),w("click",function(){return h(l),_(t.updateProfile(t.profile))}),f(568,da,3,0,"span",185)(569,pa,3,0,"span",185),n()()(),g(570,"br"),n()()()}if(o&2){let l=C(8),c=C(21),p=C(37),E=C(48),j=C(59),$=C(72),ge=C(84),Ze=C(100),Xe=C(113),$e=C(125),et=C(138),tt=C(151),it=C(163),nt=C(177),rt=C(190),ot=C(207),at=C(225),st=C(242),lt=C(268),dt=C(275),pt=C(282),mt=C(298),ct=C(305),ft=C(312),ut=C(328),gt=C(341),ht=C(361),_t=C(373),vt=C(385),St=C(397),yt=C(411),Ct=C(414),wt=C(417),Pt=C(420),xt=C(423),Et=C(426),Tt=C(440),bt=C(443),Mt=C(446),It=C(449),Lt=C(452),kt=C(455),At=C(464),Ot=C(467),Nt=C(470),Vt=C(473),Rt=C(476),Ft=C(479),Bt=C(508),Ai=C(519),Oi=C(523),jt=C(533),Ni=C(544),Vi=C(548),Ri=C(559),Fi=C(563);a(20),v("ngModel",t.profile.salutation),a(4),d("ngForOf",Oe(125,hr)),a(2),d("ngIf",c.invalid&&(c.touched||l.submitted)),a(10),v("ngModel",t.profile.name),a(3),d("ngIf",p.invalid&&(p.touched||l.submitted)),a(8),v("ngModel",t.profile.middleName),a(3),d("ngIf",E.invalid&&(E.touched||l.submitted)),a(8),v("ngModel",t.profile.lastName),a(3),d("ngIf",j.invalid&&(j.touched||l.submitted)),a(10),v("ngModel",t.profile.phone),a(2),d("ngIf",$.invalid&&($.touched||l.submitted)),a(10),v("ngModel",t.profile.designationId),a(4),d("ngForOf",t.designations),a(2),d("ngIf",ge.invali
1d&&(ge.touched||l.submitted)),a(10),v("ngModel",t.profile.employeeId),a(3),d("ngIf",Ze.invalid&&(Ze.touched||l.submitted)),a(10),v("ngModel",t.profile.altContactNo),a(2),d("ngIf",Xe.invalid&&(Xe.touched||l.submitted)),a(10),v("ngModel",t.profile.personalEmail),a(3),d("ngIf",$e.invalid&&($e.touched||l.submitted)),a(10),v("ngModel",t.profile.nationality),a(3),d("ngIf",et.invalid&&(et.touched||l.submitted)),a(10),v("ngModel",t.profile.religion),a(2),d("ngIf",tt.invalid&&(tt.touched||l.submitted)),a(10),v("ngModel",t.profile.caste),a(2),d("ngIf",it.invalid&&(it.touched||l.submitted)),a(),d("ngIf",t.profile.maritalStatus=="Married"),a(11),v("ngModel",t.profile.specialization),a(3),d("ngIf",nt.invalid&&(nt.touched||l.submitted)),a(10),v("ngModel",t.profile.staffTypeId),a(4),d("ngForOf",(t.config==null?null:t.config.staffType)||Oe(126,_r)),a(2),d("ngIf",rt.invalid&&(rt.touched||l.submitted)),a(11),v("ngModel",t.profile.gender),a(4),v("ngModel",t.profile.gender),a(3),d("ngIf",ot.invalid&&(ot.touched||l.submitted)),a(11),v("ngModel",t.profile.maritalStatus),a(4),v("ngModel",t.profile.maritalStatus),a(3),d("ngIf",at.invali
1d&&(at.touched||l.submitted)),a(10),v("ngModel",t.profile.bloodGroup),a(4),d("ngForOf",t.bloodGroupCon),a(2),d("ngIf",st.invalid&&(st.touched||l.submitted)),a(10),v("ngModel",t.email),a(10),v("ngModel",t.profile.dobDate),a(4),d("ngForOf",t.date),a(),d("ngIf",lt.invalid&&(lt.touched||l.submitted)),a(2),v("ngModel",t.profile.dobMonth),a(4),d("ngForOf",t.month),a(),d("ngIf",dt.invalid&&(dt.touched||l.submitted)),a(2),v("ngModel",t.profile.dobYear),a(2),d("ngIf",pt.invalid&&(pt.touched||l.submitted)),a(14),v("ngModel",t.profile.dojDate),a(4),d("ngForOf",t.date),a(),d("ngIf",mt.invalid&&(mt.touched||l.submitted)),a(2),v("ngModel",t.profile.dojMonth),a(4),d("ngForOf",t.month),a(),d("ngIf",ct.invalid&&(ct.touched||l.submitted)),a(2),v("ngModel",t.profile.dojYear),a(2),d("ngIf",ft.invalid&&(ft.touched||l.submitted)),a(14),v("ngModel",t.profile.fatherName),a(3),d("ngIf",ut.invalid&&(ut.touched||l.submitted)),a(10),v("ngModel",t.profile.motherName),a(3),d("ngIf",gt.invalid&&(gt.touched||l.submitted)),a(17),v("ngModel",t.profile.emerAddressLine.emerName),a(3),d("ngIf",ht.invalid&&(ht.touched||l.submitted)),a(9),v("ngModel",t.profile.emerAddressLine.emerMobile),a(2),d("ngIf",_t.invalid&&(_t.touched||l.submitted)),a(10),v("ngModel",t.profile.emerAddressLine.emerMail),a(3),d("ngIf",vt.invalid&&(vt.touched||l.submitted)),a(9),v("ngModel",t.profile.emerAddressLine.relationship),a(3),d("ngIf",St.invalid&&(St.touched||l.submitted)),a(11),v("ngModel",t.profile.addressline1),a(2),d("ngIf",yt.invalid&&(yt.touched||l.submitted)),a(),v("ngModel",t.profile.addressline2),a(2),d("ngIf",Ct.invalid&&(Ct.touched||l.submitted)),a(),v("ngModel",t.profile.city),a(2),d("ngIf",wt.invalid&&(wt.touched||l.submitted)),a(),v("ngModel",t.profile.pin),a(2),d("ngIf",Pt.invalid&&(Pt.touched||l.submitted)),a(),v("ngModel",t.profile.state),a(2),d("ngIf",xt.invalid&&(xt.touched||l.submitted)),a(),v("ngModel",t.profile.country),a(2),d("ngIf",Et.invalid&&(Et.touched||l.submitted)),a(12),v("ngModel",t.profile.temporaryAddress.temporaryAddressLine1),a(2),d("ngIf",Tt.invalid&&(Tt.touched||l.submitted)),a(),v("ngModel",t.profile.temporaryAddress.temporaryAddressLine2),a(2),d("ngIf",bt.invalid&&(bt.touched||l.submitted)),a(),v("ngModel",t.profile.temporaryAddress.tcity),a(2),d("ngIf",Mt.invalid&&(Mt.touched||l.submitted)),a(),v("ngModel",t.profile.temporaryAddress.tpin),a(2),d("ngIf",It.invalid&&(It.touched||l.submitted)),a(),v("ngModel",t.profile.temporaryAddress.tstate),a(2),d("ngIf",Lt.invalid&&(Lt.touched||l.submitted)),a(),v("ngModel",t.profile.temporaryAddress.tempCountry),a(2),d("ngIf",kt.invalid&&(kt.touched||l.submitted)),a(7),v("ngModel",t.profile.emerAddressLine.emerAddressLine1),a(2),d("ngIf",At.invalid&&(At.touched||l.submitted)),a(),v("ngModel",t.profile.emerAddressLine.emerAddressLine2),a(2),d("ngIf",Ot.invalid&&(Ot.touched||l.submitted)),a(),v("ngModel",t.profile.emerAddressLine.emerCity),a(2),d("ngIf",Nt.invalid&&(Nt.touched||l.submitted)),a(),v("ngModel",t.profile.emerAddressLine.emerPin),a(2),d("ngIf",Vt.invalid&&(Vt.touched||l.submitted)),a(),v("ngModel",t.profile.emerAddressLine.emerState),a(2),d("ngIf",Rt.invalid&&(Rt.touched||l.submitted)),a(),v("ngModel",t.profile.emerAddressLine.emerCountry),a(2),d("ngIf",Ft.invalid&&(Ft.touched||l.submitted)),a(27),v("ngModel",t.workProfileData.identifyDetails.panCard),a(3),d("ngIf",Bt.invalid&&(Bt.touched||l.submitted)),a(7),d("ngIf",!t.panCardAttached)("ngIfElse",Ai),a(4),d("ngIf",t.panCardLocalPreview)("ngIfElse",Oi),a(11),v("ngModel",t.workProfileData.identifyDetails.adarCard),a(3),d("ngIf",jt.invalid&&(jt.touched||l.submitted)),a(7),d("ngIf",!t.adarCardAttached)("ngIfElse",Ni),a(4),d("ngIf",t.adarCardLocalPreview)("ngIfElse",Vi),a(11),d("ngIf",!t.aadhaarCardBackAttached)("ngIfElse",Ri),a(4),d("ngIf",t.aadhaarCardBackLocalPreview)("ngIfElse",Fi),a(6),d("disabled",t.isButtonDisabled),a(),d("ngIf",!t.isButtonDisabled),a(),d("ngIf",t.isButtonDisabled)}},dependencies:[ye,I,le,ei,ti,k,$t,we,A,se,G,Z,ii,F,Xt,ai,oi],styles:[".form-group[_ngcontent-%COMP%], input[_ngcontent-%COMP%], select[_ngcontent-%COMP%], textarea[_ngcontent-%COMP%]{margin-bottom:.5rem}"]})}return i})();var ma=["staffOTP"];function ca(i,m){if(i&1&&(r(0,"span"),s(1),n()),i&2){let e=u(2);a(),b(" and ",e.altPhone,"")}}function fa(i,m){if(i&1&&(r(0,"p",4)(1,"strong"),s(2,"Sent to:"),n(),s(3),f(4,ca,2,1,"span",13),n()),i&2){let e=u();a(3),b(" ",e.phone,""),a(),d("ngIf",e.altPhone)}}function ua(i,m){i&1&&(r(0,"div",20)(1,"div",21),g(2,"div",22),n(),r(3,"p",23),s(4,"Complete the security check, then enter your co
1de below."),n()())}function ga(i,m){i&1&&(r(0,"div",24),g(1,"i",25),r(2,"span"),s(3,"Please enter a valid 6-digit code"),n()())}function ha(i,m){if(i&1&&(r(0,"div",24),g(1,"i",26),r(2,"span"),s(3),n()()),i&2){let e=u();a(3),x(e.errorMessage)}}function _a(i,m){i&1&&(r(0,"span"),s(1,"Verify & Proceed"),n())}function va(i,m){i&1&&(r(0,"span"),s(1," Verifying "),g(2,"span",27),n())}var xi=(()=>{class i{formBuilder;router;loginService;cookieService;route;userService;authTokenService;turnstileService;staffOTP;ngAfterViewInit(){V(this.turnstileService,"staff","staff-otp-turnstile-widget",e=>{this.turnstile=e},e=>{this.errorMessage=e},()=>{this.errorMessage="",this.focusOtpInput()}),setTimeout(()=>this.focusOtpInput(),100)}focusOtpInput(){try{this.staffOTP?.nativeElement?.focus()}catch{}}ngOnDestroy(){O(this.turnstile)}loginOTPForm;isLoading=!1;errorMessage="";loginData;email="";domain="";phone="";altPhone="";turnstile={enabled:!0,token:"",widgetId:""};constructor(e,o,t,l,c,p,E,j){this.formBuilder=e,this.router=o,this.loginService=t,this.cookieService=l,this.route=c,this.userService=p,this.authTokenService=E,this.turnstileService=j,this.loginOTPForm=this.formBuilder.group({staffOTP:["",[ne.required,ne.pattern(/^\d{6}$/)]]})}ngOnInit(){yi(),this.route.queryParams.subscribe(e=>{if(this.email=e.email||"",this.domain=e.domain||"",this.phone=e.phone||"",this.altPhone=e.altPhone||"",!this.email||!this.domain)this.errorMessage="email or domain is required";else if(!Ue(this.email)){if(this.authTokenService.hasAuthenticatedSession()){this.router.navigate(["/dashboard-form/my-activity"],{replaceUrl:!0});return}this.errorMessage="Your sign-in step expired. Please sign in again from the login page."}})}submitOtp(){if(this.loginOTPForm.valid){let e=this.loginOTPForm.get("staffOTP")?.value,o=Ue(this.email);if(!o){this.errorMessage="Your sign-in step expired. Please sign in again from the login page.";return}let t=R(this.turnstileService,this.turnstile);if(this.turnstile.enabled&&!t){this.errorMessage="Please complete the security check";return}this.isLoading=!0,this.errorMessage="";let l={email:this.email,otp:e,domain:this.domain,stepToken:o,turnstileToken:t};this.loginService.verifyStaffOTP(l).then(c=>{if(this.loginData=c,this.isLoading=!1,this.errorMessage="",this.loginData.logStatus==="Invalid OTP")this.errorMessage="Invalid OTP",this.resetOtpTurnstileAfterFailure();else if(this.loginData.logStatus==="Invalid Account")this.errorMessage="Cannot be Logged In, Please contact IT Support!",this.resetOtpTurnstileAfterFailure();else if(this.loginData.token){this.userService.clearSessionCaches(),this.authTokenService.setToken(this.loginData.token);try{sessionStorage.setItem("jp_session_valid","1")}catch{}this.navigateToNextPage(this.loginData.nextPage).then(()=>gi())}},c=>{this.errorMessage=this.resolveOtpErrorMessage(c),this.resetOtpTurnstileAfterFailure()})}}resetOtpTurnstileAfterFailure(){this.isLoading=!1,this.turnstile.widgetId&&this.turnstileService.reset(this.turnstile.widgetId),this.turnstile.token=""}resolveOtpErrorMessage(e){let o=e?.error,t=typeof o=="string"?o.toLowerCase():JSON.stringify(o||{}).toLowerCase(),l=String(e?.message||"").toLowerCase();return t.includes("10017")||t.includes("captcha")||t.includes("turnstile")||l.includes("captcha")||l.includes("turnstile")?"Security check failed. Please complete captcha again and verify your system date/time is correct.":t.includes("invalid date")||l.includes("invalid date")?"Security check failed due to date/time mismatch. Please correct your system date/time and try again.":"Failed to verify OTP"}navigateToNextPage(e){if(!e)return this.router.navigate(["/dashboard"],{replaceUrl:!0});if(/^https?:\/\//i.test(e))return window.location.replace(e),Promise.resolve(!0);let t=this.normalizeNextPagePath(e);return this.router.navigateByUrl(t,{replaceUrl:!0}).catch(()=>(window.location.replace(`${window.location.origin}${t}`),!1))}normalizeNextPagePath(e){let o=(e||"").trim();if(!o)return"/dashboard";let t=o.replace(/^\/?client(\/|$)/i,"/");return(t.startsWith("/")?t:`/${t}`).replace(/\/{2,}/g,"/")}static \u0275fac=function(o){return new(o||i)(P(Ee),P(L),P(N),P(J),P(H),P(Q),P(X),P(B))};static \u0275cmp=M({type:i,selectors:[["app-staff-login-mfa-page"]],viewQuery:function(o,t){if(o&1&&re(ma,5),o&2){let l;oe(l=ae())&&(t.staffOTP=l.first)}},decls:37,vars:8,consts:[["staffOTP",""],[1,"jp-ims-otp-card","jp-ims-otp-card--staff","unified-otp-card"],[1,"otp-verification"],[1,"jp-ims-otp-header","otp-header"],[1,"subtitle"],["class","subtitle",4,"ngIf"],["class","jp-turnstile-otp-section",4,"ngIf"],[1,"jp-ims-otp-form","otp-form",3,"ngSubmit","formGroup"],[1,"form-group"],["for","staffOTP",1,"jp-ims-otp-field-label","otp-field-label"],["type","text","id","staffOTP","placeholder","\xB7\xB7\xB7\xB7\xB7\xB7","formControlName","staffOTP","maxlength","6","inputmode","numeric","autocomplete","one-time-code",1,"form-control"],["class","jp-ims-otp-error error-message",4,"ngIf"],["type","submit",1,"jp-ims-otp-btn","jp-ims-otp-btn--staff","verify-btn",3,"disabled"],[4,"ngIf"],[1,"jp-ims-otp-help","otp-help-detail
1s"],[1,"note","subtitle","otp-help-note"],[1,"image-text-columns"],[1,"column-item"],["src","assets/images/spam1.png","height","200","width","150","alt","Blocked senders list"],["src","assets/images/spam2.png","height","200","width","150","alt","Spam folder"],[1,"jp-turnstile-otp-section"],[1,"jp-turnstile-field"],["id","staff-otp-turnstile-widget",1,"jp-turnstile-widget-host"],[1,"subtitle","turnstile-hint"],[1,"jp-ims-otp-error","error-message"],["aria-hidden","true",1,"fa","fa-exclamation-circle"],["aria-hidden","true",1,"fa","fa-exclamation-triangle"],["aria-hidden","true",1,"loading-spinner"]],template:function(o,t){if(o&1){let l=T();r(0,"div",1)(1,"div",2)(2,"div",3)(3,"h2"),s(4,"Enter Verification Code"),n(),r(5,"p",4),s(6,"Enter the 6-digit code sent to your mobile"),n(),f(7,fa,5,2,"p",5),n(),f(8,ua,5,0,"div",6),r(9,"form",7),w("ngSubmit",function(){return h(l),_(t.submitOtp())}),r(10,"div",8)(11,"label",9),s(12,"Verification code"),n(),g(13,"input",10,0),f(15,ga,4,0,"div",11)(16,ha,4,1,"div",11),n(),r(17,"button",12),f(18,_a,2,0,"span",13)(19,va,3,0,"span",13),n()(),r(20,"details",14)(21,"summary"),s(22,"Didn't receive the OTP?"),n(),r(23,"p",15),s(24," Check spam and blocked folders (e.g. messages from "),r(25,"strong"),s(26,"JM-MGRIMS-S"),n(),s(27,"). If it still does not arrive, contact your Department Head or Data center. "),n(),r(28,"div",16)(29,"div",17)(30,"p"),s(31,"1. Check your blocked senders list:"),n(),g(32,"img",18),n(),r(33,"div",17)(34,"p"),s(35,"2. Look for the message in your spam folder:"),n(),g(36,"img",19),n()()()()()}o&2&&(a(7),d("ngIf",t.phone),a(),d("ngIf",t.turnstile.enabled),a(),d("formGroup",t.loginOTPForm),a(6),d("ngIf",t.loginOTPForm.controls.staffOTP.invalid&&t.loginOTPForm.controls.staffOTP.touched),a(),d("ngIf",t.errorMessage),a(),d("disabled",t.loginOTPForm.invali
1d||t.isLoading),a(),d("ngIf",!t.isLoading),a(),d("ngIf",t.isLoading))},dependencies:[I,le,k,A,se,Z,Pe,xe],styles:["[_nghost-%COMP%]{display:block;width:100%}"]})}return i})();var Ke="staffForgotPasswordEmail",Je="staffForgotPasswordStepToken",Qe="staffForgotPasswordMaskPhone";function Ei(i){sessionStorage.setItem(Ke,i.email),sessionStorage.setItem(Je,i.stepToken),sessionStorage.setItem(Qe,i.maskPhone)}function ke(){let i=sessionStorage.getItem(Ke),m=sessionStorage.getItem(Je);return!i||!m?null:{email:i,stepToken:m,maskPhone:sessionStorage.getItem(Qe)||""}}function Ti(){sessionStorage.removeItem(Ke),sessionStorage.removeItem(Je),sessionStorage.removeItem(Qe)}function Sa(i,m){if(i&1&&(r(0,"div",18),g(1,"i",19),s(2),n()),i&2){let e=u();a(2),b("",e.errorMessage," ")}}function ya(i,m){i&1&&(r(0,"div",20),s(1,"Email not valid"),n())}function Ca(i,m){i&1&&(r(0,"div",21),g(1,"div",22),n())}function wa(i,m){i&1&&(r(0,"span"),s(1,"Continue"),n())}function Pa(i,m){i&1&&(r(0,"span"),g(1,"i",23),s(2," Please wait"),n())}var bi=(()=>{class i{router;route;loginService;turnstileService;email="";errorMessage="";invalidEmail=!1;isLoading=!1;currentYear=new Date().getFullYear();turnstile={enabled:!0,token:"",widgetId:""};constructor(e,o,t,l){this.router=e,this.route=o,this.loginService=t,this.turnstileService=l}ngOnInit(){this.route.queryParams.subscribe(e=>{e.expired==="1"&&(this.errorMessage="Your reset session expired. Please enter your email and complete the security check again.")})}ngAfterViewInit(){V(this.turnstileService,"staff","forgot-email-turnstile-widget",e=>{this.turnstile=e},e=>{this.errorMessage=e})}ngOnDestroy(){O(this.turnstile)}goBackToLogin(){this.router.navigate(["/login"],{replaceUrl:!0})}continue(){if(this.errorMessage="",this.invalidEmail=!1,!this.email?.trim()){this.errorMessage="Please enter your email";return}if(!/^[\w-]+(\.[\w-]+)*@([a-z0-9-]+(\.[a-z0-9-]+)*?\.[a-z]{2,6}|(\d{1,3}\.){3}\d{1,3})(:\d{4})?$/i.test(this.email.trim())){this.invalidEmail=!0;return}let o=R(this.turnstileService,this.turnstile);if(this.turnstile.enabled&&!o){this.errorMessage="Please complete the security check";return}this.isLoading=!0;let t=this.email.trim().toLowerCase();this.loginService.startStaffForgotPassword(t,o).then(l=>{if(this.isLoading=!1,l?.statusMessage==="SUCCESS"&&l?.stepToken){Ei({email:t,stepToken:l.stepToken,maskPhone:l.maskPhone||""}),this.router.navigate(["/login/forgot-password/verify"],{replaceUrl:!0});return}if(l?.statusMessage==="SUCCESS"){this.errorMessage=this.resolveUnableToProceedMessage(),this.resetTurnstile();return}this.errorMessage=this.resolveUnableToProceedMessage(),this.resetTurnstile()}).catch(l=>{this.isLoading=!1,this.errorMessage=this.resolveHttpError(l),this.resetTurnstile()})}resolveUnableToProceedMessage(){return"If this email is registered for staff access, you will be guided through the next step. Otherwise check the email address or contact your Admin or Department HOD."}resolveHttpError(e){let o=e?.error,l=((typeof o=="string"?o:JSON.stringify(o||{}))+String(e?.message||"")).toLowerCase();return l.includes("10017")||l.includes("turnstile")||l.includes("captcha")?"Security check failed. Please complete captcha again and verify your system date/time is correct.":l.includes("too many")?"Too many requests. Please try again later.":"Failed to connect to server. Please try again later."}resetTurnstile(){this.turnstile.widgetId&&this.turnstileService.reset(this.turnstile.widgetId),this.turnstile.token=""}static \u0275fac=function(o){return new(o||i)(P(L),P(H),P(N),P(B))};static \u0275cmp=M({type:i,selectors:[["app-staff-forgot-password-email"]],decls:24,vars:8,consts:[[1,"jp-ims-login-page"],[1,"jp-ims-login-card"],[1,"text-center","jp-ims-login-logo","mb-3"],["src","assets/images/ims/mgr_ims.png","alt","MGR IMS Logo"],[1,"jp-ims-login-gold-line","rounded","mb-3"],[1,"h6","fw-bold","text-center","mb-2",2,"color","var(--jp-ims-purple)"],[1,"small","text-center","text-secondary","mb-3"],["class","card-error",4,"ngIf"],[1,"jp-ims-login-field","mb-2"],["for","forgotEmail",1,"form-label","small","fw-semibold","text-secondary"],["type","email","id","forgotEmail","placeholder","Enter Email","name","forgotEmail","required","","autocomplete","email",1,"form-control",3,"ngModelChange","ngModel"],["class","error-message",4,"ngIf"],["class","jp-ims-login-field mb-3 jp-turnstile-form-group",4,"ngIf"],["type","button",1,"btn","w-100","rounded-3","fw-bold","jp-ims-login-submit--staff","py-2","mb-2",3,"click","disabled"],[4,"ngIf"],["type","button",1,"back-btn","w-100",3,"click"],[1,"jp-ims-login-footer","text-center","text-secondary","mb-0","mt-3"],[1,"fa-solid","fa-copyright","me-1"],[1,"card-error"],[1,"fa-solid","fa-circle-exclamation","me-1"],[1,"error-message"],[1,"jp-ims-login-field","mb-3","jp-turnstile-form-group"],["id","forgot-email-turnstile-widget",1,"jp-turnstile-widget-host"],[1,"fa-solid","fa-spinner","fa-spin","me-1"]],template:function(o,t){o&1&&(r(0,"div",0)(1,"div",1)(2,"div",2),g(3,"img",3),n(),g(4,"div",4),r(5,"h2",5),s(6,"Forgot Password"),n(),r(7,"p",6),s(8,"Enter your staff email to reset your password."),n(),f(9,Sa,3,1,"div",7),r(10,"div",8)(11,"label",9),s(12,"Email"),n(),r(13,"input",10),y("ngModelChange",function(c){return S(t.email,c)||(t.email=c),c}),n(),f(14,ya,2,0,"div",11),n(),f(15,Ca,2,0,"div",12),r(16,"button",13),w("click",function(){return t.continue()}),f(17,wa,2,0,"span",14)(18,Pa,3,0,"span",14),n(),r(19,"button",15),w("click",function(){return t.goBackToLogin()}),s(20,"Back to Sign In"),n(),r(21,"p",16),g(22,"i",17),s(23),n()()()),o&2&&(a(9),d("ngIf",t.errorMessage),a(4),v("ngModel",t.email),a(),d("ngIf",t.invalidEmail),a(),d("ngIf",t.turnstile.enabled),a(),d("disabled",t.isLoading),a(),d("ngIf",!t.isLoading),a(),d("ngIf",t.isLoading),a(5),b(" ",t.currentYear," Ebullitent.com | All Rights Reserved "))},dependencies:[I,k,A,G,F],styles:[".back-btn[_ngcontent-%COMP%]{background:transparent;border:none;color:var(--jp-ims-purple, #4a2c7a);font-size:.875rem;padding:.5rem;text-decoration:underline}.back-btn[_ngcontent-%COMP%]:hover{opacity:.85}"]})}return i})();function xa(i,m){if(i&1&&(r(0,"div",22),g(1,"i",23),s(2),n()),i&2){let e=u();a(2),b("",e.errorMessage," ")}}function Ea(i,m){if(i&1&&(r(0,"div",24)(1,"div",25),s(2,"Registered phone (hint)"),n(),r(3,"div",26),s(4),n()()),i&2){let e=u();a(4),x(e.maskPhone)}}function Ta(i,m){i&1&&(r(0,"div",27),g(1,"div",28),n())}function ba(i,m){i&1&&(r(0,"span"),s(1,"Verify & Send OTP"),n())}function Ma(i,m){i&1&&(r(0,"span"),g(1,"i",29),s(2," Please wait"),n())}var Mi=(()=>{class i{router;loginService;turnstileService;email="";stepToken="";maskPhone="";phone="";employeeId="";errorMessage="";isLoading=!1;currentYear=new Date().getFullYear();turnstile={enabled:!0,token:"",widgetId:""};constructor(e,o,t){this.router=e,this.loginService=o,this.turnstileService=t}ngOnInit(){let e=ke();if(!e){this.router.navigate(["/login/forgot-password"],{queryParams:{expired:"1"},replaceUrl:!0});return}this.email=e.email,this.stepToken=e.stepToken,this.maskPhone=e.maskPhone}ngAfterViewInit(){V(this.turnstileService,"staff","forgot-verify-turnstile-widget",e=>{this.turnstile=e},e=>{this.errorMessage=e})}ngOnDestroy(){O(this.turnstile)}goBack(){this.router.navigate(["/login/forgot-password"],{replaceUrl:!1})}goBackToLogin(){this.router.navigate(["/login"],{replaceUrl:!0})}verifyAndSendOtp(){if(this.errorMessage="",!this.phone?.trim()){this.errorMessage="Please enter your phone number";return}if(!this.employeeId?.trim()){this.errorMessage="Please enter your employee code";return}let e=R(this.turnstileService,this.turnstile);if(this.turnstile.enabled&&!e){this.errorMessage="Please complete the security check";return}this.isLoading=!0,this.loginService.verifyStaffForgotIdentity(this.email,this.phone.trim(),this.employeeId.trim(),this.stepToken,e).then(o=>{if(this.isLoading=!1,o?.statusMessage==="SUCCESS"){this.router.navigate(["/login/forgot-password/reset"],{replaceUrl:!0});return}this.errorMessage="The phone number or employee code does not match our records.",this.resetTurnstile()}).catch(o=>{this.isLoading=!1,this.errorMessage=this.resolveHttpError(o),this.resetTurnstile()})}
1resolveHttpError(e){let o=e?.error,l=((typeof o=="string"?o:JSON.stringify(o||{}))+String(e?.message||"")).toLowerCase();return l.includes("step token")||l.includes("10001")?"Your reset session expired. Please start again from the email step.":l.includes("too many failed verification")?"Too many failed attempts. Please try again later.":l.includes("too many otp")?"Too many OTP requests. Please try again later.":l.includes("10017")||l.includes("turnstile")||l.includes("captcha")?"Security check failed. Please complete captcha again and verify your system date/time is correct.":"Unable to verify your details. Please try again."}resetTurnstile(){this.turnstile.widgetId&&this.turnstileService.reset(this.turnstile.widgetId),this.turnstile.token=""}static \u0275fac=function(o){return new(o||i)(P(L),P(N),P(B))};static \u0275cmp=M({type:i,selectors:[["app-staff-forgot-password-verify"]],decls:33,vars:9,consts:[[1,"jp-ims-login-page"],[1,"jp-ims-login-card"],[1,"text-center","jp-ims-login-logo","mb-3"],["src","assets/images/ims/mgr_ims.png","alt","MGR IMS Logo"],[1,"jp-ims-login-gold-line","rounded","mb-3"],[1,"h6","fw-bold","text-center","mb-2",2,"color","var(--jp-ims-purple)"],[1,"small","text-center","text-secondary","mb-3"],["class","card-error",4,"ngIf"],["class","jp-ims-login-hint-box mb-3",4,"ngIf"],[1,"jp-ims-login-field","mb-2"],["for","forgotPhone",1,"form-label","small","fw-semibold","text-secondary"],["type","tel","id","forgotPhone","placeholder","Enter your full phone number","name","forgotPhone","required","","inputmode","numeric","autocomplete","tel",1,"form-control",3,"ngModelChange","ngModel"],["for","forgotEmpCode",1,"form-label","small","fw-semibold","text-secondary"],["type","text","id","forgotEmpCode","placeholder","Enter your employee code","name","forgotEmpCode","required","","autocomplete","off",1,"form-control",3,"ngModelChange","ngModel"],[1,"forgot-verify-hints","text-secondary","mb-0","mt-1"],[1,"fa-solid","fa-circle-info","me-1"],["class","jp-ims-login-field mb-3 jp-turnstile-form-group",4,"ngIf"],["type","button",1,"btn","w-100","rounded-3","fw-bold","jp-ims-login-submit--staff","py-2","mb-2",3,"click","disabled"],[4,"ngIf"],["type","button",1,"back-btn","w-100",3,"click"],[1,"jp-ims-login-footer","text-center","text-secondary","mb-0","mt-3"],[1,"fa-solid","fa-copyright","me-1"],[1,"card-error"],[1,"fa-solid","fa-circle-exclamation","me-1"],[1,"jp-ims-login-hint-box","mb-3"],[1,"small","text-secondary","mb-1"],[1,"fw-semibold","text-secondary"],[1,"jp-ims-login-field","mb-3","jp-turnstile-form-group"],["id","forgot-verify-turnstile-widget",1,"jp-turnstile-widget-host"],[1,"fa-solid","fa-spinner","fa-spin","me-1"]],template:function(o,t){o&1&&(r(0,"div",0)(1,"div",1)(2,"div",2),g(3,"img",3),n(),g(4,"div",4),r(5,"h2",5),s(6,"Verify Your Identity"),n(),r(7,"p",6),s(8," Confirm your registered phone and employee code to receive an OTP. "),n(),f(9,xa,3,1,"div",7)(10,Ea,5,1,"div",8),r(11,"div",9)(12,"label",10),s(13,"Phone number"),n(),r(14,"input",11),y("ngModelChange",function(c){return S(t.phone,c)||(t.phone=c),c}),n()(),r(15,"div",9)(16,"label",12),s(17,"Employee code"),n(),r(18,"input",13),y("ngModelChange",function(c){return S(t.employeeId,c)||(t.employeeId=c),c}),n(),r(19,"p",14),g(20,"i",15),s(21," If you do not have an employee code, contact your Department Head or Admin. "),n()(),f(22,Ta,2,0,"div",16),r(23,"button",17),w("click",function(){return t.verifyAndSendOtp()}),f(24,ba,2,0,"span",18)(25,Ma,3,0,"span",18),n(),r(26,"button",19),w("click",function(){return t.goBack()}),s(27,"Back"),n(),r(28,"button",19),w("click",function(){return t.goBackToLogin()}),s(29,"Back to Sign In"),n(),r(30,"p",20),g(31,"i",21),s(32),n()()()),o&2&&(a(9),d("ngIf",t.errorMessage),a(),d("ngIf",t.maskPhone),a(4),v("ngModel",t.phone),a(4),v("ngModel",t.employeeId),a(4),d("ngIf",t.turnstile.enabled),a(),d("disabled",t.isLoading),a(),d("ngIf",!t.isLoading),a(),d("ngIf",t.isLoading),a(7),b(" ",t.currentYear," Ebullitent.com | All Rights Reserved "))},dependencies:[I,k,A,G,F],styles:[".jp-ims-login-hint-box[_ngcontent-%COMP%]{background:#f8fafc;border:1px solid #e2e8f0;border-radius:.75rem;padding:.75rem}.forgot-verify-hints[_ngcontent-%COMP%]{font-size:11px;line-height:1.45}.back-btn[_ngcontent-%COMP%]{background:transparent;border:none;color:var(--jp-ims-purple, #4a2c7a);font-size:.875rem;padding:.5rem;text-decoration:underline}.back-btn[_ngcontent-%COMP%]:hover{opacity:.85}"]})}return i})();function Ia(i,m){i&1&&(r(0,"div",10),s(1," Password reset successfully! Redirecting to sign in\u2026 "),n())}function La(i,m){if(i&1&&(r(0,"p",28),s(1),n()),i&2){let e=u(2);a(),b(" OTP sent to ",e.maskPhone," ")}}function ka(i,m){if(i&1&&(r(0,"div",29),g(1,"i",30),s(2),n()),i&2){let e=u(2);a(2),b("",e.errorMessage," ")}}function Aa(i,m){i&1&&(r(0,"div",31),g(1,"div",32),r(2,"p",33),s(3,"Complete the security check before resetting your password."),n()())}function Oa(i,m){i&1&&(r(0,"div",34),s(1,"Passwords do not match"),n())}function Na(i,m){if(i&1&&(r(0,"ul",35)(1,"li"),s(2,"At least 6 characters"),n()()),i&2){let e=u(2);a(),te("text-success",e.passwordValidations.minLength)}}function Va(i,m){i&1&&(r(0,"span"),s(1,"Reset Password"),n())}function Ra(i,m){i&1&&(r(0,"span"),g(1,"i",36),s(2," Processing"),n())}function Fa(i,m){if(i&1){let e=T();U(0),f(1,La,2,1,"p",11),r(2,"p",12),s(3,"If OTP is not received, contact your Department Head or Data center."),n(),f(4,ka,3,1,"div",13)(5,Aa,4,0,"div",14),r(6,"div",15)(7,"label",16),s(8,"OTP Code"),n(),r(9,"input",17),y("ngModelChange",function(t){h(e);let l=u();return S(l.otpToken,t)||(l.otpToken=t),_(t)}),n()(),r(10,"div",15)(11,"label",18),s(12,"New Password"),n(),r(13,"div",19)(14,"input",20),y("ngModelChange",function(t){h(e);let l=u();return S(l.newPassword,t)||(l.newPassword=t),_(t)}),w("input",function(){h(e);let t=u();return _(t.onPasswordInput())}),n(),r(15,"button",21),w("click",function(){h(e);let t=u();return _(t.showNewPassword=!t.showNewPassword)}),g(16,"i",22),n()()(),r(17,"div",15)(18,"label",23),s(19,"Confirm Password"),n(),r(20,"div",19)(21,"input",24),y("ngModelChange",function(t){h(e);let l=u();return S(l.confirmPassword,t)||(l.confirmPassword=t),_(t)}),w("input",function(){h(e);let t=u();return _(t.onPasswordInput())}),n(),r(22,"button",21),w("click",function(){h(e);let t=u();return _(t.showConfirmPassword=!t.showConfirmPassword)}),g(23,"i",22),n()(),f(24,Oa,2,0,"div",25),n(),f(25,Na,3,2,"ul",26),r(2
16,"button",27),w("click",function(){h(e);let t=u();return _(t.resetPassword())}),f(27,Va,2,0,"span",7)(28,Ra,3,0,"span",7),n(),q()}if(i&2){let e=u();a(),d("ngIf",e.maskPhone),a(3),d("ngIf",e.errorMessage),a(),d("ngIf",e.turnstile.enabled),a(4),v("ngModel",e.otpToken),a(5),d("type",e.showNewPassword?"text":"password"),v("ngModel",e.newPassword),a(),W("aria-label",e.showNewPassword?"Hide password":"Show password")("aria-pressed",e.showNewPassword),a(),d("ngClass",e.showNewPassword?"fa-eye-slash":"fa-eye"),a(5),d("type",e.showConfirmPassword?"text":"password"),v("ngModel",e.confirmPassword),a(),W("aria-label",e.showConfirmPassword?"Hide password":"Show password")("aria-pressed",e.showConfirmPassword),a(),d("ngClass",e.showConfirmPassword?"fa-eye-slash":"fa-eye"),a(),d("ngIf",e.passwordMismatch),a(),d("ngIf",e.newPassword),a(),d("disabled",e.isLoading),a(),d("ngIf",!e.isLoading),a(),d("ngIf",e.isLoading)}}var Ii=(()=>{class i{router;loginService;turnstileService;email="";stepToken="";maskPhone="";otpToken="";newPassword="";confirmPassword="";showNewPassword=!1;showConfirmPassword=!1;errorMessage="";resetSuccess=!1;passwordMismatch=!1;isLoading=!1;currentYear=new Date().getFullYear();turnstile={enabled:!0,token:"",widgetId:""};passwordValidations={minLength:!1};constructor(e,o,t){this.router=e,this.loginService=o,this.turnstileService=t}ngOnInit(){let e=ke();if(!e){this.router.navigate(["/login/forgot-password"],{queryParams:{expired:"1"},replaceUrl:!0});return}this.email=e.email,this.stepToken=e.stepToken,this.maskPhone=e.maskPhone}ngAfterViewInit(){V(this.turnstileService,"staff","forgot-reset-turnstile-widget",e=>{this.turnstile=e},e=>{this.errorMessage=e})}ngOnDestroy(){O(this.turnstile)}onPasswordInput(){this.passwordMismatch=this.confirmPassword.length>0&&this.newPassword!==this.confirmPassword,this.passwordValidations.minLength=this.newPassword.length>=6}resetPassword(){if(this.errorMessage="",this.passwordMismatch=!1,!this.otpToken?.trim()){this.errorMessage="Please enter the OTP";return}if(!this.newPassword||!this.confirmPassword){this.errorMessage="Please fill all required fields";return}if(this.newPassword.length<6||this.newPassword.length>20){this.errorMessage="Password should be between 6 and 20 characters";return}if(this.newPassword!==this.confirmPassword){this.passwordMismatch=!0,this.errorMessage="Passwords do not match";return}let e=R(this.turnstileService,this.turnstile);if(this.turnstile.enabled&&!e){this.errorMessage="Please complete the security check";return}this.isLoading=!0,this.loginService.resetStaffForgotPassword(this.email,this.otpToken.trim(),this.newPassword,this.confirmPassword,this.stepToken,e).then(o=>{if(this.isLoading=!1,o?.statusMessage==="SUCCESS"){this.resetSuccess=!0,Ti(),setTimeout(()=>{this.router.navigate(["/login"],{replaceUrl:!0})},2500);return}o?.statusMessage==="WRONGOTP"?this.errorMessage="Wrong OTP entered. Please check and try again.":this.errorMessage="Unable to reset password. Please try again.",this.resetTurnstile()}).catch(o=>{this.isLoading=!1,this.errorMessage=this.resolveHttpError(o),this.resetTurnstile()})}resolveHttpError(e){let o=e?.error,l=((typeof o=="string"?o:JSON.stringify(o||{}))+String(e?.message||"")).toLowerCase();return l.includes("step token")||l.includes("10001")?"Your reset session expired. Please start again from the email step.":l.includes("too many failed otp")?"Too many failed OTP attempts. Please try again later.":l.includes("10017")||l.includes("turnstile")||l.includes("captcha")?"Security check failed. Please complete captcha again and verify your system date/time is correct.":"Failed to reset password. Please try again later."}resetTurnstile(){this.turnstile.widgetId&&this.turnstileService.reset(this.turnstile.widgetId),this.turnstile.token=""}static \u0275fac=function(o){return new(o||i)(P(L),P(N),P(B))};static \u0275cmp=M({type:i,selectors:[["app-staff-forgot-password-reset"]],decls:12,vars:3,consts:[[1,"jp-ims-login-page"],[1,"jp-ims-login-card"],[1,"text-center","jp-ims-login-logo","mb-3"],["src","assets/images/ims/mgr_ims.png","alt","MGR IMS Logo"],[1,"jp-ims-login-gold-line","rounded","mb-3"],[1,"h6","fw-bold","text-center","mb-2",2,"color","var(--jp-ims-purple)"],["class","alert alert-success",4,"ngIf"],[4,"ngIf"],[1,"jp-ims-login-footer","text-center","text-secondary","mb-0","mt-3"],[1,"fa-solid","fa-copyright","me-1"],[1,"alert","alert-success"],["class","small text-center text-secondary mb-3",4,"ngIf"],[1,"small","text-warning","mb-2"],["class","card-error",4,"ngIf"],["class","jp-ims-login-field mb-2 jp-turnstile-form-group",4,"ngIf"],[1,"jp-ims-login-field","mb-2"],["for","forgotOtp",1,"form-label","small","fw-semibold","text-secondary"],["type","text","id","forgotOtp","placeholder","Enter 6-digit OTP","name","forgotOtp","maxlength","6","inputmode","numeric","autocomplete","one-time-code",1,"form-control",3,"ngModelChange","ngModel"],["for","forgotNewPassword",1,"form-label","small","fw-semibold","text-secondary"],[1,"input-group","jp-ims-password-input-group"],["id","forgotNewPassword","placeholder","New Password","name","forgotNewPassword","required","",1,"form-control",3,"ngModelChange","input","type","ngModel"],["type","button",1,"btn","jp-ims-password-toggle",3,"click"],[1,"fa-solid",3,"ngClass"],["for","forgotConfirmPassword",1,"form-label","small","fw-semibold","text-secondary"],["id","forgotConfirmPassword","placeholder","Confirm Password","name","forgotConfirmPassword","required","",1,"form-control",3,"ngModelChange","input","type","ngModel"],["class","error-message",4,"ngIf"],["class","small text-secondary mb-3",4,"ngIf"],["type","button",1,"btn","w-100","rounded-3","fw-bold","jp-ims-login-submit--staff","py-2","mb-2",3,"click","disabled"],[1,"small","text-center","text-secondary","mb-3"],[1,"card-error"],[1,"fa-solid","fa-circle-exclamation","me-1"],[1,"jp-ims-login-field","mb-2","jp-turnstile-form-group"],["id","forgot-reset-turnstile-widget",1,"jp-turnstile-widget-host"],[1,"small","text-secondary","mb-0","mt-1"],[1,"error-message"],[1,"small","text-secondary","mb-3"],[1,"fa-solid","fa-spinner","fa-spin","me-1"]],template:function(o,t){o&1&&(r(0,"div",0)(1,"div",1)(2,"div",2),g(3,"img",3),n(),g(4,"div",4),r(5,"h2",5),s(6,"Reset Password"),n(),f(7,Ia,2,0,"div",6)(8,Fa,29,19,"ng-container",7),r(9,"p",8),g(10,"i",9),s(11),n()()()),o&2&&(a(
17),d("ngIf",t.resetSuccess),a(),d("ngIf",!t.resetSuccess),a(3),b(" ",t.currentYear," Ebullitent.com | All Rights Reserved "))},dependencies:[Se,I,k,A,G,Z,F],styles:[".jp-ims-login-page[_ngcontent-%COMP%] .error-message[_ngcontent-%COMP%]{color:#dc2626;font-size:11px;margin-top:.25rem}.jp-ims-login-page[_ngcontent-%COMP%] .card-error[_ngcontent-%COMP%]{background-color:#fef2f2;border:1px solid #fecaca;border-radius:.5rem;color:#b91c1c;font-size:12px;margin-bottom:.75rem;padding:.5rem .75rem}"]})}return i})();var K=(()=>{class i{cookieService;router;userService;authTokenService;constructor(e,o,t,l){this.cookieService=e,this.router=o,this.userService=t,this.authTokenService=l}canActivate(e,o){return this.isStudentOtpOrTempStudentRoute(e,o)||this.isAccountSwitchFriendlyRoute(e,o)||!this.hasSessionHint()?!0:this.userService.getCurrentUser(!0).then(t=>{if(t)try{sessionStorage.setItem("jp_session_valid","1")}catch{}let l=e.queryParamMap.get("returnUrl");return l?this.router.parseUrl(l):String(t?.userType||t?.usertype||"").toUpperCase()==="STUDENT"?this.router.parseUrl("/student/home"):this.router.parseUrl("/dashboard-form/my-activity")},()=>(this.clearStaleSession(),!0))}clearStaleSession(){this.userService.clearSessionCaches(),this.authTokenService.clearToken(),this.cookieService.remove("currentUser");try{sessionStorage.removeItem("jp_session_valid")}catch{}}hasSessionHint(){if(this.authTokenService.hasAuthenticatedSession())return!0;try{if(sessionStorage.getItem("jp_session_valid")==="1")return!0}catch{}let e=this.cookieService.get("currentUser");return!!(e&&e.trim())}isAccountSwitchFriendlyRoute(e,o){let t=e;for(;t;){let c=t.routeConfig?.path||"";if(c===""||c==="staff-login-mfa"||c==="forgot-password"||c==="forgot-password/verify"||c==="forgot-password/reset"||c==="otp/:regNo"||c.startsWith("otp/")||t.paramMap.has("regNo")&&c.includes("otp"))return!0;t=t.parent}let l=(o?.url||Te()).split("?")[0];return li(l)?!0:l==="/login"||l.endsWith("/staff-login-mfa")||l.includes("/login/forgot-password")}isStudentOtpOrTempStudentRoute(e,o){let t=e;for(;t;){let c=t.routeConfig?.path||"";if(c==="otp/:regNo"||c.startsWith("otp/")||c.includes("otp")&&t.paramMap.has("regNo"))return!0;t=t.parent}let l=(o?.url||Te()).split("?")[0];return Ve(l)?!0:Ve(Te())}static \u0275fac=function(o){return new(o||i)(ce(J),ce(L),ce(Q),ce(X))};static \u0275prov=Ht({token:i,factory:i.\u0275fac,providedIn:"root"})}return i})();var Ba=[{path:"",component:Ye,canActivate:[K],pathMatch:"full"},{path:"layout",component:wi,children:[{path:"login",component:Ye,canActivate:[K]},{path:"otp/:regNo",component:qe,canActivate:[K]}]},{path:"otp/:regNo",component:qe,canActivate:[K]},{path:"staff-personal-info",component:Pi},{path:"staff-login-mfa",component:xi,canActivate:[K]},{path:"forgot-password",component:bi,canActivate:[K]},{path:"forgot-password/verify",component:Mi,canActivate:[K]},{path:"forgot-password/reset",component:Ii,canActivate:[K]}],Li=(()=>{class i{static \u0275fac=function(o){return new(o||i)};static \u0275mod=_e({type:i});static \u0275inj=he({imports:[Ne.forChild(Ba),Ne]})}return i})();var ki=(()=>{class i{title="login-home-page";static \u0275fac=function(o){return new(o||i)};static \u0275cmp=M({type:i,selectors:[["app-root"]],decls:1,vars:0,template:function(o,t){o&1&&g(0,"router-outlet")},dependencies:[Ce]})}return i})();var ol=(()=>{class i{static \u0275fac=function(o){return new(o||i)};static \u0275mod=_e({type:i,bootstrap:[ki]});static \u0275inj=he({providers:[{provide:Qt,useClass:Si,multi:!0}],imports:[Kt,ni,Zt,si,ri,Li]})}return i})();export{ol as LoginHomeModule};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.