1import{a as T}from"./chunk-FHHL2K45.js";import{a as R}from"./chunk-WXQS62KK.js";import"./chunk-L4KS4O4D.js";import"./chunk-OBL3UMJK.js";import{d as _e,e as fe,h as ge}from"./chunk-V5KJRP2K.js";import"./chunk-57S6Q36M.js";import"./chunk-QEGAIP75.js";import"./chunk-3CO4C5KT.js";import{a as he}from"./chunk-3KJJR4PR.js";import"./chunk-ABAWT23C.js";import{a as be}from"./chunk-NDDBMTF2.js";import"./chunk-PP6OKG4J.js";import{b as xe}from"./chunk-3AGUOP7M.js";import{c as le}from"./chunk-LBLKBDMD.js";import"./chunk-YLPDWZZX.js";import"./chunk-Y7PLHQ6M.js";import"./chunk-3R646RNR.js";import{f as ue}from"./chunk-PLPK6HII.js";import{G as ce,H as ve,b as se,c as O,g as B,l as L,n as de,y as pe,z as me}from"./chunk-UFCZWRLF.js";import{a as U}from"./chunk-7Q5L7ALI.js";import"./chunk-CARY4E7O.js";import"./chunk-2PT6A6VZ.js";import{$ as K,Ac as k,Bc as M,Cc as I,Fa as D,Ib as r,Ja as l,Jb as m,Ka as b,Kb as x,Lb as ee,Lc as Y,Pc as ie,Rc as ne,Sb as C,Tb as w,Ub as y,Va as g,Xb as te,Zc as re,_a as s,_b as N,ab as E,ec as A,fa as j,fc as q,ga as H,gc as V,gd as oe,hd as J,id as ae,kb as t,lb as i,mb as c,md as Z,na as v,nb as G,oa as u,ob as z,qb as h,ub as f,wb as d}from"./chunk-32W73H3G.js";import{h as S}from"./chunk-WWX6BADO.js";var Me=(o,p,e)=>({"jp-badge-info":o,"jp-badge-success":p,"jp-badge-warning":e});function Te(o,p){o&1&&(t(0,"div",5)(1,"div",6)(2,"div",7)(3,"span",8),r(4,"Loading..."),i()(),t(5,"p",9),r(6,"Loading concession forms..."),i()()())}function Ve(o,p){if(o&1&&(t(0,"div",10),c(1,"i",11),t(2,"div",12)(3,"p",13),r(4),i()()()),o&2){let e=d();l(4),m(e.error)}}function Pe(o,p){if(o&1){let e=h();G(0),t(1,"tr")(2,"td"),r(3),i(),t(4,"td")(5,"strong"),r(6),i()(),t(7,"td")(8,"span",17),r(9),i()(),t(10,"td")(11,"span",18),r(12),i()(),t(13,"td")(14,"span",19),r(15),i()(),t(16,"td")(17,"span",20),r(18),i()(),t(19,"td")(20,"span",21),r(21),A(22,"uppercase"),i()(),t(23,"td"),r(24),i(),t(25,"td")(26,"div",22)(27,"button",23),f("click",function(){let n=v(e).$implicit,_=d(2);return u(_.openApprovalModal(n,"approve"))}),c(28,"i",24),i(),t(29,"button",25),f("click",function(){let n=v(e).$implicit,_=d(2);return u(_.openApprovalModal(n,"reject"))}),c(30,"i",26),i()()()(),z()}if(o&2){let e=p.$implicit,a=p.index,n=d(2);l(3),m(a+1),l(3),m((e.views==null?null:e.views.name)||e.studentId||"-"),l(3),m((e.views==null?null:e.views.regNo)||"-"),l(3),m((e.views==null?null:e.views.group)||"-"),l(3),m((e.views==null?null:e.views.batch)||"-"),l(3),m(e.applyingSemester||e.semester||(e.views==null?null:e.views.sem)||"-"),l(2),s("ngClass",n.getApprovalStatusClass(n.getApprovalStatus(e))),l(),x(" ",q(22,11,n.getApprovalStatus(e))," "),l(3),m(n.formatDate(e.createdOn)),l(3),s("disabled",n.getApprovalStatus(e)!=="pending"),l(2),s("disabled",n.getApprovalStatus(e)!=="pending")}}function De(o,p){if(o&1&&(t(0,"div",14)(1,"table",15)(2,"thead")(3,"tr")(4,"th"),r(5,"#"),i(),t(6,"th"),r(7,"Student Name"),i(),t(8,"th"),r(9,"Register No"),i(),t(10,"th"),r(11,"Group"),i(),t(12,"th"),r(13,"Batch"),i(),t(14,"th"),r(15,"Applying Semester"),i(),t(16,"th"),r(17,"Status"),i(),t(18,"th"),r(19,"Created On"),i(),t(20,"th"),r(21,"Actions"),i()()(),t(22,"tbody"),g(23,Pe,31,13,"ng-container",16),i()()()),o&2){let e=d();l(23),s("ngForOf",e.concessionForms)}}function Ne(o,p){o&1&&(t(0,"div",27),c(1,"i",28),t(2,"p"),r(3," No pending concession forms found for your department(s). "),i()())}function Ue(o,p){if(o&1){let e=h();t(0,"div",56)(1,"label"),r(2,"Ex-Student Proof"),i(),t(3,"div",57)(4,"button",58),f("click",function(){v(e);let n=d(4);return u(n.downloadMarkSheet(n.selectedForm.exStudentProof))}),c(5,"i",59),r(6," Download Proof "),i()()()}}function Oe(o,p){if(o&1&&(t(0,"div",53)(1,"div",41)(2,"h4"),c(3,"i",54),r(4,"Ex-Student Information"),i()(),t(5,"div",43)(6,"div",44)(7,"label"),r(8,"Previous Institution"),i(),t(9,"div",45),r(10),i()(),t(11,"div",44)(12,"label"),r(13,"Previous Batch"),i(),t(14,"div",45),r(15),i()(),t(16,"div",44)(17,"label"),r(18,"Previous Reg. No"),i(),t(19,"div",45),r(20),i()(),t(21,"div",44)(22,"label"),r(23,"Previous Department"),i(),t(24,"div",45),r(25),i()(),g(26,Ue,7,0,"div",55),i()()),o&2){let e=d(3);l(10),m(e.selectedForm.exStudentInstitution||"-"),l(5),m(e.selectedForm.exStudentBatch||"-"),l(5),m(e.selectedForm.exStudentRegNo||"-"),l(5),m((e.selectedForm.views==null?null:e.selectedForm.views.exStudentDeptName)||"-"),l(),s("ngIf",e.selectedForm.exStudentProof)}}function Be(o,p){o&1&&(t(0,"div",5)(1,"div",62)(2,"span",8),r(3,"Loading..."),i()(),t(4,"span",63),r(5,"Loading mark sheet..."),i()())}function Le(o,p){if(o&1){let e=h();t(0,"div",49)(1,"button",64),f("click",function(){v(e);let n=d(4);return u(n.openPreviewModal(n.selectedForm))}),c(2,"i",65),r(3," Preview "),i(),t(4,"button",66),f("click",function(){v(e);let n=d(4);return u(n.downloadMarkSheet(n.selectedForm.semMarkSheet))}),c(5,"i",59),r(6," Download "),i()()}}function Re(o,p){o&1&&(t(0,"div",49)(1,"p",67),r(2,"Mark sheet not available"),i()())}function We(o,p){if(o&1&&(t(0,"div",40)(1,"div",41)(2,"h4"),c(3,"i",60),r(4,"Semester Mark Sheet"),i()(),g(5,Be,6,0,"div",0)(6,Le,7,0,"div",61)(7,Re,3,0,"div",61),i()),o&2){let e=d(3);l(5),s("ngIf",e.loadingMarkSheet),l(),s("ngIf",!e.loadingMarkSheet&&e.semMarkSheetUrl),l(
1),s("ngIf",!e.loadingMarkSheet&&!e.semMarkSheetUrl&&e.selectedForm.semMarkSheet)}}function Ge(o,p){o&1&&(t(0,"span",68),r(1,"*"),i())}function ze(o,p){if(o&1){let e=h();t(0,"div")(1,"div",40)(2,"div",41)(3,"h4"),c(4,"i",42),r(5,"Student Information"),i()(),t(6,"div",43)(7,"div",44)(8,"label"),r(9,"Name"),i(),t(10,"div",45),r(11),i()(),t(12,"div",44)(13,"label"),r(14,"Reg. No"),i(),t(15,"div",45),r(16),i()(),t(17,"div",44)(18,"label"),r(19,"Department"),i(),t(20,"div",45),r(21),i()(),t(22,"div",44)(23,"label"),r(24,"Academic Year"),i(),t(25,"div",45)(26,"span",19),r(27),i()()(),t(28,"div",44)(29,"label"),r(30,"Applying Semester"),i(),t(31,"div",45)(32,"span",20),r(33),i()()(),t(34,"div",44)(35,"label"),r(36,"Category"),i(),t(37,"div",45)(38,"span",46),r(39),i()()()()(),g(40,Oe,27,5,"div",47)(41,We,8,3,"div",48),t(42,"div",49)(43,"label",50),r(44," Comments "),g(45,Ge,2,0,"span",51),i(),t(46,"textarea",52),y("ngModelChange",function(n){v(e);let _=d(2);return w(_.approvalComments,n)||(_.approvalComments=n),u(n)}),i()()()}if(o&2){let e=d(2);l(11),m((e.selectedForm.views==null?null:e.selectedForm.views.name)||e.selectedForm.studentId||"-"),l(5),m((e.selectedForm.views==null?null:e.selectedForm.views.regNo)||"-"),l(5),m((e.selectedForm.views==null?null:e.selectedForm.views.departmentName)||"-"),l(6),m((e.selectedForm.views==null?null:e.selectedForm.views.batch)||"-"),l(6),m(e.selectedForm.applyingSemester||e.selectedForm.semester||(e.selectedForm.views==null?null:e.selectedForm.views.sem)||"-"),l(5),s("ngClass",N(13,Me,e.selectedForm.category==="UG",e.selectedForm.category==="PG",e.selectedForm.category==="Ph.D.")),l(),m(e.selectedForm.category||"UG"),l(),s("ngIf",e.selectedForm.category==="PG"),l(),s("ngIf",e.selectedForm.semMarkSheet),l(4),s("ngIf",e.approvalAction==="reject"),l(),C("ngModel",e.approvalComments),s("placeholder",e.approvalAction==="approve"?"Optional comments...":"Please provide reason for rejection...")("disabled",e.isApproving)}}function Ke(o,p){o&1&&c(0,"span",69)}function He(o,p){if(o&1){let e=h();t(0,"div",29),f("click",function(){v(e);let n=d();return u(n.closeApprovalModal())}),t(1,"div",30),f("click",function(n){return v(e),u(n.stopPropagation())}),t(2,"div",31)(3,"h3"),c(4,"i",32),r(5),i(),t(6,"button",33),f("click",function(){v(e);let n=d();return u(n.closeApprovalModal())}),c(7,"i",26),i()(),t(8,"div",34),g(9,ze,47,17,"div",35),i(),t(10,"div",36)(11,"button",37),f("click",function(){v(e);let n=d();return u(n.closeApprovalModal())}),r(12," Cancel "),i(),t(13,"button",38),f("click",function(){v(e);let n=d();return u(n.submitApproval())}),g(14,Ke,1,0,"span",39),r(15),i()()()()}if(o&2){let e=d();l(2),E("jp-bg-success",e.approvalAction==="approve")("jp-bg-danger",e.approvalAction==="reject"),l(2),E("fa-check",e.approvalAction==="approve")("fa-times",e.approvalAction==="reject"),l(),x(" ",e.approvalAction==="approve"?"Approve":"Reject"," Concession Form "),l(),s("disabled",e.isApproving),l(3),s("ngIf",e.selectedForm),l(2),s("disabled",e.isApproving),l(2),E("jp-btn-success",e.approvalAction==="approve")("jp-btn-danger",e.approvalAction==="reject"),s("disabled",e.isApproving),l(),s("ngIf",e.isApproving),l(),x(" ",e.isApproving?"Processing...":e.approvalAction==="approve"?"Approve":"Reject"," ")}}function qe(o,p){o&1&&(t(0,"div",75)(1,"div",7)(2,"span",8),r(3,"Loading..."),i()(),t(4,"p",76),r(5,"Loading mark sheet..."),i()())}function Ye(o,p){if(o&1){let e=h();t(0,"div",77),c(1,"img",78),t(2,"div",79)(3,"a",80),c(4,"i",81),r(5," Open in New Tab "),i(),t(6,"button",82),f("click",function(){v(e);let n=d(2);return u(n.downloadMarkSheet(n.selectedForm==null?null:n.selectedForm.semMarkSheet))}),c(7,"i",59),r(8," Download "),i()()()}if(o&2){let e=d(2);l(),s("src",e.semMarkSheetUrl,D),l(2),s("href",e.semMarkSheetUrl,D)}}function Je(o,p){o&1&&(t(0,"div",75),c(1,"i",83),t(2,"p",76),r(3,"Failed to load mark sheet preview"),i()())}function Qe(o,p){if(o&1){let e=h();t(0,"div",29),f("click",function(){v(e);let n=d();return u(n.closePreviewModal())}),t(1,"div",70),f("click",function(n){return v(e),u(n.stopPropagation())}),t(2,"div",31)(3,"h3"),c(4,"i",71),r(5,"Semester Mark Sheet Preview "),i(),t(6,"button",72),f("click",function(){v(e);let n=d();return u(n.closePreviewModal())}),c(7,"i",26),i()(),t(8,"div",34),g(9,qe,6,0,"div",73)(10,Ye,9,2,"div",74)(11,Je,4,0,"div",73),i()()()}if(o&2){let e=d();l(9),s("ngIf",e.loadingMarkSheet),l(),s("ngIf",!e.loadingMarkSheet&&e.semMarkSheetUrl),l(
1),s("ngIf",!e.loadingMarkSheet&&!e.semMarkSheetUrl)}}var we=(()=>{class o{concessionFormService;toastr;fileUploadService;allForms=[];concessionForms=[];loading=!1;error="";showTable=!1;showApprovalModal=!1;selectedForm=null;approvalComments="";isApproving=!1;approvalAction="approve";semMarkSheetUrl="";loadingMarkSheet=!1;showPreviewModal=!1;constructor(e,a,n){this.concessionFormService=e,this.toastr=a,this.fileUploadService=n}ngOnInit(){this.loadPendingForms()}loadPendingForms(){this.loading=!0,this.error="",this.showTable=!1,this.allForms=[],this.concessionForms=[],this.concessionFormService.getPendingFormsForHod().then(e=>{this.loading=!1,console.log("Forms received from API:",e),Array.isArray(e)?(console.log("Total forms received:",e.length),this.allForms=e.filter(a=>!a.hodAction||a.hodAction.length===0?!0:a.hodAction[a.hodAction.length-1].approved===!1),this.concessionForms=[...this.allForms],this.showTable=!0):(console.warn("API did not return an array:",e),this.allForms=[],this.concessionForms=[],this.showTable=!1)}).catch(e=>{this.loading=!1,this.error=e?.error?.message||"Failed to load concession forms. Please try again.",console.error("Error loading concession forms:",e),this.allForms=[],this.concessionForms=[],this.showTable=!1})}formatDate(e){if(!e)return"-";try{return new Date(e).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return e}}viewForm(e){console.log("View form:",e)}openApprovalModal(e,a){return S(this,null,function*(){this.selectedForm=e,this.approvalAction=a,this.approvalComments="",this.semMarkSheetUrl="",this.showApprovalModal=!0,e.semMarkSheet&&e.semMarkSheet.fileKey&&e.semMarkSheet.versionId&&(yield this.loadSemMarkSheetUrl(e.semMarkSheet))})}loadSemMarkSheetUrl(e){return S(this,null,function*(){if(!(!e.fileKey||!e.versionId)){this.loadingMarkSheet=!0;try{let a=yield this.fileUploadService.getPreSignedUrl(e.versionId,e.fileKey);this.semMarkSheetUrl=a||""}catch(a){console.error("Error loading mark sheet URL:",a),this.semMarkSheetUrl="",this.toastr.error("Failed to load semester mark sheet","Error")}finally{this.loadingMarkSheet=!1}}})}closeApprovalModal(){this.showApprovalModal=!1,this.selectedForm=null,this.approvalComments="",this.isApproving=!1,this.semMarkSheetUrl="",this.loadingMarkSheet=!1}openPreviewModal(e){return S(this,null,function*(){e.semMarkSheet&&e.semMarkSheet.fileKey&&e.semMarkSheet.versionId?(yield this.loadSemMarkSheetUrl(e.semMarkSheet),this.showPreviewModal=!0):this.toastr.warning("No mark sheet available for preview","Warning")})}closePreviewModal(){this.showPreviewModal=!1}downloadMarkSheet(e){return S(this,null,function*(){if(!e||!e.fileKey||!e.versionId){this.toastr.error("Mark sheet information not available","Error");return}try{let a=yield this.fileUploadService.getPreSignedUrl(e.versionId,e.fileKey);if(a){let n=document.createElement("a");n.href=a,n.download=e.fileKey||"marksheet",n.target="_blank",document.body.appendChild(n),n.click(),document.body.removeChild(n),this.toastr.success("Download started","Success")}else this.toastr.error("Failed to generate download URL","Error")}catch(a){console.error("Error downloading mark sheet:",a),this.toastr.error("Failed to download mark sheet","Error")}})}submitApproval(){let e=this.selectedForm?._id||this.selectedForm?.id;if(!this.selectedForm||!e){this.toastr.error("No form selected for approval","Error");return}let a=this.approvalAction==="approve";if(!a&&!this.approvalComments.trim()){this.toastr.warning("Please provide comments for rejection","Validation Error");return}this.isApproving=!0,this.concessionFormService.hodApproval(e,a,this.approvalComments.trim()).then(n=>{this.isApproving=!1,this.toastr.success(`Form ${a?"approved":"rejected"} successfully!`,"Success"),this.closeApprovalModal(),this.closeApprovalModal(),this.loadPendingForms()}).catch(n=>{this.isApproving=!1;let _=n?.error?.message||`Failed to ${a?"approve":"reject"} form. Please try again.`;this.toastr.error(_,"Error"),console.error("Error in HOD approval:",n)})}getApprovalStatus(e){return!e.hodAction||e.hodAction.length===0?"pending":e.hodAction[e.hodAction.length-1].approved?"approved":"rejected"}getApprovalStatusClass(e){switch(e){case"approved":return"jp-badge jp-badge-success";case"rejected":return"jp-badge jp-badge-danger";default:return"jp-badge jp-badge-warning"}}isFirstInGroup(e){if(e===0)return!0;let a=this.concessionForms[e]?.views?.group||"",n=this.concessionForms[e-1]?.views?.group||"";return a!==n}getGroupName(e){return e?.views?.group||"-"}static \u0275fac=function(a){return new(a||o)(b(T),b(U),b(R))};static \u0275cmp=j({type:o,selectors:[["app-concession-formapproval"]],decls:6,vars:6,consts:[["class","jp-loading-section",4,"ngIf"],["class","jp-alert jp-alert-danger",4,"ngIf"],["class","card shadow-sm",4,"ngIf"],["class","jp-no-data-message",4,"ngIf"],["class","jp-modal-backdrop",3,"click",4,"ngIf"],[1,"jp-loading-section"],[1,"jp-loading"],["role","status",1,"spinner-border","text-primary"],[1,"visually-hidden"],[1,"jp-mt-2","jp-mb-0"],[1,"jp-alert","jp-alert-danger"],[1,"fa","fa-exclamation-triangle","jp-alert-icon"],[1,"jp-alert-content"],[1,"jp-alert-message"],[1,"card","shadow-sm"],[1,"table","table-striped","table-hover"],[4,"ngFor","ngForOf"],[1,"jp-text-muted"],[1,"jp-badge","jp-badge-info"],[1,"jp-badge","jp-badge-secondary"],[1,"jp-badge","jp-badge-primary"],[3,"ngClass"],[1,"jp-action-buttons"],["title","Approve",1,"jp-btn-action","jp-btn-action-edit",3,"click","disabled"],[1,"fa","fa-check"],["title","Reject",1,"jp-btn-action","jp-btn-action-delete",3,"click","disabled"],[1,"fa","fa-times"],[1,"jp-no-data-message"],[1,"fa","fa-inbox"],[1,"jp-modal-backdrop",3,"click"],[1,"jp-modal-container","jp-modal-lg",3,"click"],[1,"jp-modal-header"],[1,"fa"],["type","button",1,"jp-modal-header-close",3,"click","disabled"],[1,"jp-modal-body","jp-modal-body-scrollable"],[4,"ngIf"],[1,"jp-modal-footer"],["type","button",1,"jp-btn","jp-btn-secondary",3,"click","disabled"],["type","button",1,"jp-btn",3,"click","disabled"],["class","spinner-border spinner-border-sm jp-me-2",4,"ngIf"],[1,"jp-section"],[1,"jp-section-header"],[1,"fa","fa-info-circle","me-2"],[1,"row","g-4"],[1,"col-md-6","jp-form-group"],[1,"jp-form-field-display"],[1,"jp-badge",3,"ngClass"],["class","jp-section mt-4",4,"ngIf"],["class","jp-section",4,"ngIf"],[1,"jp-form-group"],["for","approvalComments"],["class","jp-required",4,"ngIf"],["id","approvalComments","rows","4",1,"form-control",3,"ngModelChange","ngModel","placeholder","disabled"],[1,"jp-section","mt-4"],[1,"fa","fa-history","me-2"],["class","col-md-12 jp-form-group",4,"ngIf"],[1,"col-md-12","jp-form-group"],[1,"mt-2","text-primary"],["type","button",1,"jp-btn","jp-btn-sm","jp-btn-primary",3,"click"],[1,"fa","fa-download","me-1"],[1,"fa","fa-file-pdf-o","me-2"],["class","jp-form-group",4,"ngIf"],["role","status",1,"spinner-border","spinner-border-sm","text-primary"],[1,"jp-ms-2"],["type","button","title","Preview Mark Sheet",1,"jp-btn","jp-btn-sm","jp-btn-primary","jp-me-2",3,"click"],[1,"fa","fa-eye","me-1"],["type","button","title","Download Mark Sheet",1,"jp-btn","jp-btn-sm","jp-btn-success",3,"click"],[1,"jp-text-muted","jp-mb-0"],[1,"jp-required"],[1,"spinner-border","spinner-border-sm","jp-me-2"],[1,"jp-modal-container","jp-modal-xl",3,"click"],[1,"fa","fa-file-image-o","me-2"],["type","button",1,"jp-modal-header-close",3,"click"],["class","text-center py-5",4,"ngIf"],["class","text-center",4,"ngIf"],[1,"text-center","py-5"],[1,"mt-3","text-muted"],[1,"text-center"],["alt","Semester Mark Sheet",1,"img-fluid",2,"max-width","100%","height","auto","border","1p
1x solid #ddd","border-radius","8px",3,"src"],[1,"mt-3"],["target","_blank",1,"jp-btn","jp-btn-primary","jp-me-2",3,"href"],[1,"fa","fa-external-link","me-1"],["type","button",1,"jp-btn","jp-btn-success",3,"click"],[1,"fa","fa-exclamation-triangle","text-warning",2,"font-size","3rem"]],template:function(a,n){a&1&&g(0,Te,7,0,"div",0)(1,Ve,5,1,"div",1)(2,De,24,1,"div",2)(3,Ne,4,0,"div",3)(4,He,16,19,"div",4)(5,Qe,12,3,"div",4),a&2&&(s("ngIf",n.loading),l(),s("ngIf",n.error&&!n.loading),l(),s("ngIf",n.showTable&&!n.loading&&n.concessionForms.length>0),l(),s("ngIf",n.showTable&&!n.loading&&n.concessionForms.length===0),l(),s("ngIf",n.showApprovalModal),l(),s("ngIf",n.showPreviewModal))},dependencies:[k,M,I,O,B,L,Y],styles:[".nav-tabs[_ngcontent-%COMP%]{border-bottom:2px solid #dee2e6;margin-bottom:1rem!important}.nav-tabs[_ngcontent-%COMP%] .nav-link[_ngcontent-%COMP%]{color:#495057;border:none;border-bottom:3px solid transparent;padding:10px 16px;transition:all .3s ease;font-weight:500}.nav-tabs[_ngcontent-%COMP%] .nav-link[_ngcontent-%COMP%]:hover{border-color:transparent;color:#007bff;background-color:#f8f9fa}.nav-tabs[_ngcontent-%COMP%] .nav-link.active[_ngcontent-%COMP%]{color:#007bff;background-color:transparent;border-color:transparent transparent #007bff;font-weight:600}"]})}return o})();var Xe=(o,p,e)=>({"jp-badge-info":o,"jp-badge-success":p,"jp-badge-warning":e});function Ze(o,p){o&1&&(t(0,"div",5)(1,"div",6)(2,"div",7)(3,"span",8),r(4,"Loading..."),i()(),t(5,"p",9),r(6,"Loading concession forms..."),i()()())}function $e(o,p){if(o&1&&(t(0,"div",10),c(1,"i",11),t(2,"div",12)(3,"p",13),r(4),i()()()),o&2){let e=d();l(4),m(e.error)}}function et(o,p){o&1&&(t(0,"span",27),c(1,"i",28),r(2,"Submitted "),i())}function tt(o,p){if(o&1){let e=h();t(0,"tr")(1,"td"),r(2),i(),t(3,"td")(4,"strong"),r(5),i()(),t(6,"td")(7,"span",17),r(8),i()(),t(9,"td")(10,"span",18),r(11),i()(),t(12,"td")(13,"span",19),r(14),i()(),t(15,"td")(16,"span",20),r(17),i()(),t(18,"td")(19,"span",21),r(20),i()(),t(21,"td")(22,"span",22),r(23),A(24,"uppercase"),i()(),t(25,"td"),r(26),i(),t(27,"td")(28,"div",23)(29,"button",24),f("click",function(){let n=v(e).$implicit,_=d(2);return u(_.openFeesModal(n))}),c(30,"i",25),r(31,"Fees "),i(),g(32,et,3,0,"span",26),i()()()}if(o&2){let e=p.$implicit,a=p.index,n=d(2);l(2),m(a+1),l(3),m((e.views==null?null:e.views.name)||e.studentId||"-"),l(3),m((e.views==null?null:e.views.regNo)||"-"),l(3),m((e.views==null?null:e.views.departmentName)||"-"),l(3),m((e.views==null?null:e.views.group)||"-"),l(3),m((e.views==null?null:e.views.batch)||"-"),l(3),m(e.applyingSemester||e.semester||(e.views==null?null:e.views.sem)||"-"),l(2),s("ngClass",n.getFeesStatusClass(n.getFeesStatus(e))),l(),x(" ",q(24,12,n.getFeesStatus(e))," "),l(3),m(n.formatDate(e.createdOn)),l(3),s("disabled",n.getFeesStatus(e)==="filled"),l(3),s("ngIf",e.requestFormId)}}function it(o,p){if(o&1&&(t(0,"div",14)(1,"table",15)(2,"thead")(3,"tr")(4,"th"),r(5,"#"),i(),t(6,"th"),r(7,"Student Name"),i(),t(8,"th"),r(9,"Register No"),i(),t(10,"th"),r(11,"Department"),i(),t(12,"th"),r(13,"Group"),i(),t(14,"th"),r(15,"Batch"),i(),t(16,"th"),r(17,"Applying Semester"),i(),t(18,"th"),r(19,"Fees Status"),i(),t(20,"th"),r(21,"Created On"),i(),t(22,"th"),r(23,"Actions"),i()()(),t(24,"tbody"),g(25,tt,33,14,"tr",16),i()()()),o&2){let e=d();l(25),s("ngForOf",e.concessionForms)}}function nt(o,p){o&1&&(t(0,"div",29),c(1,"i",30),t(2,"p"),r(3," No concession forms awaiting fees approval found. "),i()())}function rt(o,p){if(o&1){let e=h();t(0,"div",74)(1,"label"),r(2,"Ex-Student Proof"),i(),t(3,"div",75)(4,"button",76),f("click",function(){v(e);let n=d(4);return u(n.downloadMarkSheet(n.selectedForm.exStudentProof))}),c(5,"i",77),r(6," Download Proof "),i()()()}}function ot(o,p){if(o&1&&(t(0,"div",71)(1,"div",44)(2,"h4"),c(3,"i",72),r(4,"Ex-Student Information"),i()(),t(5,"div",46)(6,"div",47)(7,"label"),r(8,"Previous Institution"),i(),t(9,"div",48),r(10),i()(),t(11,"div",47)(12,"label"),r(13,"Previous Batch"),i(),t(14,"div",48),r(15),i()(),t(16,"div",47)(17,"label"),r(18,"Previous Reg. No"),i(),t(19,"div",48),r(20),i()(),t(21,"div",47)(22,"label"),r(23,"Previous Department"),i(),t(24,"div",48),r(25),i()(),g(26,rt,7,0,"div",73),i()()),o&2){let e=d(3);l(10),m(e.selectedForm.exStudentInstitution||"-"),l(5),m(e.selectedForm.exStudentBatch||"-"),l(5),m(e.selectedForm.exStudentRegNo||"-"),l(5),m((e.selectedForm.views==null?null:e.selectedForm.views.exStudentDeptName)||"-"),l(),s("ngIf",e.selectedForm.exStudentProof)}}function at(o,p){o&1&&(t(0,"div",5)(1,"div",80)(2,"span",8),r(3,"Loading..."),i()(),t(4,"span",81),r(5,"Loading mark sheet..."),i()())}function lt(o,p){if(o&1){let e=h();t(0,"div",82)(1,"button",83),f("click",function(){v(e);let n=d(4);return u(n.openPreviewModal(n.selectedForm))}),c(2,"i",84),r(3," Preview "),i(),t(4,"button",85),f("click",function(){v(e);let n=d(4);return u(n.downloadMarkSheet(n.selectedForm.semMarkSheet))}),c(5,"i",86),r(6," Download "),i()()}}function st(o,p){o&1&&(t(0,"div",82)(1,"p",87),r(2,"Mark sheet not available"),i()())}function dt(o,p){if(o&1&&(t(0,"div",43)(1,"div",44)(2,"h4"),c(3,"i",78),r(4,"Semester Mark Sheet"),i()(),g(5,at,6,0,"div",0)(6,lt,7,0,"div",79)(7,st,3,0,"div",79),i()),o&2){let e=d(3);l(5),s("ngIf",e.loadingMarkSheet),l(),s("ngIf",!e.loadingMarkSheet&&e.semMarkSheetUrl),l(
1),s("ngIf",!e.loadingMarkSheet&&!e.semMarkSheetUrl&&e.selectedForm.semMarkSheet)}}function pt(o,p){if(o&1){let e=h();t(0,"div",88)(1,"div",89)(2,"label",90),r(3,"No. of Arrears"),i(),t(4,"input",91),y("ngModelChange",function(n){v(e);let _=d(3);return w(_.feeForm.arrearCount,n)||(_.feeForm.arrearCount=n),u(n)}),f("input",function(){v(e);let n=d(3);return u(n.calculateAmounts())}),i()(),t(5,"div",89)(6,"label",92),r(7,"Amount"),i(),t(8,"input",93),y("ngModelChange",function(n){v(e);let _=d(3);return w(_.feeForm.arrear,n)||(_.feeForm.arrear=n),u(n)}),i()()()}if(o&2){let e=d(3);l(4),C("ngModel",e.feeForm.arrearCount),s("disabled",e.isSubmitting),l(4),C("ngModel",e.feeForm.arrear)}}function mt(o,p){if(o&1){let e=h();t(0,"div")(1,"div",43)(2,"div",44)(3,"h4"),c(4,"i",45),r(5,"Student Information"),i()(),t(6,"div",46)(7,"div",47)(8,"label"),r(9,"Name"),i(),t(10,"div",48),r(11),i()(),t(12,"div",47)(13,"label"),r(14,"Reg. No"),i(),t(15,"div",48),r(16),i()(),t(17,"div",47)(18,"label"),r(19,"Department"),i(),t(20,"div",48),r(21),i()(),t(22,"div",47)(23,"label"),r(24,"Academic Year"),i(),t(25,"div",48)(26,"span",20),r(27),i()()(),t(28,"div",47)(29,"label"),r(30,"Applying Semester"),i(),t(31,"div",48)(32,"span",21),r(33),i()()(),t(34,"div",47)(35,"label"),r(36,"Category"),i(),t(37,"div",48)(38,"span",49),r(39),i()()()()(),g(40,ot,27,5,"div",50)(41,dt,8,3,"div",51),t(42,"div",43)(43,"div",44)(44,"h4"),c(45,"i",52),r(46,"Fee Details"),i()(),t(47,"div",46)(48,"div",47)(49,"label",53),r(50,"Actual Fee "),t(51,"span",54),r(52,"*"),i()(),t(53,"input",55),y("ngModelChange",function(n){v(e);let _=d(2);return w(_.feeForm.actualFee,n)||(_.feeForm.actualFee=n),u(n)}),f("input",function(){v(e);let n=d(2);return u(n.calculateAmounts())}),i()(),t(54,"div",47)(55,"label",56),r(56,"Percentage of Concession "),t(57,"span",54),r(58,"*"),i()(),t(59,"input",57),y("ngModelChange",function(n){v(e);let _=d(2);return w(_.feeForm.percentageEligible,n)||(_.feeForm.percentageEligible=n),u(n)}),f("input",function(){v(e);let n=d(2);return u(n.calculateAmounts())}),i()(),t(60,"div",47)(61,"div",58)(62,"input",59),y("ngModelChange",function(n){v(e);let _=d(2);return w(_.feeForm.hasArrear,n)||(_.feeForm.hasArrear=n),u(n)}),f("change",function(){v(e);let n=d(2);return u(n.calculateAmounts())}),i(),t(63,"label",60),r(64," Has Arrear? "),i()(),g(65,pt,9,3,"div",61),i(),t(66,"div",47)(67,"label",62),r(68,"Eligible Amount"),i(),t(69,"input",63),y("ngModelChange",function(n){v(e);let _=d(2);return w(_.feeForm.eligibleAmount,n)||(_.feeForm.eligibleAmount=n),u(n)}),i(),t(70,"small",64),r(71,"Calculated: Percentage Eligible - Arrear"),i()(),t(72,"div",47)(73,"label",65),r(74,"Amount to be Paid "),t(75,"span",54),r(76,"*"),i()(),t(77,"input",66),y("ngModelChange",function(n){v(e);let _=d(2);return w(_.feeForm.amountToBePaid,n)||(_.feeForm.amountToBePaid=n),u(n)}),i()(),t(78,"div",47)(79,"label",67),r(80,"Other Amount"),i(),t(81,"input",68),y("ngModelChange",function(n){v(e);let _=d(2);return w(_.feeForm.otherAmount,n)||(_.feeForm.otherAmount=n),u(n)}),i()(),t(82,"div",47)(83,"label",69)(84,"strong"),r(85,"Total Amount "),t(86,"span",54),r(87,"*"),i()()(),t(88,"input",70),y("ngModelChange",function(n){v(e);let _=d(2);return w(_.feeForm.totalAmount,n)||(_.feeForm.totalAmount=n),u(n)}),i()()()()()}if(o&2){let e=d(2);l(11),x(" ",(e.selectedForm.views==null?null:e.selectedForm.views.name)||e.selectedForm.studentId||"-"," "),l(5),x(" ",(e.selectedForm.views==null?null:e.selectedForm.views.regNo)||"-"," "),l(5),x(" ",(e.selectedForm.views==null?null:e.selectedForm.views.departmentName)||"-"," "),l(6),m((e.selectedForm.views==null?null:e.selectedForm.views.batch)||"-"),l(6),m(e.selectedForm.applyingSemester||e.selectedForm.semester||(e.selectedForm.views==null?null:e.selectedForm.views.sem)||"-"),l(5),s("ngClass",N(24,Xe,e.selectedForm.category==="UG",e.selectedForm.category==="PG",e.selectedForm.category==="Ph.D.")),l(),m(e.selectedForm.category||"UG"),l(),s("ngIf",e.selectedForm.category==="PG"),l(),s("ngIf",e.selectedForm.semMarkSheet),l(12),C("ngModel",e.feeForm.actualFee),s("disabled",e.isSubmitting),l(6),C("ngModel",e.feeForm.percentageEligible),s("disabled",e.isSubmitting),l(3),C("ngModel",e.feeForm.hasArrear),s("disabled",e.isSubmitting),l(3),s("ngIf",e.feeForm.hasArrear),l(4),C("ngModel",e.feeForm.eligibleAmount),s("disabled",e.isSubmitting),l(8),C("ngModel",e.feeForm.amountToBePaid),s("disabled",e.isSubmitting),l(4),C("ngModel",e.feeForm.otherAmount),s("disabled",e.isSubmitting),l(7),C("ngModel",e.feeForm.totalAmount),s("disabled",e.isSubmitting)}}function ct(o,p){o&1&&c(0,"span",94)}function vt(o,p){if(o&1){let e=h();t(0,"div",31),f("click",function(){v(e);let n=d();return u(n.closeFeesModal())}),t(1,"div",32),f("click",function(n){return v(e),u(n.stopPropagation())}),t(2,"div",33)(3,"h3"),c(4,"i",34),r(5,"Fees Section - Fill Details "),i(),t(6,"button",35),f("click",function(){v(e);let n=d();return u(n.closeFeesModal())}),c(7,"i",36),i()(),t(8,"div",37),g(9,mt,89,28,"div",38),i(),t(10,"div",39)(11,"button",40),f("click",function(){v(e);let n=d();return u(n.closeFeesModal())}),r(12," Cancel "),i(),t(13,"button",41),f("click",function(){v(e);let n=d();return u(n.submitFeesApproval())}),g(14,ct,1,0,"span",42),r(15),i()()()()}if(o&2){let e=d();l(6),s("disabled",e.isSubmitting),l(3),s("ngIf",e.selectedForm),l(2),s("disabled",e.isSubmitting),l(2),s("disabled",e.isSubmitting),l(),s("ngIf",e.isSubmitting),l(),x(" ",e.isSubmitting?"Submitting...":"Submit Fees Details"," ")}}function ut(o,p){o&1&&(t(0,"div",101)(1,"div",7)(2,"span",8),r(3,"Loading..."),i()(),t(4,"p",102),r(5,"Loading mark sheet..."),i()())}function _t(o,p){if(o&1){let e=h();t(0,"div",103),c(1,"img",104),t(2,"div",105)(3,"a",106),c(4,"i",107),r(5," Open in New Tab "),i(),t(6,"button",108),f("click",function(){v(e);let n=d(2);return u(n.downloadMarkSheet(n.selectedForm==null?null:n.selectedForm.semMarkSheet))}
1),c(7,"i",77),r(8," Download "),i()()()}if(o&2){let e=d(2);l(),s("src",e.semMarkSheetUrl,D),l(2),s("href",e.semMarkSheetUrl,D)}}function ft(o,p){o&1&&(t(0,"div",101),c(1,"i",109),t(2,"p",102),r(3,"Failed to load mark sheet preview"),i()())}function gt(o,p){if(o&1){let e=h();t(0,"div",31),f("click",function(){v(e);let n=d();return u(n.closePreviewModal())}),t(1,"div",95),f("click",function(n){return v(e),u(n.stopPropagation())}),t(2,"div",96)(3,"h3"),c(4,"i",97),r(5,"Semester Mark Sheet Preview "),i(),t(6,"button",98),f("click",function(){v(e);let n=d();return u(n.closePreviewModal())}),c(7,"i",36),i()(),t(8,"div",37),g(9,ut,6,0,"div",99)(10,_t,9,2,"div",100)(11,ft,4,0,"div",99),i()()()}if(o&2){let e=d();l(9),s("ngIf",e.loadingMarkSheet),l(),s("ngIf",!e.loadingMarkSheet&&e.semMarkSheetUrl),l(),s("ngIf",!e.loadingMarkSheet&&!e.semMarkSheetUrl)}}var ye=(()=>{class o{depService;accYearService;groupService;concessionFormService;toastr;fileUploadService;allForms=[];concessionForms=[];loading=!1;error="";showTable=!1;selectedGroupFilter="all";showFeesModal=!1;selectedForm=null;isSubmitting=!1;semMarkSheetUrl="";loadingMarkSheet=!1;showPreviewModal=!1;feeForm={actualFee:0,percentageEligible:0,hasArrear:!1,arrearCount:0,arrear:0,eligibleAmount:0,amountToBePaid:0,otherAmount:0,totalAmount:0};constructor(e,a,n,_,F,W){this.depService=e,this.accYearService=a,this.groupService=n,this.concessionFormService=_,this.toastr=F,this.fileUploadService=W}ngOnInit(){this.loadConcessionForms()}loadConcessionForms(){this.loading=!0,this.error="",this.showTable=!1,this.concessionFormService.getCurrentStudentConcessionForms(!0,!1,0,1e3).then(e=>{this.loading=!1,console.log("Forms received from API (Fees):",e),Array.isArray(e)?(console.log("Total forms received (Fees):",e.length),this.allForms=e,this.filterHodApprovedForms(),this.showTable=!0):(console.warn("API did not return an array (Fees):",e),this.allForms=[],this.concessionForms=[],this.showTable=!1)}).catch(e=>{this.loading=!1,this.error=e?.error?.message||"Failed to load concession forms. Please try again.",console.error("Error loading concession forms:",e),this.allForms=[],this.concessionForms=[],this.showTable=!1})}formatDate(e){if(!e)return"-";try{return new Date(e).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return e}}filterHodApprovedForms(){let e=this.allForms.filter(a=>!a.hodAction||a.hodAction.length===0||a.hodAction[a.hodAction.length-1].approved!==!0?!1:!a.feeSection||a.feeSection.length===0?!0:a.feeSection[a.feeSection.length-1].filled===!1);this.concessionForms=e.sort((a,n)=>{let _=(a.views?.departmentName||"").toString().toUpperCase(),F=(n.views?.departmentName||"").toString().toUpperCase();return _<F?-1:_>F?1:0})}viewForm(e){console.log("View form (Fees):",e)}openFeesModal(e){return S(this,null,function*(){this.selectedForm=e,this.feeForm={actualFee:0,percentageEligible:0,hasArrear:!1,arrearCount:0,arrear:0,eligibleAmount:0,amountToBePaid:0,otherAmount:0,totalAmount:0},this.semMarkSheetUrl="",this.showFeesModal=!0,e.semMarkSheet&&e.semMarkSheet.fileKey&&e.semMarkSheet.versionId&&(yield this.loadSemMarkSheetUrl(e.semMarkSheet)),this.calculateAmounts()})}loadSemMarkSheetUrl(e){return S(this,null,function*(){if(!(!e.fileKey||!e.versionId)){this.loadingMarkSheet=!0;try{let a=yield this.fileUploadService.getPreSignedUrl(e.versionId,e.fileKey);this.semMarkSheetUrl=a||""}catch(a){console.error("Error loading mark sheet URL:",a),this.semMarkSheetUrl="",this.toastr.error("Failed to load semester mark sheet","Error")}finally{this.loadingMarkSheet=!1}}})}closeFeesModal(){this.showFeesModal=!1,this.selectedForm=null,this.semMarkSheetUrl="",this.loadingMarkSheet=!1}openPreviewModal(e){return S(this,null,function*(){e.semMarkSheet&&e.semMarkSheet.fileKey&&e.semMarkSheet.versionId?(yield this.loadSemMarkSheetUrl(e.semMarkSheet),this.showPreviewModal=!0):this.toastr.warning("No mark sheet available for preview","Warning")})}closePreviewModal(){this.showPreviewModal=!1}downloadMarkSheet(e){return S(this,null,function*(){if(!e||!e.fileKey||!e.versionId){this.toastr.error("Mark sheet information not available","Error");return}try{let a=yield this.fileUploadService.getPreSignedUrl(e.versionId,e.fileKey);if(a){let n=document.createElement("a");n.href=a,n.download=e.fileKey||"marksheet",n.target="_blank",document.body.appendChild(n),n.click(),document.body.removeChild(n),this.toastr.success("Download started","Success")}else this.toastr.error("Failed to generate download URL","Error")}catch(a){console.error("Error downloading mark sheet:",a),this.toastr.error("Failed to download mark sheet","Error")}})}
1calculateAmounts(){let e=Number(this.feeForm.actualFee)||0,a=Number(this.feeForm.percentageEligible)||0,n=Number(this.feeForm.arrearCount)||0,_=Number(this.feeForm.otherAmount)||0,F=0;this.feeForm.hasArrear&&n>0?(F=n*1e3+1e3,this.feeForm.arrear=F):this.feeForm.arrear=0,this.feeForm.hasArrear&&F>0?(this.feeForm.eligibleAmount=a-F,this.feeForm.eligibleAmount<0&&(this.feeForm.eligibleAmount=0)):this.feeForm.eligibleAmount=a,e>0?(this.feeForm.amountToBePaid=e-this.feeForm.eligibleAmount,this.feeForm.amountToBePaid<0&&(this.feeForm.amountToBePaid=0)):this.feeForm.amountToBePaid=0,this.feeForm.totalAmount=this.feeForm.amountToBePaid+_}onArrearCheckboxChange(){this.feeForm.hasArrear||(this.feeForm.arrear=0),this.calculateAmounts()}submitFeesApproval(){if(!this.selectedForm){this.toastr.error("No form selected","Error");return}if(!this.feeForm.actualFee||this.feeForm.actualFee<=0){this.toastr.warning("Please enter actual fee amount","Validation Error");return}if(!this.feeForm.percentageEligible||this.feeForm.percentageEligible<0){this.toastr.warning("Please enter percentage eligible amount","Validation Error");return}if(this.feeForm.hasArrear&&(!this.feeForm.arrear||this.feeForm.arrear<=0)){this.toastr.warning("Please enter arrear amount","Validation Error");return}if(this.calculateAmounts(),this.feeForm.eligibleAmount<0){this.toastr.warning("Eligible amount cannot be negative. Please check your inputs.","Validation Error");return}let e=this.selectedForm._id||this.selectedForm.id;if(!e){this.toastr.error("Form ID not found","Error");return}this.isSubmitting=!0;let a={actualFee:this.feeForm.actualFee,percentageEligible:this.feeForm.percentageEligible,eligibleAmount:this.feeForm.eligibleAmount,amountToBePaid:this.feeForm.amountToBePaid,otherAmount:this.feeForm.otherAmount,totalAmount:this.feeForm.totalAmount};this.feeForm.hasArrear&&this.feeForm.arrear>0&&(a.arrear=this.feeForm.arrear,a.arrearCount=this.feeForm.arrearCount),this.concessionFormService.feesApproval(e,a).then(n=>{this.isSubmitting=!1,n&&n.requestFormId?this.toastr.success("Fees section approved and form automatically submitted for approval workflow!","Success",{timeOut:4e3,progressBar:!0}):this.toastr.success("Fees section updated successfully!","Success"),this.closeFeesModal(),this.loadConcessionForms()}).catch(n=>{this.isSubmitting=!1;let _=n?.error?.message||"Failed to update fees section. Please try again.";this.toastr.error(_,"Error"),console.error("Error in fees approval:",n)})}getFeesStatus(e){return!e.feeSection||e.feeSection.length===0?"pending":e.feeSection[e.feeSection.length-1].filled?"filled":"pending"}getFeesStatusClass(e){switch(e){case"filled":return"jp-badge jp-badge-success";default:return"jp-badge jp-badge-warning"}}static \u0275fac=function(a){return new(a||o)(b(xe),b(he),b(be),b(T),b(U),b(R))};static \u0275cmp=j({type:o,selectors:[["app-fees-approval"]],decls:6,vars:6,consts:[["class","jp-loading-section",4,"ngIf"],["class","jp-alert jp-alert-danger",4,"ngIf"],["class","card shadow-sm",4,"ngIf"],["class","jp-no-data-message",4,"ngIf"],["class","jp-modal-backdrop",3,"click",4,"ngIf"],[1,"jp-loading-section"],[1,"jp-loading"],["role","status",1,"spinner-border","text-primary"],[1,"visually-hidden"],[1,"jp-mt-2","jp-mb-0"],[1,"jp-alert","jp-alert-danger"],[1,"fa","fa-exclamation-triangle","jp-alert-icon"],[1,"jp-alert-content"],[1,"jp-alert-message"],[1,"card","shadow-sm"],[1,"table","table-striped","table-hover"],[4,"ngFor","ngForOf"],[1,"jp-text-muted"],[1,"jp-badge","jp-badge-info",2,"background-color","#17a2b8"],[1,"jp-badge","jp-badge-info"],[1,"jp-badge","jp-badge-secondary"],[1,"jp-badge","jp-badge-primary"],[3,"ngClass"],[1,"jp-action-buttons"],["title","Fill Fees Section",1,"jp-btn","jp-btn-sm","jp-btn-success",3,"click","disabled"],[1,"fa","fa-calculator","jp-me-1"],["class","jp-badge jp-badge-info","title","Submitted for approval workflow",4,"ngIf"],["title","Submitted for approval workflow",1,"jp-badge","jp-badge-info"],[1,"fa","fa-check-circle","jp-me-1"],[1,"jp-no-data-message"],[1,"fa","fa-inbox"],[1,"jp-modal-backdrop",3,"click"],[1,"jp-modal-container","jp-modal-lg",3,"click"],[1,"jp-modal-header","jp-bg-success"],[1,"fa","fa-calculator","jp-me-2"],["type","button",1,"jp-modal-header-close",3,"click","disabled"],[1,"fa","fa-times"],[1,"jp-modal-body","jp-modal-body-scrollable"],[4,"ngIf"],[1,"jp-modal-footer"],["type","button",1,"jp-btn","jp-btn-secondary",3,"click","disabled"],["type","button",1,"jp-btn","jp-btn-success",3,"click","disabled"],["class","spinner-border spinner-border-sm jp-me-2",4,"ngIf"],[1,"jp-section"],[1,"jp-section-header"],[1,"fa","fa-info-circle","me-2"],[1,"row","g-4"],[1,"col-md-6","jp-form-group"],[1,"jp-form-field-display"],[1,"jp-badge",3,"ngClass"],["class","jp-section mt-4",4,"ngIf"],["class","jp-section",4,"ngIf"],[1,"fa","fa-calculator","me-2"],["for","actualFee"],[1,"jp-required"],["type","number","id","actualFee","min","0","step","0.01","required","",1,"form-control",3,"ngModelChange","input","ngModel","disabled"],["for","percentageEligible"],["type","number","id","percentageEligible","min","0","step","0.01","required","",1,"form-control",3,"ngModelChange","input","ngModel","disabled"],[1,"form-check","mb-2"],["type","checkbox","id","hasArrear",1,"form-check-input",3,"ngModelChange","change","ngModel","disabled"],["for","hasArrear",1,"form-check-label"],["class","row gx-2",4,"ngIf"],["for","eligibleAmount"],["type","number","id","eligibleAmount","readonly","",1,"jp-form-control","jp-bg-light",3,"ngModelChange","ngModel","disabled"],[1,"jp-form-hint"],["for","amountToBePaid"],["type","number","id","amountToBePaid","readonly","","required","",1,"jp-form-control","jp-bg-light",3,"ngModelChange","ngModel","disabled"],["for","otherAmount"],["type","number","id","otherAmount","min","0","step","0.01",1,"form-control",3,"ngModelChange","ngModel","disabled"],["for","totalAmount"],["type","number","id","totalAmount","readonly","","required","",1,"jp-form-control","jp-bg-light","jp-font-weight-bold",2,"font-size","1.1rem",3,"ngModelChange","ngModel","disabled"],[1,"jp-section","mt-4"],[1,"fa","fa-history","me-2"],["class","col-md-12 jp-form-group",4,"ngIf"],[1,"col-md-12","jp-form-group"],[1,"mt-2","text-primary"],["type","button",1,"jp-btn","jp-btn-sm","jp-btn-primary",3,"click"],[1,"fa","fa-download","me-1"],[1,"fa","fa-file-pdf-o","me-2"],["class","jp-form-group",4,"ngIf"],["role","status",1,"spinner-border","spinner-border-sm","text-primary"],[1,"jp-ms-2"],[1,"jp-form-group"],["type","button","title","Preview Mark Sheet",1,"jp-btn","jp-btn-sm","jp-btn-primary","jp-me-2",3,"click"],[1,"fa","fa-eye","jp-me-1"],["type","button","title","Download Mark Sheet",1,"jp-btn","jp-btn-sm","jp-btn-success",3,"click"],[1,"fa","fa-download","jp-me-1"],[1,"jp-text-muted","jp-mb-0"],[1,"row","gx-2"],[1,"col-6","mb-0"],["for","arrearCount"],["type","number","id","arrearCount","min","1","step","1","placeholder","Count",1,"form-control",3,"ngModelChange","input","ngModel","disabled"],["for","arrearAmount"],["type","number","id","arrearAmount","readonly","","disabled","",1,"jp-form-control","jp-bg-light",3,"ngModelChange","ngModel"],[1,"spinner-border","spinner-border-sm","jp-me-2"],[1,"jp-modal-container","jp-modal-xl",3,"click"],[1,"jp-modal-header"],[1,"fa","fa-file-image-o","me-2"],["type","button",1,"jp-modal-header-close",3,"click"],["class","text-center py-5",4,"ngIf"],["class","text-center",4,"ngIf"],[1,"text-center","py-5"],[1,"mt-3","text-muted"],[1,"text-center"],["alt","Semester Mark Sheet",1,"img-fluid",2,"max-width","100%","height","auto","border","1p
1x solid #ddd","border-radius","8px",3,"src"],[1,"mt-3"],["target","_blank",1,"jp-btn","jp-btn-primary","jp-me-2",3,"href"],[1,"fa","fa-external-link","me-1"],["type","button",1,"jp-btn","jp-btn-success",3,"click"],[1,"fa","fa-exclamation-triangle","text-warning",2,"font-size","3rem"]],template:function(a,n){a&1&&g(0,Ze,7,0,"div",0)(1,$e,5,1,"div",1)(2,it,26,1,"div",2)(3,nt,4,0,"div",3)(4,vt,16,6,"div",4)(5,gt,12,3,"div",4),a&2&&(s("ngIf",n.loading),l(),s("ngIf",n.error&&!n.loading),l(),s("ngIf",n.showTable&&!n.loading&&n.concessionForms.length>0),l(),s("ngIf",n.showTable&&!n.loading&&n.concessionForms.length===0),l(),s("ngIf",n.showFeesModal),l(),s("ngIf",n.showPreviewModal))},dependencies:[k,M,I,O,de,se,B,me,pe,L,Y]})}return o})();function xt(o,p){if(o&1){let e=h();t(0,"div",12),f("click",function(){v(e);let n=d(2);return u(n.switchTab("hod"))}),r(1," HOD Approval "),i()}if(o&2){let e=d(2);E("jp-tab-active-compact",e.activeTab==="hod")}}function bt(o,p){if(o&1){let e=h();t(0,"div",12),f("click",function(){v(e);let n=d(2);return u(n.switchTab("fees"))}),r(1," Fees Section "),i()}if(o&2){let e=d(2);E("jp-tab-active-compact",e.activeTab==="fees")}}function Ft(o,p){if(o&1){let e=h();t(0,"div",12),f("click",function(){v(e);let n=d(2);return u(n.switchTab("fees-approved"))}),r(1," Fees Approved Forms "),i()}if(o&2){let e=d(2);E("jp-tab-active-compact",e.activeTab==="fees-approved")}}function St(o,p){if(o&1){let e=h();t(0,"div",12),f("click",function(){v(e);let n=d(2);return u(n.switchTab("approved-forms"))}),r(1," Approved Forms "),i()}if(o&2){let e=d(2);E("jp-tab-active-compact",e.activeTab==="approved-forms")}}function Ct(o,p){if(o&1&&(t(0,"div",8)(1,"div",9),g(2,xt,2,2,"div",10)(3,bt,2,2,"div",10)(4,Ft,2,2,"div",10)(5,St,2,2,"div",10),i(),c(6,"div",11),i()),o&2){let e=d();l(2),s("ngIf",e.isHOD),l(),s("ngIf",e.isFeesIncharge),l(),s("ngIf",e.isFeesIncharge),l(),s("ngIf",e.isFeesIncharge)}}function wt(o,p){o&1&&(t(0,"div",13)(1,"div",14)(2,"div",15)(3,"span",16),r(4,"Loading..."),i()(),t(5,"p",17),r(6,"Loading user information..."),i()()())}function yt(o,p){o&1&&(t(0,"div",18),c(1,"router-outlet"),i())}function jt(o,p){o&1&&(t(0,"div",19),c(1,"i",20),t(2,"div",21)(3,"p",22)(4,"strong"),r(5,"Access Denied:"),i(),r(6," You do not have permission to access this page. "),i()()())}var je=(()=>{class o{userService;router;route;currentUser={};currentUsertype="";roles=[];isHOD=!1;isFeesIncharge=!1;activeTab="";showTabs=!1;loading=!0;constructor(e,a,n){this.userService=e,this.router=a,this.route=n}ngOnInit(){return S(this,null,function*(){try{this.currentUser=(yield this.userService.getCurrentUser())||{},this.currentUsertype=this.currentUser.userType||"",this.roles=this.currentUser.roles||[],this.isHOD=this.currentUsertype==="HOD",this.isFeesIncharge=this.roles.includes("FEESINCHARGE"),this.isHOD||this.isFeesIncharge?(this.showTabs=!0,this.isHOD?(this.activeTab="hod",this.router.navigate(["hod"],{relativeTo:this.route})):this.isFeesIncharge&&(this.activeTab="fees",this.router.navigate(["fees"],{relativeTo:this.route}))):console.error("User does not have permission to access this page"),this.loading=!1}catch(e){console.error("Error fetching current user:",e),this.loading=!1}})}switchTab(e){this.activeTab=e,this.router.navigate([e],{relativeTo:this.route})}static \u0275fac=function(a){return new(a||o)(b(le),b(ae),b(oe))};static \u0275cmp=j({type:o,selectors:[["app-concession-formapprovalparent"]],decls:9,vars:4,consts:[[2,"padding","16px 20px 0 20px","margin-bottom","0"],[2,"display","flex","align-items","center","gap","8px","margin-bottom","12px"],[1,"fa","fa-bars",2,"font-size","18px","color","#1f2937","font-weight","bold"],[2,"margin","0","font-size","20px","font-weight","600","color","#1f2937"],["style","position: relative;",4,"ngIf"],["class","jp-loading-section",4,"ngIf"],["class","jp-tab-content",4,"ngIf"],["class","jp-alert jp-alert-warning",4,"ngIf"],[2,"position","relative"],[2,"display","flex","gap","0","margin-bottom","0"],["class","jp-tab-item-compact",3,"jp-tab-active-compact","click",4,"ngIf"],[2,"height","1px","background","white","width","100%","position","absolute","bottom","0","left","0"],[1,"jp-tab-item-compact",3,"click"],[1,"jp-loading-section"],[1,"jp-loading"],["role","status",1,"spinner-border","text-primary"],[1,"visually-hidden"],[1,"jp-mt-2","jp-mb-0"],[1,"jp-tab-content"],[1,"jp-alert","jp-alert-warning"],[1,"fa","fa-exclamation-triangle","jp-alert-icon"],[1,"jp-alert-content"],[1,"jp-alert-message"]],template:function(a,n){a&1&&(t(0,"div",0)(1,"div",1),c(2,"i",2),t(3,"h2",3),r(4,"Concession Form Approval"),i()(),g(5,Ct,7,4,"div",4),i(),g(6,wt,7,0,"div",5)(7,yt,2,0,"div",6)(8,jt,7,0,"div",7)),a&2&&(l(5),s("ngIf",!n.loading&&n.showTabs),l(),s("ngIf",n.loading),l(
1),s("ngIf",!n.loading&&n.showTabs),l(),s("ngIf",!n.loading&&!n.showTabs))},dependencies:[I,J],styles:['.jp-tab-item-compact[_ngcontent-%COMP%]{padding:10px 20px;cursor:pointer;font-size:14px;font-weight:500;color:#6b7280;transition:all .2s;border-radius:8px 8px 0 0;background:transparent;position:relative;margin-right:4px;display:inline-block}.jp-tab-item-compact[_ngcontent-%COMP%]:hover{color:#3b82f6}.jp-tab-active-compact[_ngcontent-%COMP%]{background:#fff!important;color:#3b82f6!important;font-weight:600}.jp-tab-active-compact[_ngcontent-%COMP%]:after{content:"";position:absolute;bottom:0;left:0;right:0;height:3px;background:#3b82f6;border-radius:2px 2px 0 0}']})}return o})();var Et=()=>({dateInputFormat:"YYYY-MM-DD",containerClass:"theme-default",showWeekNumbers:!1}),At=(o,p,e)=>({"jp-badge-info":o,"jp-badge-success":p,"jp-badge-warning":e});function It(o,p){o&1&&(t(0,"div",10)(1,"div",11)(2,"div",12)(3,"span",13),r(4,"Loading..."),i()(),t(5,"p",14),r(6,"Loading approved forms..."),i()()())}function kt(o,p){if(o&1&&(t(0,"div",15),c(1,"i",16),t(2,"div",17)(3,"p",18),r(4),i()()()),o&2){let e=d();l(4),m(e.error)}}function Mt(o,p){if(o&1&&(G(0),t(1,"td"),r(2),i(),z()),o&2){let e=p.ngIf,a=d(3);l(2),m(a.formatDate(e.filledOn))}}function Tt(o,p){o&1&&(G(0),t(1,"td",33),r(2,"-"),i(),z())}function Vt(o,p){if(o&1){let e=h();t(0,"tr")(1,"td"),r(2),i(),t(3,"td")(4,"strong"),r(5),i()(),t(6,"td")(7,"span",25),r(8),i()(),t(9,"td")(10,"span",26),r(11),i()(),t(12,"td")(13,"span",27),r(14),i()(),t(15,"td")(16,"span",28),r(17),i()(),t(18,"td")(19,"button",29),f("click",function(){let n=v(e).$implicit,_=d(2);return u(_.openViewModal(n))}),c(20,"i",30),r(21," View "),i()(),g(22,Mt,3,1,"ng-container",31)(23,Tt,3,0,"ng-container",31),t(24,"td")(25,"span",32),r(26," FEES APPROVED "),i()()()}if(o&2){let e=p.$implicit,a=p.index,n=d(2);l(2),m(a+1),l(3),m((e==null||e.views==null?null:e.views.name)||"-"),l(3),m((e==null||e.views==null?null:e.views.regNo)||"-"),l(3),x(" ",(e==null||e.views==null?null:e.views.departmentName)||"-"," "),l(3),m((e==null||e.views==null?null:e.views.batch)||"-"),l(3),m((e==null?null:e.applyingSemester)||(e==null||e.formData==null?null:e.formData.applyingSemester)||"-"),l(5),s("ngIf",n.getLatestFeeDetails(e)),l(),s("ngIf",!n.getLatestFeeDetails(e))}}function Pt(o,p){if(o&1){let e=h();t(0,"div",19)(1,"table",20)(2,"thead")(3,"tr")(4,"th"),r(5,"#"),i(),t(6,"th"),r(7,"Student Name"),i(),t(8,"th"),r(9,"Register No"),i(),t(10,"th"),r(11,"Department"),i(),t(12,"th"),r(13,"Batch"),i(),t(14,"th"),r(15,"Semester"),i(),t(16,"th"),r(17,"Actions"),i(),t(18,"th"),r(19,"Fees Approved On"),i(),t(20,"th"),r(21,"Status"),i()()(),t(22,"tbody"),g(23,Vt,27,8,"tr",21),i()(),t(24,"div",22)(25,"button",23),f("click",function(){v(e);let n=d();return u(n.paginate("prev"))}),r(26," \xAB Prev "),i(),t(27,"button",24),f("click",function(){v(e);let n=d();return u(n.paginate("next"))}),r(28," Next \xBB "),i()()()}if(o&2){let e=d();l(23),s("ngForOf",e.approvedForms),l(2),s("disabled",e.isValueOne("prev")),l(2),s("disabled",e.isValueOne("next"))}}function Dt(o,p){o&1&&(t(0,"p"),r(1,"No approved concession forms found."),i())}function Nt(o,p){o&1&&(t(0,"p"),r(1,"No approved concession forms found for the selected date."),i())}function Ut(o,p){if(o&1&&(t(0,"div",34),c(1,"i",35),g(2,Dt,2,0,"p",31)(3,Nt,2,0,"p",31),i()),o&2){let e=d();l(2),s("ngIf",!e.selectedDate),l(),s("ngIf",e.selectedDate)}}function Ot(o,p){if(o&1){let e=h();t(0,"div",58)(1,"label"),r(2,"Ex-Student Proof"),i(),t(3,"div",59)(4,"button",60),f("click",function(){v(e);let n=d(4);return u(n.downloadMarkSheet(n.selectedForm.exStudentProof))}),c(5,"i",61),r(6," Download Proof "),i()()()}}function Bt(o,p){if(o&1&&(t(0,"div",55)(1,"div",47)(2,"h4"),c(3,"i",56),r(4,"Ex-Student Information"),i()(),t(5,"div",49)(6,"div",50)(7,"label"),r(8,"Previous Institution"),i(),t(9,"div",51),r(10),i()(),t(11,"div",50)(12,"label"),r(13,"Previous Batch"),i(),t(14,"div",51),r(15),i()(),t(16,"div",50)(17,"label"),r(18,"Previous Reg. No"),i(),t(19,"div",51),r(20),i()(),t(21,"div",50)(22,"label"),r(23,"Previous Department"),i(),t(24,"div",51),r(25),i()(),g(26,Ot,7,0,"div",57),i()()),o&2){let e=d(3);l(10),m(e.selectedForm.exStudentInstitution||"-"),l(5),m(e.selectedForm.exStudentBatch||"-"),l(5),m(e.selectedForm.exStudentRegNo||"-"),l(5),m((e.selectedForm.views==null?null:e.selectedForm.views.exStudentDeptName)||"-"),l(),s("ngIf",e.selectedForm.exStudentProof)}}function Lt(o,p){if(o&1&&(t(0,"span"),r(1),A(2,"number"),i()),o&2){let e=d().ngIf;l(),ee(" ",e.arrearCount," (\u20B9",V(2,2,e.arrear,"1.2-2"),") ")}}function Rt(o,p){if(o&1&&(t(0,"span"),r(1),A(2,"number"),i()),o&2){let e=d().ngIf;l(),x(" \u20B9",V(2,1,e.arrear,"1.2-2")," ")}}function Wt(o,p){if(o&1&&(t(0,"div",46)(1,"div",47)(2,"h4"),c(3,"i",62),r(4,"Approved Fee Details"),i()(),t(5,"div",49)(6,"div",50)(7,"label"),r(8,"Actual Fee"),i(),t(9,"div",51),r(10),A(11,"number"),i()(),t(12,"div",50)(13,"label"),r(14,"Percentage Eligible"),i(),t(15,"div",51),r(16),i()(),t(17,"div",50)(18,"label"),r(19,"Eligible Amou
1nt"),i(),t(20,"div",51),r(21),A(22,"number"),i()(),t(23,"div",50)(24,"label"),r(25,"Arrear Amount"),i(),t(26,"div",51),g(27,Lt,3,5,"span",31)(28,Rt,3,4,"span",31),i()(),t(29,"div",50)(30,"label"),r(31,"Other Amount"),i(),t(32,"div",51),r(33),A(34,"number"),i()(),t(35,"div",50)(36,"label")(37,"strong"),r(38,"Total Amount to Pay"),i()(),t(39,"div",63)(40,"strong"),r(41),A(42,"number"),i()()(),t(43,"div",50)(44,"label"),r(45,"Fees Approved On"),i(),t(46,"div",51),r(47),i()()()()),o&2){let e=p.ngIf,a=d(3);l(10),x("\u20B9",V(11,10,e.actualFee,"1.2-2"),""),l(6),x("",e.percentageEligible,"%"),l(5),x("\u20B9",V(22,13,e.eligibleAmount,"1.2-2"),""),l(5),E("text-danger",e.arrear>0),l(),s("ngIf",e.arrearCount&&e.arrear>0),l(),s("ngIf",!e.arrearCount),l(5),x("\u20B9",V(34,16,e.otherAmount,"1.2-2"),""),l(8),x("\u20B9",V(42,19,e.totalAmount,"1.2-2"),""),l(6),x(" ",a.formatDate(e.filledOn)," ")}}function Gt(o,p){if(o&1&&(t(0,"div",45)(1,"div",46)(2,"div",47)(3,"h4"),c(4,"i",48),r(5,"Student Information"),i()(),t(6,"div",49)(7,"div",50)(8,"label"),r(9,"Name"),i(),t(10,"div",51),r(11),i()(),t(12,"div",50)(13,"label"),r(14,"Reg. No"),i(),t(15,"div",51),r(16),i()(),t(17,"div",50)(18,"label"),r(19,"Department"),i(),t(20,"div",51),r(21),i()(),t(22,"div",50)(23,"label"),r(24,"Batch"),i(),t(25,"div",51)(26,"span",27),r(27),i()()(),t(28,"div",50)(29,"label"),r(30,"Applying Semester"),i(),t(31,"div",51)(32,"span",28),r(33),i()()(),t(34,"div",50)(35,"label"),r(36,"Requested On"),i(),t(37,"div",51),r(38),i()(),t(39,"div",50)(40,"label"),r(41,"Category"),i(),t(42,"div",51)(43,"span",52),r(44),i()()()()(),g(45,Bt,27,5,"div",53)(46,Wt,48,22,"div",54),i()),o&2){let e=d(2);l(11),m((e.selectedForm.views==null?null:e.selectedForm.views.name)||"-"),l(5),m((e.selectedForm.views==null?null:e.selectedForm.views.regNo)||"-"),l(5),m((e.selectedForm.views==null?null:e.selectedForm.views.departmentName)||"-"),l(6),m((e.selectedForm.views==null?null:e.selectedForm.views.batch)||"-"),l(6),m(e.selectedForm.applyingSemester||(e.selectedForm.formData==null?null:e.selectedForm.formData.applyingSemester)||"-"),l(5),m(e.formatDate(e.selectedForm.createdOn)),l(5),s("ngClass",N(10,At,e.selectedForm.category==="UG",e.selectedForm.category==="PG",e.selectedForm.category==="Ph.D.")),l(),m(e.selectedForm.category||"UG"),l(),s("ngIf",e.selectedForm.category==="PG"),l(),s("ngIf",e.getLatestFeeDetails(e.selectedForm))}}function zt(o,p){if(o&1){let e=h();t(0,"div",36),f("click",function(){v(e);let n=d();return u(n.closeViewModal())}),t(1,"div",37),f("click",function(n){return v(e),u(n.stopPropagation())}),t(2,"div",38)(3,"h3"),c(4,"i",39),r(5,"Fees Concession Details "),i(),t(6,"button",40),f("click",function(){v(e);let n=d();return u(n.closeViewModal())}),c(7,"i",41),i()(),g(8,Gt,47,14,"div",42),t(9,"div",43)(10,"button",44),f("click",function(){v(e);let n=d();return u(n.closeViewModal())}),r(11,"Close"),i()()()()}if(o&2){let e=d();l(8),s("ngIf",e.selectedForm)}}var Ee=(()=>{class o{concessionFormService;toastr;fileUploadService;approvedForms=[];allForms=[];loading=!1;error="";selectedDate;showViewModal=!1;selectedForm=null;ncount=1;pageSize=15;totalItems=0;constructor(e,a,n){this.concessionFormService=e,this.toastr=a,this.fileUploadService=n}ngOnInit(){this.loadApprovedForms()}loadApprovedForms(){this.loading=!0,this.error="",this.selectedDate=null;let e=(this.ncount-1)*this.pageSize;this.concessionFormService.getCurrentStudentConcessionForms(!0,!0,e,this.pageSize).then(a=>{if(this.loading=!1,console.log("Approved forms received:",a),Array.isArray(a)){if(this.allForms=a,this.approvedForms=[...this.allForms],a.length===0&&this.ncount>1){this.ncount--,this.loadApprovedForms();return}}else this.allForms=[],this.approvedForms=[]}).catch(a=>{this.loading=!1,this.error="Failed to load approved forms",console.error("Error loading approved forms:",a),this.toastr.error(this.error,"Error")})}paginate(e){e==="prev"&&this.ncount>1?(this.ncount--,this.loadApprovedForms()):e==="next"&&this.approvedForms.length>0&&(this.ncount++,this.loadApprovedForms())}isValueOne(e){return e==="prev"?this.ncount===1:e==="next"?this.approvedForms.length<this.pageSize:!1}onDateFilterChange(e){if(!e){this.approvedForms=[...this.allForms];return}let a=e.getFullYear(),n=e.getMonth(),_=e.getDate();this.approvedForms=this.allForms.filter(F=>{let W=this.getLatestFeeDetails(F);if(!W||!W.filledOn)return!1;let X=new Date(W.filledOn);return X.getFullYear()===a&&X.getMonth()===n&&X.getDate()===_})}openViewModal(e){this.selectedForm=e,this.showViewModal=!0}
1closeViewModal(){this.showViewModal=!1,this.selectedForm=null}formatDate(e){if(!e)return"-";try{return new Date(e).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric"})}catch{return e}}getStatusClass(e){switch(e){case"APPROVED":return"jp-badge jp-badge-success";case"REJECTED":return"jp-badge jp-badge-danger";case"PENDING":return"jp-badge jp-badge-warning";default:return"jp-badge jp-badge-secondary"}}getLatestFeeDetails(e){return!e.feeSection||e.feeSection.length===0?null:e.feeSection[e.feeSection.length-1]}downloadMarkSheet(e){return S(this,null,function*(){if(!e||!e.fileKey||!e.versionId){this.toastr.error("Mark sheet information not available","Error");return}try{let a=yield this.fileUploadService.getPreSignedUrl(e.versionId,e.fileKey);if(a){let n=document.createElement("a");n.href=a,n.download=e.fileKey||"marksheet",n.target="_blank",document.body.appendChild(n),n.click(),document.body.removeChild(n),this.toastr.success("Download started","Success")}else this.toastr.error("Failed to generate download URL","Error")}catch(a){console.error("Error downloading mark sheet:",a),this.toastr.error("Failed to download mark sheet","Error")}})}static \u0275fac=function(a){return new(a||o)(b(T),b(U),b(R))};static \u0275cmp=j({type:o,selectors:[["app-fees-approved-forms"]],decls:12,vars:8,consts:[[1,"jp-container"],[1,"jp-mb-3","d-flex","justify-content-between","align-items-center"],[1,"d-flex","align-items-center"],["for","dateFilter",1,"me-2","mb-0"],["type","text","id","dateFilter","bsDatepicker","","placeholder","Select Date",1,"form-control",2,"width","200px",3,"ngModelChange","bsValueChange","bsConfig","ngModel"],["class","jp-loading-section",4,"ngIf"],["class","jp-alert jp-alert-danger",4,"ngIf"],["class","card shadow-sm",4,"ngIf"],["class","jp-no-data-message",4,"ngIf"],["class","jp-modal-backdrop",3,"click",4,"ngIf"],[1,"jp-loading-section"],[1,"jp-loading"],["role","status",1,"spinner-border","text-primary"],[1,"visually-hidden"],[1,"jp-mt-2","jp-mb-0"],[1,"jp-alert","jp-alert-danger"],[1,"fa","fa-exclamation-triangle","jp-alert-icon"],[1,"jp-alert-content"],[1,"jp-alert-message"],[1,"card","shadow-sm"],[1,"table","table-striped","table-hover"],[4,"ngFor","ngForOf"],[1,"d-flex","justify-content-end","mt-3"],["type","button",1,"jp-btn","jp-btn-primary","me-2",3,"click","disabled"],["type","button",1,"jp-btn","jp-btn-secondary",3,"click","disabled"],[1,"jp-text-muted"],[1,"jp-badge","jp-badge-info",2,"background-color","#17a2b8"],[1,"jp-badge","jp-badge-secondary"],[1,"jp-badge","jp-badge-primary"],["title","View Details",1,"jp-btn","jp-btn-sm","jp-btn-primary",3,"click"],[1,"fa","fa-eye"],[4,"ngIf"],[1,"jp-badge","jp-badge-success"],[1,"text-center","text-muted"],[1,"jp-no-data-message"],[1,"fa","fa-check-circle"],[1,"jp-modal-backdrop",3,"click"],[1,"jp-modal-container","jp-modal-lg",3,"click"],[1,"jp-modal-header","jp-bg-primary"],[1,"fa","fa-eye","jp-me-2"],["type","button",1,"jp-modal-header-close",3,"click"],[1,"fa","fa-times"],["class","jp-modal-body jp-modal-body-scrollable",4,"ngIf"],[1,"jp-modal-footer"],["type","button",1,"jp-btn","jp-btn-secondary",3,"click"],[1,"jp-modal-body","jp-modal-body-scrollable"],[1,"jp-section"],[1,"jp-section-header"],[1,"fa","fa-user-circle-o","me-2"],[1,"row","g-4"],[1,"col-md-6","jp-form-group"],[1,"jp-form-field-display"],[1,"jp-badge",3,"ngClass"],["class","jp-section mt-4",4,"ngIf"],["class","jp-section",4,"ngIf"],[1,"jp-section","mt-4"],[1,"fa","fa-history","me-2"],["class","col-md-12 jp-form-group",4,"ngIf"],[1,"col-md-12","jp-form-group"],[1,"mt-2","text-primary"],["type","button",1,"jp-btn","jp-btn-sm","jp-btn-primary",3,"click"],[1,"fa","fa-download","me-1"],[1,"fa","fa-money","me-2"],[1,"jp-form-field-display","jp-bg-light"]],template:function(a,n){a&1&&(t(0,"div",0)(1,"div",1)(2,"div",2)(3,"label",3)(4,"strong"),r(5,"Filter by Date:"),i()(),t(6,"input",4),y("ngModelChange",function(F){return w(n.selectedDate,F)||(n.selectedDate=F),F}),f("bsValueChange",function(F){return n.onDateFilterChange(F)}),i()()(),g(7,It,7,0,"div",5)(8,kt,5,1,"div",6)(9,Pt,29,3,"div",7)(10,Ut,4,2,"div",8)(11,zt,12,1,"div",9),i()),a&2&&(l(6),s("bsConfig",te(7,Et)),C("ngModel",n.selectedDate),l(),s("ngIf",n.loading),l(
1),s("ngIf",n.error&&!n.loading),l(),s("ngIf",!n.loading&&n.approvedForms.length>0),l(),s("ngIf",!n.loading&&n.approvedForms.length===0&&!n.error),l(),s("ngIf",n.showViewModal))},dependencies:[k,M,I,O,B,L,_e,fe,ie]})}return o})();function Kt(o,p){o&1&&(t(0,"div",5)(1,"div",6)(2,"div",7)(3,"span",8),r(4,"Loading..."),i()(),t(5,"p",9),r(6,"Loading approved forms..."),i()()())}function Ht(o,p){if(o&1&&(t(0,"div",10),c(1,"i",11),t(2,"div",12)(3,"p",13),r(4),i()()()),o&2){let e=d();l(4),m(e.error)}}function qt(o,p){if(o&1&&(t(0,"tr")(1,"td"),r(2),i(),t(3,"td")(4,"strong"),r(5),i()(),t(6,"td")(7,"span",20),r(8),i()(),t(9,"td")(10,"span",21),r(11),i()(),t(12,"td")(13,"span",22),r(14),i()(),t(15,"td")(16,"span",23),r(17),i()(),t(18,"td"),r(19),i(),t(20,"td")(21,"span",24),r(22),i()()()),o&2){let e=p.$implicit,a=p.index,n=d(2);l(2),m(a+1),l(3),m((e==null||e.views==null?null:e.views.name)||"-"),l(3),m((e==null||e.views==null?null:e.views.regNo)||"-"),l(3),x(" ",(e==null||e.views==null?null:e.views.departmentName)||"-"," "),l(3),m((e==null||e.views==null?null:e.views.batch)||"-"),l(3),m((e==null||e.formData==null?null:e.formData.applyingSemester)||"-"),l(2),m(n.formatDate(n.getLastApprovalDate(e))),l(2),s("ngClass",n.getStatusClass(e.status)),l(),x(" ",e==null?null:e.submissionStatus," ")}}function Yt(o,p){if(o&1){let e=h();t(0,"div",14)(1,"table",15)(2,"thead")(3,"tr")(4,"th"),r(5,"#"),i(),t(6,"th"),r(7,"Student Name"),i(),t(8,"th"),r(9,"Register No"),i(),t(10,"th"),r(11,"Department"),i(),t(12,"th"),r(13,"Batch"),i(),t(14,"th"),r(15,"Semester"),i(),t(16,"th"),r(17,"Approved Date"),i(),t(18,"th"),r(19,"Status"),i()()(),t(20,"tbody"),g(21,qt,23,9,"tr",16),i()(),t(22,"div",17)(23,"button",18),f("click",function(){v(e);let n=d();return u(n.paginate("prev"))}),r(24," \xAB Prev "),i(),t(25,"button",19),f("click",function(){v(e);let n=d();return u(n.paginate("next"))}),r(26," Next \xBB "),i()()()}if(o&2){let e=d();l(21),s("ngForOf",e.approvedForms),l(2),s("disabled",e.isValueOne("prev")),l(2),s("disabled",e.isValueOne("next"))}}function Jt(o,p){o&1&&(t(0,"div",25),c(1,"i",26),t(2,"p"),r(3,"No approved concession forms found."),i()())}var Ae=(()=>{class o{concessionFormService;approvedForms=[];loading=!1;error="";allForms=[];ncount=1;pageSize=15;constructor(e){this.concessionFormService=e}ngOnInit(){this.getApprovedForms()}getApprovedForms(){this.loading=!0,this.concessionFormService.getApprovedConcessionRequestForms().then(e=>{this.allForms=e,this.allForms.sort((a,n)=>{let _=this.getLastApprovalDateTimestamp(a);return this.getLastApprovalDateTimestamp(n)-_}),this.updatePageData(),this.loading=!1}).catch(e=>{this.error=e,this.loading=!1})}updatePageData(){let e=(this.ncount-1)*this.pageSize,a=e+this.pageSize;this.approvedForms=this.allForms.slice(e,a)}paginate(e){if(e==="prev"&&this.ncount>1)this.ncount--,this.updatePageData();else if(e==="next"){let a=Math.ceil(this.allForms.length/this.pageSize);this.ncount<a&&(this.ncount++,this.updatePageData())}}isValueOne(e){if(e==="prev")return this.ncount===1;if(e==="next"){let a=Math.ceil(this.allForms.length/this.pageSize);return this.ncount>=a||this.allForms.length===0}return!1}getLastApprovalDateTimestamp(e){if(e.approvalLevels&&Array.isArray(e.approvalLevels)&&e.approvalLevels.length>0){let a=e.approvalLevels[e.approvalLevels.length-1];return new Date(a.actionDate).getTime()}return new Date(e.lastModifiedDate||0).getTime()}getLastApprovalDate(e){return e.approvalLevels&&Array.isArray(e.approvalLevels)&&e.approvalLevels.length>0?e.approvalLevels[e.approvalLevels.length-1].actionDate:e.lastModifiedDate}formatDate(e){if(!e)return"-";try{return new Date(e).toLocaleDateString("en-US",{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return e}}getStatusClass(e){switch(e){case"APPROVED":return"jp-badge jp-badge-success";case"REJECTED":return"jp-badge jp-badge-danger";case"PENDING":return"jp-badge jp-badge-warning";default:return"jp-badge jp-badge-secondary"}}static \u0275fac=function(a){return new(a||o)(b(T))};static \u0275cmp=j({type:o,selectors:[["app-approved-forms"]],decls:5,vars:4,consts:[[1,"jp-container"],["class","jp-loading-section",4,"ngIf"],["class","jp-alert jp-alert-danger",4,"ngIf"],["class","card shadow-sm",4,"ngIf"],["class","jp-no-data-message",4,"ngIf"],[1,"jp-loading-section"],[1,"jp-loading"],["role","status",1,"spinner-border","text-primary"],[1,"visually-hidden"],[1,"jp-mt-2","jp-mb-0"],[1,"jp-alert","jp-alert-danger"],[1,"fa","fa-exclamation-triangle","jp-alert-icon"],[1,"jp-alert-content"],[1,"jp-alert-message"],[1,"card","shadow-sm"],[1,"table","table-striped","table-hover"],[4,"ngFor","ngForOf"],[1,"d-flex","justify-content-end","mt-3"],["type","button",1,"jp-btn","jp-btn-primary","me-2",3,"click","disabled"],["type","button",1,"jp-btn","jp-btn-secondary",3,"click","disabled"],[1,"jp-text-muted"],[1,"jp-badge","jp-badge-info",2,"background-color","#17a2b8"],[1,"jp-badge","jp-badge-secondary"],[1,"jp-badge","jp-badge-primary"],[3,"ngClass"],[1,"jp-no-data-message"],[1,"fa","fa-check-circle"]],template:function(a,n){a&1&&(t(0,"div",0),g(1,Kt,7,0,"div",1)(2,Ht,5,1,"div",2)(3,Yt,27,3,"div",3)(4,Jt,4,0,"div",4),i()),a&2&&(l(),s("ngIf",n.loading),l(
1),s("ngIf",n.error&&!n.loading),l(),s("ngIf",!n.loading&&n.approvedForms.length>0),l(),s("ngIf",!n.loading&&n.approvedForms.length===0&&!n.error))},dependencies:[k,M,I]})}return o})();var Qt=[{path:"",redirectTo:"approval",pathMatch:"full"},{path:"approval",component:je,children:[{path:"",redirectTo:"hod",pathMatch:"full"},{path:"hod",component:we},{path:"fees",component:ye},{path:"fees-approved",component:Ee},{path:"approved-forms",component:Ae}]}],Ie=(()=>{class o{static \u0275fac=function(a){return new(a||o)};static \u0275mod=H({type:o});static \u0275inj=K({imports:[Z.forChild(Qt),Z]})}return o})();var ke=(()=>{class o{title="StdConcessionFeesForm";static \u0275fac=function(a){return new(a||o)};static \u0275cmp=j({type:o,selectors:[["app-root"]],decls:1,vars:0,template:function(a,n){a&1&&c(0,"router-outlet")},dependencies:[J]})}return o})();var Ui=(()=>{class o{static \u0275fac=function(a){return new(a||o)};static \u0275mod=H({type:o,bootstrap:[ke]});static \u0275inj=K({imports:[ne,Ie,ce,ve,re,ue,ge.forRoot()]})}return o})();export{Ui as stdConcessionFeesFormModule};
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.