1import{d as ot,n as ut}from"./chunk-2JOJI3CW.js";import{a as St}from"./chunk-NAFFBNYE.js";import{b as rt,c as lt,d as ct,e as pt,f as mt,g as _t,h as dt,i as gt}from"./chunk-NCZR56OU.js";import{a as st}from"./chunk-M4ZXF5IX.js";import{a as wt}from"./chunk-EZIBFA53.js";import{a as it}from"./chunk-X4BZEZH3.js";import"./chunk-FNGVDJRH.js";import{a as D,b as S,c as Pt}from"./chunk-R6CWSLPF.js";import{q as at}from"./chunk-IJVFLDKA.js";import"./chunk-LD22MPDX.js";import"./chunk-MLNB4KUV.js";import{$b as o,Ab as h,Ed as et,G as B,Hb as a,Id as nt,J as X,Jd as y,Lb as T,Pc as q,Rb as p,Sb as c,Tb as d,Ub as $,Vb as M,Xb as w,_b as b,ca as U,cb as C,f as V,gd as G,ha as R,hd as J,ib as s,id as K,jd as Q,kc as W,kd as Z,lc as u,mc as N,nc as P,ob as z,ra as x,rd as tt,sa as v,vb as j,vc as Y,wc as E}from"./chunk-UKFGVAZJ.js";import{a as O,b as A,f as F}from"./chunk-QWWW7GFA.js";var ht=F(St()),k=F(wt());var I=(()=>{class e{constructor(t){this.http=t,this.apiUrl=`${y.apiUrl}/v1/scan-results`,this.domainTicketsApiUrl=`${y.apiUrl}/v1/domain-tickets/`,this.searchApiUrl=`${y.apiUrl}/v1/scan-results/with-search`}getAllScanResults(t,n,i="all"){return this.http.get(`${this.apiUrl}?page=${t}&size=${n}&compliance=${i}`)}getAllScanResultsWithSearch(t,n,i="all",r=""){let _=`?page=${t}&size=${n}&compliance=${i}`;return r&&r.trim()!==""&&(_+=`&search=${encodeURIComponent(r.trim())}`),this.http.get(`${this.searchApiUrl}${_}`)}getDomainTickets(t,n,i){let r={domain_name:t,page:n,size:i};return this.http.post(this.domainTicketsApiUrl,r)}static{this.\u0275fac=function(n){return new(n||e)(R(et))}}static{this.\u0275prov=U({token:e,factory:e.\u0275fac,providedIn:"root"})}}return e})();var L=F(Pt());var H=()=>[20,50,100,200,500];function kt(e,l){e&1&&(p(0,"div",14)(1,"div",15),d(2,"div",16),c(),p(3,"p",17),u(4,"Loading data..."),c()())}function zt(e,l){if(e&1&&(p(0,"th"),u(1),c()),e&2){let t=l.$implicit;s(),P("",t," ")}}function Ot(e,l){if(e&1&&(p(0,"th"),u(1),c()),e&2){let t=o(3);s(),P("",t.allOrganizationsProps.rowActions.title," ")}}function At(e,l){if(e&1&&d(0,"span",36),e&2){let t=o().$implicit,n=o().$implicit;a("innerHTML",n[t],C)}}function $t(e,l){if(e&1&&d(0,"span",36),e&2){let t=o().$implicit,n=o().$implicit;a("innerHTML",n[t],C)}}function Mt(e,l){if(e&1&&d(0,"span",36),e&2){let t=o().$implicit,n=o().$implicit;a("innerHTML",n[t],C)}}function Nt(e,l){if(e&1&&d(0,"span",36),e&2){let t=o().$implicit,n=o().$implicit;a("innerHTML",n[t],C)}}function Et(e,l){if(e&1&&d(0,"span",36),e&2){let t=o().$implicit,n=o().$implicit;a("innerHTML",n[t],C)}}function Dt(e,l){if(e&1&&d(0,"span",36),e&2){let t=o().$implicit,n=o().$implicit;a("innerHTML",n[t],C)}}function It(e,l){if(e&1&&(p(0,"span"),u(1),c()),e&2){let t=o().$implicit,n=o().$implicit;s(),N(n[t])}}function Lt(e,l){if(e&1&&(p(0,"td"),$(1,33),h(2,At,1,1,"span",34)(3,$t,1,1,"span",34)(4,Mt,1,1,"span",34)(5,Nt,1,1,"span",34)(6,Et,1,1,"span",34)(7,Dt,1,1,"span",34)(8,It,2,1,"span",35),M(),c()),e&2){let t=l.$implicit;s(),a("ngSwitch",t),s(),a("ngSwitchCase","sslStatus"),s(),a("ngSwitchCase","privacyPolicy"),s(),a("ngSwitchCase","consentForm"),s(),a("ngSwitchCase","personalDataCollected"),s(),a("ngSwitchCase","paymentStatus"),s(),a("ngSwitchCase","complianceStatus")}}function Ft(e,l){if(e&1){let t=w();p(0,"button",38),b("click",function(i){let r=x(t).$implicit,_=o(2).$implicit;return v(r.onPress(i,_))}),d(1,"i"),u(2),c()}if(e&2){let t=l.$implicit;T(t.class),a("title",t.title),s(),T(t.icon),s(),P("",t.text," ")}}function Ht(e,l){if(e&1&&(p(0,"td"),h(1,Ft,3,6,"button",37),c()),e&2){let t=o(4);s(),a("ngForOf",t.allOrganizationsProps.rowActions.actions)}}function Vt(e,l){if(e&1&&(p(0,"tr"),h(1,Lt,9,7,"td",31)(2,Ht,2,1,"td",13),c()),e&2){let t=o(3);s(),a("ngForOf",t.allOrganizationsProps.columns),s(),a("ngIf",t.allOrganizationsProps.rowActions)}}function Bt(e,l){if(e&1){let t=w();p(0,"div",25)(1,"button",26),b("click",function(){x(t);let i=o(2);return v(i.downloadExcelAllDomains())}),d(2,"i",27),u(3," Download Excel "),c()(),p(4,"div",28)(5,"table",29)(6,"thead",30)(7,"tr"),h(8,zt,2,1,"th",31)(9,Ot,2,1,"th",13),c()(),p(10,"tbody"),h(11,Vt,3,2,"tr",3
11),c()(),p(12,"app-pagination",32),b("pageChange",function(i){x(t);let r=o(2);return v(r.goToTabPage(1,i))})("itemsPerPageChange",function(i){x(t);let r=o(2);return v(r.changeTabPageSize(1,i))}),c()()}if(e&2){let t=o(2);s(8),a("ngForOf",t.allOrganizationsProps.titles),s(),a("ngIf",t.allOrganizationsProps.rowActions),s(2),a("ngForOf",t.allOrganizationsProps.data),s(),a("totalRecords",t.allOrganizations.totalItems)("itemsPerPage",t.allOrganizations.pageSize)("itemsPerPageOptions",E(7,H))("currentPage",t.allOrganizations.currentPage)}}function Xt(e,l){if(e&1&&(p(0,"th"),u(1),c()),e&2){let t=l.$implicit;s(),P("",t," ")}}function Ut(e,l){if(e&1&&(p(0,"th"),u(1),c()),e&2){let t=o(3);s(),P("",t.compliantOrganizationsProps.rowActions.title," ")}}function Rt(e,l){if(e&1&&d(0,"span",36),e&2){let t=o().$implicit,n=o().$implicit;a("innerHTML",n[t],C)}}function jt(e,l){if(e&1&&d(0,"span",36),e&2){let t=o().$implicit,n=o().$implicit;a("innerHTML",n[t],C)}}function Wt(e,l){if(e&1&&d(0,"span",36),e&2){let t=o().$implicit,n=o().$implicit;a("innerHTML",n[t],C)}}function Yt(e,l){if(e&1&&d(0,"span",36),e&2){let t=o().$implicit,n=o().$implicit;a("innerHTML",n[t],C)}}function qt(e,l){if(e&1&&d(0,"span",36),e&2){let t=o().$implicit,n=o().$implicit;a("innerHTML",n[t],C)}}function Gt(e,l){if(e&1&&d(0,"span",36),e&2){let t=o().$implicit,n=o().$implicit;a("innerHTML",n[t],C)}}function Jt(e,l){if(e&1&&(p(0,"span"),u(1),c()),e&2){let t=o().$implicit,n=o().$implicit;s(),N(n[t])}}function Kt(e,l){if(e&1&&(p(0,"td"),$(1,33),h(2,Rt,1,1,"span",34)(3,jt,1,1,"span",34)(4,Wt,1,1,"span",34)(5,Yt,1,1,"span",34)(6,qt,1,1,"span",34)(7,Gt,1,1,"span",34)(8,Jt,2,1,"span",35),M(),c()),e&2){let t=l.$implicit;s(),a("ngSwitch",t),s(),a("ngSwitchCase","sslStatus"),s(),a("ngSwitchCase","privacyPolicy"),s(),a("ngSwitchCase","consentForm"),s(),a("ngSwitchCase","personalDataCollected"),s(),a("ngSwitchCase","paymentStatus"),s(),a("ngSwitchCase","complianceStatus")}}function Qt(e,l){if(e&1){let t=w();p(0,"button",38),b("click",function(i){let r=x(t).$implicit,_=o(2).$implicit;return v(r.onPress(i,_))}),d(1,"i"),u(2),c()}if(e&2){let t=l.$implicit;T(t.class),a("title",t.title),s(),T(t.icon),s(),P("",t.text," ")}}function Zt(e,l){if(e&1&&(p(0,"td"),h(1,Qt,3,6,"button",37),c()),e&2){let t=o(4);s(),a("ngForOf",t.compliantOrganizationsProps.rowActions.actions)}}function te(e,l){if(e&1&&(p(0,"tr"),h(1,Kt,9,7,"td",31)(2,Zt,2,1,"td",13),c()),e&2){let t=o(3);s(),a("ngForOf",t.compliantOrganizationsProps.columns),s(),a("ngIf",t.compliantOrganizationsProps.rowActions)}}function ee(e,l){if(e&1){let t=w();p(0,"div",25)(1,"button",26),b("click",function(){x(t);let i=o(2);return v(i.downloadExcelAllCompliedDomains())}),d(2,"i",27),u(3," Download Excel "),c()(),p(4,"div",28)(5,"table",29)(6,"thead",30)(7,"tr"),h(8,Xt,2,1,"th",31)(9,Ut,2,1,"th",13),c()(),p(10,"tbody"),h(11,te,3,2,"tr",31),c()(),p(12,"app-pagination",32),b("pageChange",function(i){x(t);let r=o(2);return v(r.goToTabPage(2,i))})("itemsPerPageChange",function(i){x(t);let r=o(2);return v(r.changeTabPageSize(2,i))}),c()()}if(e&2){let t=o(2);s(8),a("ngForOf",t.compliantOrganizationsProps.titles),s(),a("ngIf",t.compliantOrganizationsProps.rowActions),s(2),a("ngForOf",t.compliantOrganizationsProps.data),s(),a("totalRecords",t.compliantOrganizations.totalItems)("itemsPerPage",t.compliantOrganizations.pageSize)("itemsPerPageOptions",E(7,H))("currentPage",t.compliantOrganizations.currentPage)}}function ne(e,l){if(e&1&&(p(0,"th"),u(1),c()),e&2){let t=l.$implicit;s(),P(" ",t," ")}}function ie(e,l){if(e&1&&(p(0,"th"),u(1),c()),e&2){let t=o(3);s(),P("",t.nonCompliantOrganizationsProps.rowActions.title," ")}}function ae(e,l){if(e&1&&d(0,"span",36),e&2){let t=o().$implicit,n=o().$implicit;a("innerHTML",n[t],C)}}function oe(e,l){if(e&1&&d(0,"span",36),e&2){let t=o().$implicit,n=o().$implicit;a("innerHTML",n[t],C)}}function se(e,l){if(e&1&&d(0,"span",36),e&2){let t=o().$implicit,n=o().$implicit;a("innerHTML",n[t],C)}}function re(e,l){if(e&1&&d(0,"span",36),e&2){let t=o().$implicit,n=o().$implicit;a("innerHTML",n[t],C)}}function le(e,l){if(e&1&&d(0,"span",36),e&2){let t=o().$implicit,n=o().$implicit;
1a("innerHTML",n[t],C)}}function ce(e,l){if(e&1&&d(0,"span",36),e&2){let t=o().$implicit,n=o().$implicit;a("innerHTML",n[t],C)}}function pe(e,l){if(e&1&&(p(0,"span"),u(1),c()),e&2){let t=o().$implicit,n=o().$implicit;s(),N(n[t])}}function me(e,l){if(e&1&&(p(0,"td"),$(1,33),h(2,ae,1,1,"span",34)(3,oe,1,1,"span",34)(4,se,1,1,"span",34)(5,re,1,1,"span",34)(6,le,1,1,"span",34)(7,ce,1,1,"span",34)(8,pe,2,1,"span",35),M(),c()),e&2){let t=l.$implicit;s(),a("ngSwitch",t),s(),a("ngSwitchCase","sslStatus"),s(),a("ngSwitchCase","privacyPolicy"),s(),a("ngSwitchCase","consentForm"),s(),a("ngSwitchCase","personalDataCollected"),s(),a("ngSwitchCase","paymentStatus"),s(),a("ngSwitchCase","complianceStatus")}}function _e(e,l){if(e&1){let t=w();p(0,"button",38),b("click",function(i){let r=x(t).$implicit,_=o(2).$implicit;return v(r.onPress(i,_))}),d(1,"i"),u(2),c()}if(e&2){let t=l.$implicit;T(t.class),a("title",t.title),s(),T(t.icon),s(),P("",t.text," ")}}function de(e,l){if(e&1&&(p(0,"td"),h(1,_e,3,6,"button",37),c()),e&2){let t=o(4);s(),a("ngForOf",t.nonCompliantOrganizationsProps.rowActions.actions)}}function ge(e,l){if(e&1&&(p(0,"tr"),h(1,me,9,7,"td",31)(2,de,2,1,"td",13),c()),e&2){let t=o(3);s(),a("ngForOf",t.nonCompliantOrganizationsProps.columns),s(),a("ngIf",t.nonCompliantOrganizationsProps.rowActions)}}function ue(e,l){if(e&1){let t=w();p(0,"div",25)(1,"button",26),b("click",function(){x(t);let i=o(2);return v(i.downloadExcelAllNonCompliedDomains())}),d(2,"i",27),u(3," Download Excel "),c()(),p(4,"div",28)(5,"table",29)(6,"thead",30)(7,"tr"),h(8,ne,2,1,"th",31)(9,ie,2,1,"th",13),c()(),p(10,"tbody"),h(11,ge,3,2,"tr",31),c()(),p(12,"app-pagination",32),b("pageChange",function(i){x(t);let r=o(2);return v(r.goToTabPage(3,i))})("itemsPerPageChange",function(i){x(t);let r=o(2);return v(r.changeTabPageSize(3,i))}),c()()}if(e&2){let t=o(2);s(8),a("ngForOf",t.nonCompliantOrganizationsProps.titles),s(),a("ngIf",t.nonCompliantOrganizationsProps.rowActions),s(2),a("ngForOf",t.nonCompliantOrganizationsProps.data),s(),a("totalRecords",t.nonCompliantOrganizations.totalItems)("itemsPerPage",t.nonCompliantOrganizations.pageSize)("itemsPerPageOptions",E(7,H))("currentPage",t.nonCompliantOrganizations.currentPage)}}function he(e,l){if(e&1){let t=w();p(0,"div")(1,"div",10)(2,"div",18)(3,"ul",19,0),b("navChange",function(i){x(t);let r=o();return v(r.onTabChange(i))}),p(5,"li",20)(6,"button",21),u(7),c(),h(8,Bt,13,8,"ng-template",22),c(),p(9,"li",20)(10,"button",21),u(11),c(),h(12,ee,13,8,"ng-template",22),c(),p(13,"li",20)(14,"button",21),u(15),c(),h(16,ue,13,8,"ng-template",22),c()()(),p(17,"div",23),d(18,"div",24),c()()()}if(e&2){let t=W(4),n=o();s(3),a("activeId",n.activeTab),s(2),a("ngbNavItem",1),s(2),P("All Organizations (",n.allOrganizationsCount,")"),s(2),a("ngbNavItem",2),s(2),P("Compliant Organizations (",n.compliantOrganizationsCount,") "),s(2),a("ngbNavItem",3),s(2),P("Non-Compliant Organizations (",n.nonCompliantOrganizationsCount,") "),s(3),a("ngbNavOutlet",t)}}var Ct=(()=>{class e{constructor(t,n,i,r,_){this.spinnerService=t,this.complianceAdminlistService=n,this.cdr=i,this.toastr=r,this.dialog=_,this.isLoading=!1,this.activeTab=1,this.searchTerms=new V,this.searchTerm="",this.allOrganizations={currentPage:1,pageSize:10,totalItems:0,totalPages:0,data:[]},this.compliantOrganizations={currentPage:1,pageSize:10,totalItems:0,totalPages:0,data:[]},this.nonCompliantOrganizations={currentPage:1,pageSize:10,totalItems:0,totalPages:0,data:[]},this.tickets={currentPage:1,pageSize:5,totalItems:0,totalPages:0},this.BASE_URL=`${y.frontend_url}${y.filesUrl}${y.medialUrl}/`,this.allOrganizationsCount=0,this.compliantOrganizationsCount=0,this.nonCompliantOrganizationsCount=0,this.allOrganizationsProps={data:[],index:!0,titles:["#","Organization Name","Domain","Last Checked","SSL Status","Privacy Policy","Consent Form","Personal Data Collected","Payment Status","Compliance Status"],columns:["index","organizationName","domainName","lastChecked","sslStatus","privacyPolicy","consentForm","personalDataCollected","paymentStatus","complianceStatus"],rowActions:{title:"Actions",actions:[{icon:"pi pi-eye",text:"",class:"btn btn-primary btn-sm",title:"View Details",onPress:(m,f)=>this.viewDetails(f)},{icon:"pi pi-file-pdf",text:"",class:"btn btn-info btn-sm ms-2",title:"View Privacy Policy",onPress:(m,f)=>this.viewPdf(f.privacyPolicyFileUrl)},{icon:"pi pi-file-pdf",text:"",class:"btn btn-info btn-sm ms-2",title:"View Consent Form",onPress:(m,f)=>this.viewPdf(f.consentFileUrl)},{icon:"pi pi-list",text:"",class:"btn btn-secondary btn-sm ms-2",title:"View Tickets",onPress:(m,f)=>this.viewTickets(f.domainName,this.tickets.currentPage)}]}},this.compliantOrganizationsProps=A(O({},this.allOrganizationsProps),{data:[]}
1),this.nonCompliantOrganizationsProps=A(O({},this.allOrganizationsProps),{data:[]})}ngOnInit(){this.loadDataForTab(this.activeTab),this.searchTerms.pipe(B(300),X()).subscribe(t=>{this.searchTerm=t,this.resetPagination(),this.loadDataForTab(this.activeTab)})}ngAfterViewInit(){ht.replace()}onSearch(t){this.searchTerms.next(t)}stripHtml(t){return t?t.replace(/<[^>]*>/g,"").trim():""}convertBooleanIcon(t){return t&&t.includes("check")?"Yes":"No"}convertBadge(t){return t?this.stripHtml(t):""}downloadExcelAllDomains(){let t=this.allOrganizationsProps.data.map(m=>({id:m.id,organizationName:m.organizationName,domainName:m.domainName,lastChecked:m.lastChecked,sslStatus:this.convertBooleanIcon(m.sslStatus),privacyPolicy:this.convertBooleanIcon(m.privacyPolicy),consentForm:this.convertBooleanIcon(m.consentForm),personalDataCollected:this.convertBooleanIcon(m.personalDataCollected),complianceStatus:this.convertBadge(m.complianceStatus)})),n=S.json_to_sheet(t),i=S.book_new();S.book_append_sheet(i,n,"AllDomains");let r=D(i,{bookType:"xlsx",type:"array"}),_=new Blob([r],{type:"application/octet-stream"});(0,L.saveAs)(_,"all_domains.xlsx")}downloadExcelAllCompliedDomains(){let t=this.compliantOrganizationsProps.data.map(m=>({id:m.id,organizationName:m.organizationName,domainName:m.domainName,lastChecked:m.lastChecked,sslStatus:this.convertBooleanIcon(m.sslStatus),privacyPolicy:this.convertBooleanIcon(m.privacyPolicy),consentForm:this.convertBooleanIcon(m.consentForm),personalDataCollected:this.convertBooleanIcon(m.personalDataCollected),complianceStatus:this.convertBadge(m.complianceStatus)})),n=S.json_to_sheet(t),i=S.book_new();S.book_append_sheet(i,n,"CompliedDomains");let r=D(i,{bookType:"xlsx",type:"array"}),_=new Blob([r],{type:"application/octet-stream"});(0,L.saveAs)(_,"all_complied_domains.xlsx")}downloadExcelAllNonCompliedDomains(){let t=this.nonCompliantOrganizationsProps.data.map(m=>({id:m.id,organizationName:m.organizationName,domainName:m.domainName,lastChecked:m.lastChecked,sslStatus:this.convertBooleanIcon(m.sslStatus),privacyPolicy:this.convertBooleanIcon(m.privacyPolicy),consentForm:this.convertBooleanIcon(m.consentForm),personalDataCollected:this.convertBooleanIcon(m.personalDataCollected),complianceStatus:this.convertBadge(m.complianceStatus)})),n=S.json_to_sheet(t),i=S.book_new();S.book_append_sheet(i,n,"NonCompliedDomains");let r=D(i,{bookType:"xlsx",type:"array"}),_=new Blob([r],{type:"application/octet-stream"});(0,L.saveAs)(_,"all_non_complied_domains.xlsx")}loadDataForTab(t){this.isLoading=!0,this.spinnerService.show();let n=t===1?"all":t===2?"compliant":"non-compliant",i=this.getPageData(t);this.complianceAdminlistService.getAllScanResultsWithSearch(i.currentPage,i.pageSize,n,this.searchTerm).subscribe({next:r=>{i.data=r.data.map((_,m)=>A(O({},this.formatScanResult(_)),{index:(i.currentPage-1)*i.pageSize+m+1})),i.totalItems=r.totalElements,i.totalPages=r.totalPages,this.updateCounts(),this.updateTableData(t),this.isLoading=!1,this.spinnerService.hide(),this.cdr.detectChanges()},error:r=>{console.error("Error loading compliance statistics:",r),k.default.fire("Error","Failed to load data from the API. Please try again later.","error"),this.isLoading=!1,this.spinnerService.hide()}})}resetPagination(){this.allOrganizations.currentPage=1,this.compliantOrganizations.currentPage=1,this.nonCompliantOrganizations.currentPage=1}openScanModal(t){t.preventDefault();let n={url:"https://gesam.co.tz",requested_by:"internal_staff",institution_id:null,reason:"DETAIL"};console.log("SCAN PAYLOAD:",n),this.dialog.open(ut,{width:"60%",maxHeight:"90vh",data:{payload:n,title:"Domain Compliance Scan",description:"Check if your domain complies with data protection requirements"}}).afterClosed().subscribe(r=>{r&&this.toastr.success("Domain scan completed, go to Payment page to view your Control Number")})}updateCounts(){this.complianceAdminlistService.getAllScanResultsWithSearch(1,1,"all",this.searchTerm).subscribe({next:t=>this.allOrganizationsCount=t.totalElements}),this.complianceAdminlistService.getAllScanResultsWithSearch(1,1,"compliant",this.searchTerm).subscribe({next:t=>this.compliantOrganizationsCount=t.totalElements}),this.complianceAdminlistService.getAllScanResultsWithSearch(1,1,"non-compliant",this.searchTerm).subscribe({next:t=>
1this.nonCompliantOrganizationsCount=t.totalElements})}updateTableData(t){t===1?this.allOrganizationsProps.data=this.allOrganizations.data:t===2?this.compliantOrganizationsProps.data=this.compliantOrganizations.data:this.nonCompliantOrganizationsProps.data=this.nonCompliantOrganizations.data}getPageData(t){return t===1?this.allOrganizations:t===2?this.compliantOrganizations:this.nonCompliantOrganizations}formatScanResult(t){let n=t.privacy_policies?.length>0,i=t.consents?.some(g=>g.found),r=t.follow_up_requests?.[0]?.detail_report_payment_status??!1,_=n?`${this.BASE_URL}${t.privacy_policies[0].content_file_path}`:null,m=i?`${this.BASE_URL}${t.consents.find(g=>g.found)?.content_file_path}`:null,f=g=>`<i class="${g?"fa fa-check text-success":"fa fa-times text-danger"}"></i> ${g?"Yes":"No"}`;return{id:t.id,organizationName:t.organization?.organization_name??"N/A",domainName:t.domain_name??"N/A",lastChecked:t.update_date?new Date(t.update_date).toLocaleDateString():"N/A",sslStatus:f(!!t.ssl_status),privacyPolicy:f(n),consentForm:f(i),personalDataCollected:f(t.personal_data_points?.length>0),paymentStatus:`<span class="badge ${r?"bg-success":"bg-danger"}">${r?"Paid":"Unpaid"}</span>`,complianceStatus:`<span class="badge ${t.is_collecting_personal_data?t.ssl_status&&n&&i?"bg-success":"bg-danger":t.ssl_status&&n?"bg-success":"bg-danger"}">${t.is_collecting_personal_data?t.ssl_status&&n&&i?"Compliant":"Non-Compliant":t.ssl_status&&n?"Compliant":"Non-Compliant"}</span>`,isCompliant:t.is_collecting_personal_data?t.ssl_status&&n&&i:t.ssl_status&&n,privacyPolicyFileUrl:_,consentFileUrl:m}}onSearchInput(t){this.onSearch(t.target.value)}onTabChange(t){this.activeTab=t.nextId,this.loadDataForTab(this.activeTab)}goToTabPage(t,n){let i=this.getPageData(t);n>=1&&n<=i.totalPages&&n!==i.currentPage&&(i.currentPage=n),this.loadDataForTab(t)}previousTabPage(t){let n=this.getPageData(t);n.currentPage>1&&this.goToTabPage(t,n.currentPage-1)}nextTabPage(t){let n=this.getPageData(t);n.currentPage<n.totalPages&&this.goToTabPage(t,n.currentPage+1)}changeTabPageSize(t,n){let i=this.getPageData(t);i.pageSize=n||i.pageSize,i.currentPage=1,this.loadDataForTab(t)}getRangeStart(t){let n=this.getPageData(t);return n.totalItems===0?0:(n.currentPage-1)*n.pageSize+1}getRangeEnd(t){let n=this.getPageData(t);return Math.min(n.currentPage*n.pageSize,n.totalItems)}getTabPageNumbers(t){let n=this.getPageData(t),i=[],r=5,_=Math.max(1,n.currentPage-Math.floor(r/2)),m=Math.min(n.totalPages,_+r-1);m-_+1<r&&(_=Math.max(1,m-r+1));for(let f=_;f<=m;f++)i.push(f);return i}goToTicketsPage(t,n){n>=1&&n<=this.tickets.totalPages&&n!==this.tickets.currentPage&&this.viewTickets(t,n)}previousTicketsPage(t){this.tickets.currentPage>1&&this.goToTicketsPage(t,this.tickets.currentPage-1)}nextTicketsPage(t){this.tickets.currentPage<this.tickets.totalPages&&this.goToTicketsPage(t,this.tickets.currentPage+1)}getTicketsPageNumbers(){let t=[],i=Math.max(1,this.tickets.currentPage-Math.floor(2.5)),r=Math.min(this.tickets.totalPages,i+5-1);r-i+1<5&&(i=Math.max(1,r-5+1));for(let _=i;_<=r;_++)t.push(_);return t}viewDetails(t){let n=` 2 <div class="text-start"> 3 <div class="mb-3"> 4 <h5 class="mb-3">Organization Information</h5> 5 <p><strong>Organization:</strong> ${t.organizationName||"N/A"}</p> 6 <p><strong>Domain:</strong> ${t.domainName||"N/A"}</p> 7 <p><strong>Last Checked:</strong> ${t.lastChecked||"N/A"}</p> 8 </div> 9 10 <div class="mb-3"> 11 <h5 class="mb-3">Compliance Status</h5> 12 <p><strong>SSL Status:</strong> ${t.sslStatus||"N/A"}</p> 13 <p> 14 <strong>Privacy Policy:</strong> 15 ${t.privacyPolicy.includes("check")?"Available "+(t.privacyPolicyFileUrl?`<a href="${t.privacyPolicyFileUrl}" target="_blank" class="btn btn-sm btn-link p-0 ms-2"> 16 <i class="pi pi-download"></i> Download 17 </a>`:""):"Not Available"} 18 </p> 19 <p> 20 <strong>Consent Form:</strong> 21 ${t.consentForm.includes("check")?"Available "+(t.consentFileUrl?`<a href="${t.consentFileUrl}" target="_blank" class="btn btn-sm btn-link p-0 ms-2"> 22 <i class="pi pi-download"></i> Download 23 </a>`:""):"Not Available"} 24 </p> 25 <p><strong>Personal Data Collected:</strong>
25 ${t.personalDataCollected||"N/A"}</p> 26 <p><strong>Payment Status:</strong> ${t.paymentStatus||"N/A"}</p> 27 <p><strong>Compliance Status:</strong> ${t.complianceStatus||"N/A"}</p> 28 </div> 29 </div> 30 `;k.default.fire({title:"Organization Details",html:n,icon:"info",width:"600px",showConfirmButton:!0,confirmButtonText:"Close",showCloseButton:!0})}viewPdf(t){if(!t){k.default.fire("No File","File not available","warning");return}window.open(t,"_blank")}viewTickets(t,n){this.spinnerService.show(),this.isLoading=!0,this.complianceAdminlistService.getDomainTickets(t,n,this.tickets.pageSize).subscribe({next:i=>{if(this.spinnerService.hide(),this.isLoading=!1,!i||!i.data||i.data.length===0){k.default.fire("No Tickets Found",`No follow-up tickets found for ${t}.`,"info");return}this.tickets.totalItems=i.total,this.tickets.totalPages=Math.ceil(this.tickets.totalItems/this.tickets.pageSize),this.tickets.currentPage=n;let r=["Ticket Number","Date","Institution Name","Status","Outdated"],_=i.data.map(g=>{let ft=g.institution_name||"N/A",xt=g.is_outdated?"Yes":"No",vt=`<span class="badge ${g.status==="Complete"?"bg-success":"bg-secondary"}">${g.status}</span>`,bt=`<span class="badge ${g.is_outdated?"bg-danger":"bg-success"}">${xt}</span>`;return` 31 <tr> 32 <td>${g.ticket_number}</td> 33 <td>${new Date(g.create_date).toLocaleDateString()}</td> 34 <td>${ft}</td> 35 <td>${vt}</td> 36 <td>${bt}</td> 37 </tr> 38 `}).join(""),m=this.tickets.totalPages>1?` 39 <nav class="d-flex justify-content-between align-items-center mt-3"> 40 <div> 41 Showing ${(this.tickets.currentPage-1)*this.tickets.pageSize+1} to 42 ${Math.min(this.tickets.currentPage*this.tickets.pageSize,this.tickets.totalItems)} 43 of ${this.tickets.totalItems} entries 44 </div> 45 <ul class="pagination mb-0"> 46 <li class="page-item ${this.tickets.currentPage===1?"disabled":""}"> 47 <button class="page-link" onclick="document.dispatchEvent(new CustomEvent('previousTicketsPage', {detail: {domainName: '${t}'}}))">Previous</button> 48 </li> 49 ${this.getTicketsPageNumbers().map(g=>` 50 <li class="page-item ${g===this.tickets.currentPage?"active":""}"> 51 <button class="page-link" onclick="document.dispatchEvent(new CustomEvent('goToTicketsPage', {detail: {domainName: '${t}', page: ${g}}}))">${g}</button> 52 </li> 53 `).join("")} 54 <li class="page-item ${this.tickets.currentPage===this.tickets.totalPages?"disabled":""}"> 55 <button class="page-link" onclick="document.dispatchEvent(new CustomEvent('nextTicketsPage', {detail: {domainName: '${t}'}}))">Next</button> 56 </li> 57 </ul> 58 </nav> 59 `:"",f=` 60 <div class="table-responsive"> 61 <table class="table table-striped table-bordered ticket-table"> 62 <thead class="table-blue"> 63 <tr> 64 ${r.map(g=>`<th>${g}</th>`).join("")} 65 </tr> 66 </thead> 67 <tbody> 68 ${_} 69 </tbody> 70 </table> 71 ${m} 72 </div> 73 `;k.default.fire({title:`Follow-up Tickets for ${t}`,html:`<div class="text-start">${f}</div>`,icon:"info",width:"1000px",showCloseButton:!0,showConfirmButton:!1,didOpen:()=>{document.addEventListener("goToTicketsPage",g=>{this.goToTicketsPage(g.detail.domainName,g.detail.page)}),document.addEventListener("previousTicketsPage",g=>{this.previousTicketsPage(g.detail.domainName)}),document.addEventListener("nextTicketsPage",g=>{this.nextTicketsPage(g.detail.domainName)})},willClose:()=>{document.removeEventListener("goToTicketsPage",()=>{}),document.removeEventListener("previousTicketsPage",()=>{}),document.removeEventListener("nextTicketsPage",()=>{})}})},error:i=>{this.spinnerService.hide(),this.isLoading=!1,console.error("Error fetching domain tickets:",i),k.default.fire("Error",`Failed to fetch tickets for ${t}.`,"error")}})}min(t,n){return t<n?t:n}static{this.\u0275fac=function(n){return new(n||e)(z(it),z(I),z(q),z(at),z(ot))}}static{this.\u0275cmp=j({type:e,selectors:[["app-compliance-adminlist"]],features:[Y([I])],decls:14,vars:2,consts:[["nav","ngbNav"],[1,"container-fluid"],[1,"row"],[1,"p-1","m-2","rounded-lg","shadow-md","row","align-items-center"],[1,"col-sm-12","col-md-6"],["id","searchInput","placeholder","Search...","type","text",1,"form-control",3,"input"],[1,"col-sm-12","col-md-6","d-flex","justify-content-end"],[1,"btn-compliance",3,"click"],[1,"pi","pi-shield"],[1,"col-sm-12"],[1,"card"],[1,"card-body"],["class","text-center p-5",4,"ngIf"],[4,"ngIf"],[1,"text-center","p-5"],[1,"loader-box"],[1,"loader-19"],[1,"mt-3"],[1,"card-header","p-0"],["ngbNav","",1,"nav-tabs",3,"navChange","activeId"],[3,"ngbNavItem"],["ngbNavLink",""],["ngbNavContent",""],[1,"card-body","p-0"],[1,"tab-content",3,"ngbNavOutlet"],[1,"d-flex","justify-content-end","mb-2"],[1,"btn","btn-success",3,"click"],[1,"pi","pi-file-excel"],[1,"table-responsive","table-wrapper"],[1,"table","table-striped","table-bordered"],[1,"table-blue"],[4,"ngFor","ngForOf"],[3,"pageChange","itemsPerPageChange","totalRecords","itemsPerPage","itemsPerPageOptions","currentPage"],[3,"ngSwitch"],[3,"innerHTML",4,"ngSwitchCase"],[4,"ngSwitchDefault"],[3,"innerHTML"],[3,"class","title","click",4,"ngFor","ngForOf"],[3,"click","title"]],template:function(n,i){n&1&&(p(0,"div",1)(1,"div",2)(2,"section",3)(3,"div",4)(4,"input",5),b("input",function(_){return i.onSearchInput(_)}),c()(),p(5,"div",6)(6,"button",7),b("click",function(_){return i.openScanModal(_)}),d(7,"i",8),u(8," Check Domain Compliance "),c()()(),p(9,"div",9)(10,"div",10)(11,"div",11),h(12,kt,5,0,"div",12)(13,he,19,8,"div",13),c()()()()()),n&2&&(s(12),a("ngIf",i.isLoading),s(),a("ngIf",!i.isLoading))},dependencies:[tt,G,J,K,Q,Z,gt,rt,pt,ct,lt,_t,mt,dt,nt,st],styles:['@charset "UTF-8";.table-wrapper[_ngcontent-%COMP%]{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;background:linear-gradient(to right,#fff 30%,#fff0),linear-gradient(to right,#fff0,#fff 70%) 100% 0,radial-gradient(farthest-side at 0% 50%,#0003,#0000),radial-gradient(farthest-side at 100% 50%,#0003,#0000) 100% 0;background-repeat:no-repeat;background-color:#fff;background-size:40px 100%,40px 100%,14px 100%,14px 100%;background-position:0 0,100%,0 0,100%;background-attachment:local,local,scroll,scroll}[_nghost-%COMP%] .table{width:100%;min-width:600px;margin-bottom:0}[_nghost-%COMP%] .table th, [_nghost-%COMP%] .table td{white-space:nowrap;vertical-align:middle}[_nghost-%COMP%] .table th, [_nghost-%COMP%] .table td{padding:.75rem 1rem}.tab-content[_ngcontent-%COMP%]{padding:1.25rem}.nav-tabs[_ngcontent-%COMP%]{padding:0 1.25rem;margin-bottom:0;border-bottom:1px solid #dee2e6}.nav-tabs[_ngcontent-%COMP%] .nav-link[_ngcontent-%COMP%]{border:none;color:#6c757d;font-weight:500;padding:1rem 1.25rem;margin-bottom:-1px}.nav-tabs[_ngcontent-%COMP%] .nav-link.active[_ngcontent-%COMP%]{color:#0d6efd;background-color:#fff;border-bottom:2px solid #0d6efd}.nav-tabs[_ngcontent-%COMP%] .nav-link[_ngcontent-%COMP%]:hover:not(.active){border-bottom:2px solid #dee2e6;margin-bottom:-2px}.card-header[_ngcontent-%COMP%]{background-color:#f8f9fa;border-bottom:1px solid rgba(0,0,0,.125);padding:1.25rem 1.25rem 0}.table-responsive[_ngcontent-%COMP%]{max-height:auto;overflow-y:auto}.ticket-table.table-striped[_ngcontent-%COMP%] > tbody[_ngcontent-%COMP%] > tr[_ngcontent-%COMP%]:nth-of-type(odd){background-color:#e3f2fd}.btn-compliance[_ngcontent-%COMP%]{background-color:#c00;color:#fff;font-weight:700;border:none;border-radius:9999px;padding:.75rem 1.5rem;display:inline-flex;align-items:center;gap:.5rem;box-shadow:0 4px 12px #00000040;transition:background-color .3s ease,transform .2s ease}.btn-compliance[_ngcontent-%COMP%]{background-color:#c00;color:#fff;font-weight:700;border:none;border-radius:9999px;padding:.75rem 1.5rem;display:inline-flex;align-items:center;gap:.5rem;box-shadow:0 4px 12px #00000040;transition:background-color .3s ease,transform .2s ease;animation:_ngcontent-%COMP%_blink 1.2s infinite}.btn-compliance[_ngcontent-%COMP%]:hover{background-color:#a00;transform:translateY(-2px)}.btn-compliance[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{font-size:1rem}.btn-compliance[_ngcontent-%COMP%]{padding:8px 18px}@keyframes _ngcontent-%COMP%_blink{0%,50%,to{opacity:1}25%,75%{opacity:.5}}.compliance-pagination[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:flex-end;
73gap:1.5rem;flex-wrap:wrap;padding-top:1rem;color:#2f2f35;font-size:.95rem}.page-size-group[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.75rem}.page-size-label[_ngcontent-%COMP%]{margin:0;color:#3f3f46;white-space:nowrap}.page-size-select[_ngcontent-%COMP%]{min-width:5.25rem;height:2.625rem;padding:.5rem 2.25rem .5rem .875rem;border:1px solid #aeb3bd;border-radius:.4rem;background-color:#fff;color:#1f2937;font-size:.95rem;line-height:1.2;appearance:none;background-image:linear-gradient(45deg,transparent 50%,#6b7280 50%),linear-gradient(135deg,#6b7280 50%,transparent 50%);background-position:calc(100% - 1.15rem) calc(50% - .15rem),calc(100% - .85rem) calc(50% - .15rem);background-size:.4rem .4rem,.4rem .4rem;background-repeat:no-repeat}.page-status[_ngcontent-%COMP%]{white-space:nowrap}.page-actions[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.15rem}.page-button[_ngcontent-%COMP%]{width:2rem;height:2rem;display:inline-flex;align-items:center;justify-content:center;border:none;background:transparent;color:#5f6368;transition:color .2s ease,opacity .2s ease}.page-button[_ngcontent-%COMP%]:hover:not(:disabled){color:#2d3136}.page-button[_ngcontent-%COMP%]:disabled{color:#c7cad1;cursor:not-allowed}.page-button[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:1.15rem;line-height:1;letter-spacing:-.05em}']})}}return e})();var Le=[{path:"",component:Ct}];export{Le as ComplianceAdminlistRoutes};
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.