1import{a as ge,b as nt}from"./chunk-ERTL63FO.js";import{a as st}from"./chunk-CK5GGWRC.js";import{a as lt}from"./chunk-DHXZ2LED.js";import{a as Be}from"./chunk-VDWKEGH5.js";import"./chunk-5KNK55XZ.js";import{a as ot}from"./chunk-ZHV4E27D.js";import{a as T}from"./chunk-KYALJWAJ.js";import{a as Ce}from"./chunk-TCA7I7WD.js";import{a as he}from"./chunk-EBXY4FYS.js";import{b as rt}from"./chunk-YZ4JIY5W.js";import"./chunk-HXYKDPUO.js";import{a as be}from"./chunk-OBIB7VQE.js";import{a as _e}from"./chunk-CJJT7AKL.js";import{b as j}from"./chunk-B2LJOCVH.js";import{a as at,c as ye}from"./chunk-6UPE3QPT.js";import"./chunk-VABITLVG.js";import{a as Q}from"./chunk-ZKGBU4QC.js";import"./chunk-DHSOTCDS.js";import"./chunk-ZQNKLNIU.js";import{b as fe,c as ve}from"./chunk-JSKB5VRW.js";import{a as ue,b as $}from"./chunk-EGL3HINK.js";import{b as H}from"./chunk-GHNSCEDG.js";import{a as et}from"./chunk-ATUQWZ6Q.js";import{a as tt,b as it,c as N}from"./chunk-HZKFC4BO.js";import{a as le}from"./chunk-VUODL4RU.js";import"./chunk-7KHBSKJZ.js";import{a as se}from"./chunk-GVYEA7N6.js";import{a as L}from"./chunk-NOU2DUYO.js";import"./chunk-LYOMTRLM.js";import{A as pe,e as ce,h as de,l as me}from"./chunk-XG2GGTH5.js";import"./chunk-JVIWRQAS.js";import{a as U}from"./chunk-3FSOHL3E.js";import{g as Ke,j as Ge,l as Ze}from"./chunk-NPNCMWIN.js";import"./chunk-LZF4ZOU3.js";import{a as oe,s as Xe}from"./chunk-MKZSSJNS.js";import{$a as S,Bb as c,Ca as n,Cb as p,Db as v,Eb as W,Gb as K,Gc as qe,Hb as G,Ib as Z,Ja as f,Kb as z,Lb as Fe,Lc as re,Ob as d,Oc as B,Pa as M,Pb as m,Pc as k,Qb as He,S as Ne,Ta as Je,Ua as _,W as je,ab as w,ba as C,bb as We,ca as x,db as ze,eb as Ue,fb as g,gb as r,ha as Ve,hb as o,ib as h,jc as F,kc as I,mb as ne,nb as ae,ob as P,r as q,rb as b,rc as Ye,tb as u,ub as $e,vb as Ee,vc as O,wb as Re,yb as Qe,z as te,za as ie,zb as E}from"./chunk-VEBEK5NG.js";import{a as V,b as J}from"./chunk-AY4LCFTV.js";var xe=class{totalJobs;allJobsInRange;activeJobsInRange;completedJobsInRange;activeJobs;totalInventoryValue;totalUsedMaterialValue;materialUsedValueInRange;equipmentMaintenanceAlertCount;maintenanceAlertInRange;lowStockAlertCount;lowStockAlertInRange;totalWarehouses;dateRange;constructor(t){Object.assign(this,t)}};var Se=class{date;activeJobs;approvedJobs;constructor(t){Object.assign(this,t)}};var we=class{month;totalSales;constructor(t){Object.assign(this,t)}};var D=class s{constructor(t){this.http=t}http;getCompanyStats(t={}){return this.http.get("dashboard/company/stats",{params:t}).pipe(q(e=>J(V({},e),{data:new xe(e.data)})))}getWeeklyJobStats(t={}){return this.http.get("dashboard/company/jobs-last-7-days",{params:t}).pipe(q(e=>J(V({},e),{data:e.data.map(i=>new Se(i))})))}getMonthlySaleTrend(){return this.http.get("dashboard/company/monthly-sale-trend").pipe(q(t=>J(V({},t),{data:t.data.map(e=>new we(e))})))}getRecentActivities(t={}){return this.http.get("activities/recent",{params:t}).pipe(q(e=>J(V({},e),{data:e.data.map(i=>new rt(i)),paginator:new ue(e.paginator)})))}static \u0275fac=function(e){return new(e||s)(je(qe))};static \u0275prov=Ne({token:s,factory:s.\u0275fac})};function ht(s,t){if(s&1){let e=P();r(0,"div",10),b("click",function(){let a=C(e).$implicit,l=u();return x(l.onTimeRangeSelect(a.value))}),r(1,"span"),c(2),o()()}if(s&2){let e=t.$implicit,i=u();E("selected",i.selectedTimeRange===e.value&&!i.isCustomSelected),n(2),p(e.label)}}function vt(s,t){if(s&1){let e=P();r(0,"div",14)(1,"div",15)(2,"div",16)(3,"input",17),Z("ngModelChange",function(a){C(e);let l=u();return G(l.customFrom,a)||(l.customFrom=a),x(a)}),o()(),r(4,"div",16)(5,"input",18),Z("ngModelChange",function(a){C(e);let l=u();return G(l.customTo,a)||(l.customTo=a),x(a)}),o()()()()}if(s&2){let e=u();n(3),K("ngModel",e.customFrom),g("max",e.maxDate),n(2),K("ngModel",e.customTo),g("max",e.maxDate)("min",e.customFrom)}}var Pe=class s{constructor(t,e){this.data=t;this.dialogRef=e;let i=new Date;this.maxDate=i.toISOString().split("T")[0],t&&(this.selectedTimeRange=t.timeRange||"",this.customFrom=t.customFrom||"",this.customTo=t.customTo||"",this.isCustomSelected=!!(!t.timeRange&&(t.customFrom||t.customTo)))}data;dialogRef;selectedTimeRange="";customFrom="";customTo="";
1isCustomSelected=!1;maxDate="";timeRangeOptions=[{label:"Last 24 Hours",value:"last_24_hours"},{label:"Last 1 Week",value:"last_1_week"},{label:"Last 2 Weeks",value:"last_2_week"},{label:"Last 1 Month",value:"last_1_month"},{label:"Last 6 Months",value:"last_6_month"}];calculateDateRange(t){let e=new Date,i=new Date(e);i.setHours(23,59,59,999);let a=i.toISOString().split("T")[0],l=new Date(e);switch(t){case"last_24_hours":l.setDate(l.getDate()-1);break;case"last_1_week":l.setDate(l.getDate()-7);break;case"last_2_week":l.setDate(l.getDate()-14);break;case"last_1_month":l.setMonth(l.getMonth()-1);break;case"last_6_month":l.setMonth(l.getMonth()-6);break;default:l.setDate(l.getDate()-1)}return l.setHours(0,0,0,0),{startDate:l.toISOString().split("T")[0],endDate:a}}onTimeRangeSelect(t){t==="custom"?(this.isCustomSelected=!0,this.selectedTimeRange=""):(this.isCustomSelected=!1,this.selectedTimeRange=t,this.customFrom="",this.customTo="")}onApplyFilters(){let t={};if(this.isCustomSelected)if(this.customFrom&&this.customTo)t.customFrom=this.customFrom,t.customTo=this.customTo,t.startDate=this.customFrom,t.endDate=this.customTo;else return;else if(this.selectedTimeRange){t.timeRange=this.selectedTimeRange;let e=this.calculateDateRange(this.selectedTimeRange);t.startDate=e.startDate,t.endDate=e.endDate}else return;this.dialogRef.close(t)}onClose(){this.dialogRef.close(null)}static \u0275fac=function(e){return new(e||s)(f(it),f(tt))};static \u0275cmp=M({type:s,selectors:[["app-dashboard-filter-dialog"]],decls:19,vars:4,consts:[[1,"dialog-container2"],[1,"dialog-header"],[1,"left-section"],[1,"heading"],[1,"right-section"],[1,"close-icon",3,"click"],["path","assets/images/common/cross-icon.svg"],[1,"filters-wrapper"],[1,"time-range-options"],["class","time-range-item",3,"selected","click",4,"ngFor","ngForOf"],[1,"time-range-item",3,"click"],["class","custom-date-range",4,"ngIf"],[1,"submit-button"],["type","button",1,"apply-filters-btn",3,"click"],[1,"custom-date-range"],[1,"date-inputs"],[1,"date-input-field"],["type","date","placeholder","From",1,"date-input",3,"ngModelChange","ngModel","max"],["type","date","placeholder","To",1,"date-input",3,"ngModelChange","ngModel","max","min"]],template:function(e,i){e&1&&(r(0,"div",0)(1,"div",1)(2,"div",2)(3,"div",3),c(4,"Filter"),o()(),r(5,"div",4)(6,"div",5),b("click",function(){return i.onClose()}),h(7,"app-icon",6),o()()(),r(8,"div")(9,"div",7)(10,"div",8),_(11,ht,3,3,"div",9),r(12,"div",10),b("click",function(){return i.onTimeRangeSelect("custom")}),r(13,"span"),c(14,"Custom"),o()()(),_(15,vt,6,5,"div",11),o(),r(16,"div",12)(17,"button",13),b("click",function(){return i.onApplyFilters()}),c(18," Apply Filters "),o()()()()),e&2&&(n(11),g("ngForOf",i.timeRangeOptions),n(),E("selected",i.isCustomSelected),n(3),g("ngIf",i.isCustomSelected))},dependencies:[O,F,I,pe,ce,de,me,k,L],styles:[".dialog-container2[_ngcontent-%COMP%]{background:#fff;border-radius:1rem;overflow:hidden;max-width:700px;min-width:400px;width:100%;padding-block:20px}@media screen and (max-width:570px){.dialog-container2[_ngcontent-%COMP%]{width:400px;min-width:400px}}@media screen and (max-width:430px){.dialog-container2[_ngcontent-%COMP%]{width:360px;min-width:360px}}@media screen and (max-width:390px){.dialog-container2[_ngcontent-%COMP%]{width:320px;min-width:320px}}.dialog-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #E5E7EB;padding-inline:20px;padding-bottom:20px}.dialog-header[_ngcontent-%COMP%] .left-section[_ngcontent-%COMP%] .heading[_ngcontent-%COMP%]{font-size:1.125rem;font-weight:600;color:#111827}.dialog-header[_ngcontent-%COMP%] .right-section[_ngcontent-%COMP%] .close-icon[_ngcontent-%COMP%]{cursor:pointer;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.dialog-header[_ngcontent-%COMP%] .right-section[_ngcontent-%COMP%] .close-icon[_ngcontent-%COMP%] app-icon[_ngcontent-%COMP%]{width:100%;height:100%}.dialog-header[_ngcontent-%COMP%] .right-section[_ngcontent-%COMP%] .close-icon[_ngcontent-%COMP%] app-icon[_ngcontent-%COMP%] svg{width:100%;height:100%}.filters-wrapper[_ngcontent-%COMP%]{flex-direction:column;margin-bottom:20px}.time-range-options[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:0;overflow:hidden}.time-range-item[_ngcontent-%COMP%]{padding:1rem 1.25rem;cursor:pointer;border-bottom:1px solid #E5E7EB;background:#fff;transition:background-color .2s}.time-range-item[_ngcontent-%COMP%]:last-child{border-bottom:none}.time-range-item[_ngcontent-%COMP%]:hover{background-color:#f9fafb}.time-range-item.selected[_ngcontent-%COMP%]{background-color:#eff6ff;font-weight:500}.time-range-item[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:1rem;color:#111827}.custom-date-range[_ngcontent-%COMP%]{margin-top:20px}.date-inputs[_ngcontent-%COMP%]{display:flex;gap:1rem;margin-inline:20px}.date-input-field[_ngcontent-%COMP%]{flex:1}.date-input-field[_ngcontent-%COMP%] .date-input[_ngcontent-%COMP%]{width:100%;padding:.75rem 1rem;border:1px solid #D1D5DB;border-radius:.5rem;background-color:#f9fafb;font-size:1rem;color:#111827;outline:none;transition:all .2s}.date-input-field[_ngcontent-%COMP%] .date-input[_ngcontent-%COMP%]:focus{border-color:#0a5fba;background-color:#fff}.date-input-field[_ngcontent-%COMP%] .date-input[_ngcontent-%COMP%]::placeholder{color:#9ca3af}.submit-button[_ngcontent-%COMP%]{margin-top:10px;display:flex;justify-content:center;margin-inline:20px}.submit-button[_ngcontent-%COMP%] .apply-filters-btn[_ngcontent-%COMP%]{width:100%;padding:.875rem 1.5rem;background:linear-gradient(135deg,#0a5fba,#3b82f6);color:#fff;border:none;border-radius:.5rem;font-size:1rem;font-weight:500;cursor:pointer;transition:all .3s}.submit-button[_ngcontent-%COMP%] .apply-filters-btn[_ngcontent-%COMP%]:hover{opacity:.9;transform:translateY(-1px);box-shadow:0 4px 12px #0a5fba4d}.submit-button[_ngcontent-%COMP%] .apply-filters-btn[_ngcontent-%COMP%]:active{transform:translateY(0)}"]})};var xt=["inventoryChart"],St=["jobsChart"],wt=()=>["all-recent-activities"],Pt=()=>["low-stock-alerts"];function Mt(s,t){if(s&1&&(r(0,"div",10)(1,"span"),c(2),d(3,"translate"),r(4,"a",18),c(5),d(6,"translate"),o(),c(7),d(8,"translate"),o()()),s&2){let e=u();n(2),v(" ",m(3,4,"paymentSuspendedWarningStart")," "),n(2),g("routerLink",e.SITE_ROUTES.BILLING_HISTORY),n(),p(m(6,6,"billingHistory")),n(2),v(" ",m(8,8,"paymentSuspendedWarningEnd")," ")}}function It(s,t){if(s&1&&(r(0,"div",29)(1,"span",30),c(2),o(),r(3,"span",31),c(4),d(5,"numberFormat"),o()()),s&2){let e=t.$implicit;n(2),p(e.label),n(2),p(m(5,2,e.value))}}function Ot(s,t){if(s&1&&(r(0,"div",20)(1,"div",21),h(2,"app-icon",22),r(3,"div",23)(4,"div",24),c(5),o(),r(6,"div",25),c(7),d(8,"numberFormat"),o()()(),h(9,"hr",26),r(10,"div",27),_(11,It,6,4,"div",28),o()()),s&2){let e=t.$implicit;E("disabled",e.disabled),n(2),g("path",e.icon),n(3),p(e.title),n(2),p(m(8,6,e.value)),n(4),g("ngForOf",e.subFeatures)}}function kt(s,t){if(s&1&&(r(0,"div",11),_(1,Ot,12,8,"div",19),o()),s&2){let e=u();n(),g("ngForOf",e.statsCards)}}function Tt(s,t){s&1&&(r(0,"div",13)(1,"div",32)(2,"h3",33),c(3),d(4,"translate"),o()(),r(5,"div",34),h(6,"canvas",null,0),o()()),s&2&&(n(3),p(m(4,1,"inventoryValueTrend")))}function Dt(s,t){if(s&1&&(r(0,"div",35)(1,"div",32)(2,"h3",33),c(3),d(4,"translate"),o()(),r(5,"div",34)(6,"div",36),h(7,"canvas",null,1),o()()()),s&2){let e=u();n(3),W("",m(4,2,"activeVsCompletedJobs")," (Last ",e.dateRangeLabel??"",")")}}function At(s,t){if(s&1&&(r(0,"span",44),c(1),r(2,"span",46)(3,"span")(4,"strong"),c(5),d(6,"translate"),o(),c(7),o(),r(8,"span")(9,"strong"),c(10),d(11,"translate"),o(),c(12),o(),r(13,"span")(14,"strong"),c(15),d(16,"translate"),o(),c(17),d(18,"enumToKey"),d(19,"translate"),o()()()),s&2){let e=u().$implicit,i=u(2);n(),v(" ",e.metadata.batchCode," "),n(4),v("",m(6,7,"unitValue"),":"),n(2),v(" ",i.getActivityUnitValue(e)),n(3),v("",m(11,9,"quantity"),":"),n(2),v(" ",i.getActivityQuantity(e)),n(3),v("",m(16,11,"activityType"),":"),n(2),v(" ",m(19,15,m(18,13,e.type)))}}function Et(s,t){if(s&1&&(c(0),d(1,"default")),s&2){let e=u().$implicit;v(" ",m(1,1,e==null||e.metadata==null?null:e.metadata.batchCode)," ")}}function Rt(s,t){if(s&1){let e=P();r(0,"app-table-action",47),b("click",function(){C(e);let a=u().$implicit,l=u(2);return x(l.goToInventoryDetail(a.jobInventory.inventory.id))}),o()}if(s&2){let e=u(3);
1g("type",e.TABLE_ACTIONS.VIEW)}}function Ft(s,t){if(s&1&&(r(0,"tr")(1,"td"),c(2),d(3,"enumToKey"),d(4,"translate"),o(),r(5,"td"),c(6),o(),r(7,"td"),c(8),o(),r(9,"td"),S(10,At,20,17,"span",44)(11,Et,2,3),o(),r(12,"td"),c(13),d(14,"date"),o(),r(15,"td"),S(16,Rt,1,1,"app-table-action",45),o()()),s&2){let e=t.$implicit;n(2),v(" ",m(4,8,m(3,6,e.type))," "),n(4),p(e.description),n(2),p(e==null||e.user==null?null:e.user.name),n(2),w(!(e==null||e.metadata==null)&&e.metadata.batchCode?10:11),n(3),p(He(14,10,e.createdAt,"medium")),n(3),w(e.jobInventory?16:-1)}}function Bt(s,t){s&1&&h(0,"app-data-not-found")}function Lt(s,t){if(s&1&&(r(0,"div",16)(1,"div",37)(2,"h4",38),c(3),d(4,"translate"),o(),r(5,"a",39),c(6),d(7,"translate"),o()(),r(8,"div",40)(9,"table")(10,"thead")(11,"tr",41)(12,"th"),c(13),d(14,"translate"),o(),r(15,"th"),c(16),d(17,"translate"),o(),r(18,"th"),c(19),d(20,"translate"),o(),r(21,"th"),c(22),d(23,"translate"),o(),r(24,"th"),c(25),d(26,"translate"),o(),r(27,"th"),c(28),d(29,"translate"),o()()(),r(30,"tbody"),_(31,Ft,17,13,"tr",42),o()(),_(32,Bt,1,0,"app-data-not-found",43),o()()),s&2){let e=u();n(3),W("",m(4,12,"recentActivity")," (Last ",e.dateRangeLabel??"",")"),n(2),g("routerLink",Fe(28,wt)),n(),p(m(7,14,"viewAll")),n(7),p(m(14,16,"activityType")),n(3),p(m(17,18,"details")),n(3),p(m(20,20,"job/person")),n(3),p(m(23,22,"batch")),n(3),p(m(26,24,"time")),n(3),p(m(29,26,"action")),n(3),g("ngForOf",e.recentActivities),n(),g("ngIf",!e.loaderService.loading()&&!e.recentActivities.length)}}function Nt(s,t){if(s&1&&h(0,"img",53),s&2){let e=u().$implicit;g("src",e.media.baseUrlPath,ie)("alt",e.materialName)}}function jt(s,t){if(s&1){let e=P();r(0,"div",50)(1,"div",51)(2,"div",52),S(3,Nt,1,2,"img",53),o(),r(4,"div",54)(5,"div",55),c(6),o(),r(7,"div",56)(8,"span",57),c(9),d(10,"translate"),o(),r(11,"div",58),h(12,"div",59),o()()()(),r(13,"div",60)(14,"span",61),c(15),d(16,"translate"),o(),r(17,"button",62),b("click",function(){let a=C(e).$implicit,l=u(2);return x(l.goToReorder(a))}),c(18),d(19,"translate"),o()()()}if(s&2){let e=t.$implicit;n(3),w(e.media?3:-1),n(3),W("",e.materialName," - ",e.warehouse.name),n(3),W("",m(10,10,"current"),": ",e.stock),n(3),Qe("width",e.stock/e.minimumStockAlert*100,"%"),n(3),W("",m(16,12,"threshold"),": ",e.minimumStockAlert),n(3),p(m(19,14,"reorder"))}}function Vt(s,t){s&1&&h(0,"app-data-not-found")}function Jt(s,t){if(s&1&&(r(0,"div",17)(1,"div",37)(2,"h4",38),c(3),d(4,"translate"),o(),r(5,"a",39),c(6),d(7,"translate"),o()(),r(8,"div",48),_(9,jt,20,16,"div",49),o(),_(10,Vt,1,0,"app-data-not-found",43),o()),s&2){let e=u();n(3),p(m(4,5,"lowStockAlerts")),n(2),g("routerLink",Fe(9,Pt)),n(),p(m(7,7,"viewAll")),n(3),g("ngForOf",e.lowStockAlerts),n(),g("ngIf",!e.loaderService.loading()&&!e.lowStockAlerts.length)}}ge.register(...nt);var Oe=class s extends et{constructor(e,i,a,l,y,A,ee,Y){super(a);this.dialogService=e;this.routerService=i;this.dashboardService=l;this.utilsService=y;this.translationService=A;this.inventoryService=ee;this.loaderService=Y}dialogService;routerService;dashboardService;utilsService;translationService;inventoryService;loaderService;inventoryChartRef;jobsChartRef;inventoryChart;jobsChart;TABLE_ACTIONS=oe;SITE_ROUTES=re;dateRangeLabel="1 Week";statsCards=[{title:"Total Jobs",value:"0",icon:"assets/images/dashboard/jobs-golden-circle-icon.svg",iconBgColor:"#FEF3C7",subFeatures:[{label:"Total Jobs (24h)",value:"0"},{label:"Active Jobs (24h)",value:"0"},{label:"Completed Jobs (24h)",value:"0"}]},{title:"Total Material Values",value:"$ 0",icon:"assets/images/common/dollar-circle-icon.svg",iconBgColor:"#DBEAFE",subFeatures:[{label:"Total Used Material Value",value:"$0"},{label:"Material Value (24h)",value:"$0"}]}
1,{title:"Equipment Maintenance Alert",value:"0",icon:"assets/images/dashboard/expenses-orange-circle-icon.svg",iconBgColor:"#FEE2E2",subFeatures:[{label:"Maintenance Alert (24h)",value:"0"}]},{title:"Low Stock Alert",value:"0",icon:"assets/images/common/warning-round-icon.svg",iconBgColor:"#EDE9FE",subFeatures:[{label:"Low Stock Alert (24h)",value:"0"}]}];get isPaymentSuspended(){return this.storageService.isPaymentSuspended}createInventoryTrendChart(e){let i=this.inventoryChartRef.nativeElement.getContext("2d");if(!i)return;let a=[],l=[];e.forEach(R=>{a.push(R.month),l.push(R.totalSales)});let y=this.getChartAxisMax(l),A=this.getChartStepSize(y),Y={type:"line",data:{labels:a,datasets:[{data:l,borderColor:"#0A5FBA",backgroundColor:"transparent",borderWidth:3,tension:.4,pointRadius:5,pointBackgroundColor:"#0A5FBA",pointBorderColor:"#ffffff",pointBorderWidth:2,pointHoverRadius:7}]},options:{responsive:!0,maintainAspectRatio:!0,scales:{y:{beginAtZero:!0,suggestedMax:y,ticks:{callback:R=>this.formatCompactCurrencyTick(Number(R)),stepSize:A,color:"#475467",font:{size:12}},grid:{color:"#EAECF0"},border:{display:!1}},x:{grid:{display:!1},ticks:{color:"#475467",font:{size:12}},border:{display:!1}}},plugins:{legend:{display:!1},tooltip:{enabled:!0,backgroundColor:"#101828",titleColor:"#ffffff",bodyColor:"#ffffff",padding:12,displayColors:!1,callbacks:{label:function(R){return`Value: ${T(R.parsed.y??0)}`}}}},interaction:{intersect:!1,mode:"index"}}};this.inventoryChart=new ge(i,Y)}formatCompactCurrencyTick(e){return e?e>=1e9?`$${(e/1e9).toFixed(1)}B`:e>=1e6?`$${(e/1e6).toFixed(1)}M`:e>=1e3?`$${Math.round(e/1e3)}k`:T(e,0):"$0"}getChartAxisMax(e){let i=Math.max(...e,0);if(!i)return 100;let a=i*1.15,l=Math.pow(10,Math.floor(Math.log10(a))),y=a/l;return(y<=1?1:y<=2?2:y<=5?5:10)*l}getChartStepSize(e){return e/5}createJobsChart(e,i){let a=this.jobsChartRef.nativeElement.getContext("2d");if(!a)return;let l=e>0||i>0,y=this.utilsService.getCssVariable("--primary"),A=this.utilsService.getCssVariable("--medium-orange"),ee=this.utilsService.getCssVariable("--light-gray"),Y=this.translationService.getTranslation("completedJobs"),R=this.translationService.getTranslation("activeJobs"),gt=this.translationService.getTranslation("noJobs"),ut={type:"doughnut",data:{labels:l?[Y,R]:[gt],datasets:[{data:l?[i,e]:[1],backgroundColor:l?[y,A]:[ee],borderWidth:0,spacing:l?2:0,borderRadius:l?50:0}]},options:{responsive:!0,cutout:"82%",rotation:-90,plugins:{}}};this.jobsChart?.destroy(),this.jobsChart=new ge(a,ut)}goToReorder(e){let i={id:e.id};this.routerService.navigate("/app/dashboard/restock-inventory",i)}ngOnDestroy(){this.inventoryChart&&this.inventoryChart.destroy(),this.jobsChart&&this.jobsChart.destroy()}recentActivities=[];lowStockAlerts=[];generateDummyData(){}viewActivity(e){this.routerService.navigate("/app/inventory/reorder",{activityType:e.activityType,details:e.details,jobPerson:e.jobPerson})}getDateRangeLabel(){let{timeRange:e,customFrom:i,customTo:a}=this.dashboardFilters;if(e)switch(e){case"last_24_hours":return"24 Hours";case"last_1_week":return"1 Week";case"last_2_week":return"2 Weeks";case"last_1_month":return"1 Month";case"last_6_month":return"6 Months";default:return"1 Week"}return i&&a?`${i} - ${a}`:"1 Week"}updateSubFeatureLabels(){let e=this.getDateRangeLabel();this.dateRangeLabel=e,this.statsCards[0].subFeatures[0].label=`Total Jobs (${e})`,this.statsCards[0].subFeatures[1].label=`Active Jobs (${e})`,this.statsCards[0].subFeatures[2].label=`Completed Jobs (${e})`,this.statsCards[1].subFeatures[1].label=`Material Used Value (${e})`,this.statsCards[2].subFeatures[0].label=`Maintenance Alert (${e})`,this.statsCards[3].subFeatures[0].label=`Low Stock Alert (${e})`}getCompanyStats(){let e={};this.dashboardFilters.startDate&&this.dashboardFilters.endDate&&(e.startDate=this.dashboardFilters.startDate,e.endDate=this.dashboardFilters.endDate),this.updateSubFeatureLabels(),this.dashboardService.getCompanyStats(e).subscribe({next:i=>{let a=i.data;this.statsCards[0].value=(a.totalJobs??0).toString(),this.statsCards[0].subFeatures[0].value=(a.allJobsInRange??0).toString(),this.statsCards[0].subFeatures[1].value=(a.activeJobs
1InRange??0).toString(),this.statsCards[0].subFeatures[2].value=(a.completedJobsInRange??0).toString(),this.statsCards[1].value=T(a.totalInventoryValue??0),this.statsCards[1].subFeatures[0].value=T(a.totalUsedMaterialValue??0),this.statsCards[1].subFeatures[1].value=T(a.materialUsedValueInRange??0),this.statsCards[2].value=(a.equipmentMaintenanceAlertCount??0).toString(),this.statsCards[2].subFeatures[0].value=(a.maintenanceAlertInRange??0).toString(),this.statsCards[3].value=(a.lowStockAlertCount??0).toString(),this.statsCards[3].subFeatures[0].value=(a.lowStockAlertInRange??0).toString()}})}getWeeklyJobStats(){let e={};this.dashboardFilters.startDate&&this.dashboardFilters.endDate&&(e.startDate=this.dashboardFilters.startDate,e.endDate=this.dashboardFilters.endDate),this.dashboardService.getWeeklyJobStats(e).subscribe({next:i=>{let a=0,l=0;i.data.forEach(y=>{a+=y.activeJobs,l+=y.approvedJobs}),this.createJobsChart(a,l)}})}getMonthlySaleTrend(){this.dashboardService.getMonthlySaleTrend().subscribe({next:e=>{let{isSuccess:i=!1}=e;i&&this.createInventoryTrendChart(e.data)}})}getLowStockInventory(){this.inventoryService.getLowStockInventory().subscribe({next:e=>{let{isSuccess:i=!1,data:a}=e;i&&(this.lowStockAlerts=a)}})}getRecentActivities(){let e={page:1,limit:5};this.dashboardFilters.startDate&&this.dashboardFilters.endDate&&(e.startDate=this.dashboardFilters.startDate,e.endDate=this.dashboardFilters.endDate),this.dashboardService.getRecentActivities(e).subscribe({next:i=>{let{isSuccess:a=!1,data:l}=i;a&&(this.recentActivities=l)}})}getActivityUnitValue(e){let i=e.batch?.unitPrice;return T(i)}getActivityQuantity(e){return e.metadata.quantity}goToInventoryDetail(e){this.routerService.navigate("/app/inventory/detail",{id:e})}dashboardFilters={};openFilterDialog(){this.dialogService.openDialog(Pe,this.dashboardFilters,!0).afterClosed().subscribe({next:i=>{i&&(this.dashboardFilters=i,this.getCompanyStats(),this.getWeeklyJobStats(),this.getRecentActivities())}})}ngOnInit(){let{VIEW_COMPANY_DASHBOARD_STATS:e,VIEW_COMPANY_DASHBOARD_JOBS_LAST_7_DAYS:i,VIEW_COMPANY_DASHBOARD_MONTHLY_SALE_TREND:a,VIEW_LOW_STOCK_ALERTS:l,VIEW_RECENT_ACTIVITIES:y}=this.PERMISSIONS;this.hasPermission(e)&&this.getCompanyStats(),this.hasPermission(i)&&this.getWeeklyJobStats(),this.hasPermission(a)&&this.getMonthlySaleTrend(),this.hasPermission(l)&&this.getLowStockInventory(),this.hasPermission(y)&&this.getRecentActivities(),this.storageService.isEquipmentOnlyPackage&&this.statsCards.forEach(A=>{A.title!=="Equipment Maintenance Alert"&&(A.disabled=!0)})}static \u0275fac=function(i){return new(i||s)(f(N),f(U),f(Xe),f(D),f(le),f(se),f(j),f(H))};static \u0275cmp=M({type:s,selectors:[["app-main-dashboard"]],viewQuery:function(i,a){if(i&1&&$e(xt,5)(St,5),i&2){let l;Ee(l=Re())&&(a.inventoryChartRef=l.first),Ee(l=Re())&&(a.jobsChartRef=l.first)}},features:[z([D,j]),Je],decls:19,vars:10,consts:[["inventoryChart",""],["jobsChart",""],[1,"page-container"],[1,"page-header"],[1,"left-section"],[1,"page-heading"],[1,"right-section"],[1,"filter-btn",3,"click"],["path","assets/images/common/box-filter-icon.svg"],[1,"page-content"],[1,"payment-warning-banner"],[1,"stats-cards-grid"],[1,"charts-container"],[1,"chart-card","inventory-chart"],["class","chart-card jobs-chart",4,"ngIf"],[1,"bottom-section"],[1,"recent-activity-card"],[1,"low-stock-card"],[3,"routerLink"],["class","stats-card",3,"disabled",4,"ngFor","ngForOf"],[1,"stats-card"],[1,"stats-card__header"],[3,"path"],[1,"stats-card__info"],[1,"stats-card__title"],[1,"stats-card__value"],[1,"stats-card__divider"],[1,"stats-card__features"],["class","stats-card__feature-row",4,"ngFor","ngForOf"],[1,"stats-card__feature-row"],[1,"stats-card__feature-label"],[1,"stats-card__feature-value"],[1,"chart-header"],[1,"chart-title"],[1,"chart-content"],[1,"chart-card","jobs-chart"],[1,"donut-wrapper"],[1,"section-header"],[1,"section-title"],[1,"view-all-link",3,"routerLink"],[1,"activity-table","scrollbar-8"],[1,"uppercase"],[4,"ngFor","ngForOf"],[4,"ngIf"],[1,"batch-code-tooltip"],[3,"type"],[1,"batch-code-tooltip__content"],[3,"click","type"],[1,"stock-items"],["class","stock-item",4,"ngFor","ngForOf"],[1,"stock-item"],[1,"item-info"],[1,"item-image"],[3,"src","alt"],[1,"item-details"],[1,"item-name"],[1,"item-stock"],[1,"current"],[1,"stock-bar"],[1,"stock-fill"],[1,"item-action"],[1,"threshold"],[1,"reorder-btn",3,"click"]],template:function(i,a){i&1&&(r(0,"div",2)(1,"div",3)(2,"div",4)(3,"div",5),c(4,"Dashboard"),o()(),r(5,"div",6)(6,"div",7),b("click",function(){return a.openFilterDialog()}),h(7,"app-icon",8),r(8,"span"),c(9,"Filter"),o()()()(),r(10,"div",9),S(11,Mt,9,10,"div",10),S(12,kt,2,1,"div",11),r(13,"div",12),S(14,Tt,8,3,"div",13),_(15,Dt,9,4,"div",14),o(),r(16,"div",15),S(17,Lt,33,29,"div",16),S(18,Jt,11,10,"div",17),o()()()),i&2&&(n(11),w(a.isPaymentSuspended?11:-1),n(),w(a.hasPermission(a.PERMISSIONS.VIEW_COMPANY_DASHBOARD_STATS)?12:-1),n(),E("disabled",a.storageService.isEquipmentOnlyPackage),n(),w(a.hasPermission(a.PERMISSIONS.VIEW_COMPANY_DASHBOARD_MONTHLY_SALE_TREND)?14:-1),n(),g("ngIf",a.hasPermission(a.PERMISSIONS.VIEW_COMPANY_DASHBOARD_JOBS_LAST_7_DAYS)),n(),E("disabled",a.storageService.isEquipmentOnlyPackage),n(),w(a.hasPermission(a.PERMISSIONS.VIEW_RECENT_ACTIVITIES)?17:-1),n(),w(a.hasPermission(a.PERMISSIONS.VIEW_LOW_STOCK_ALERTS)?18:-1))},dependencies:[L,O,F,I,k,Ze,Ge,fe,$,Ye,B,ot,Q,he],styles:[".page-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center}.page-header[_ngcontent-%COMP%] .right-section[_ngcontent-%COMP%]{display:flex;align-items:center}.page-header[_ngcontent-%COMP%] .filter-btn[_ngcontent-%COMP%]{width:12s0px;height:35px;background-color:#0a5fba;border:none;border-radius:.5rem;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .3s;padding-right:20px}.page-header[_ngcontent-%COMP%] .filter-btn[_ngcontent-%COMP%] app-icon[_ngcontent-%COMP%]{height:34px;display:flex;align-items:center;justify-content:end}.page-header[_ngcontent-%COMP%] .filter-btn[_ngcontent-%COMP%] app-icon[_ngcontent-%COMP%] svg{height:40px;width:30px;fill:#fff}.page-header[_ngcontent-%COMP%] .filter-btn[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{color:#fff;font-size:var(--fs-regular, 1rem);font-weight:var(--fw-medium, 500)}.page-header[_ngcontent-%COMP%] .filter-btn[_ngcontent-%COMP%]:hover{opacity:.9;transform:translateY(-1px);box-shadow:0 4px 8px #0a5fba4d}.page-header[_ngcontent-%COMP%] .filter-btn[_ngcontent-%COMP%]:active{transform:translateY(0)}.payment-warning-banner[_ngcontent-%COMP%]{margin-bottom:1.5rem;padding:1rem 1.25rem;border:1px solid #fda29b;border-radius:.75rem;background:#fef3f2;color:#b42318;font-size:var(--fs-regular);font-weight:var(--fw-medium);line-height:1.5}.payment-warning-banner[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:#912018;font-weight:var(--fw-semi-bold);text-decoration:underline}.payment-warning-banner[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{color:#7a271a}.main-dashboard-main[_ngcontent-%COMP%]{width:100%;display:flex;flex-direction:column;gap:1.5rem}.stats-cards-grid[_ngcontent-%COMP%]{width:100%;display:grid;grid-template-columns:repeat(4,1fr);gap:1.25em}@media(max-width:1200px){.stats-cards-grid[_ngcontent-%COMP%]{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.stats-cards-grid[_ngcontent-%COMP%]{grid-template-columns:1fr}}.stats-card[_ngcontent-%COMP%]{background:var(--white-original);border:1px solid var(--light-gray);border-radius:.75rem;padding:1.25rem 1.5rem;box-shadow:var(--border-shadow);display:flex;flex-direction:column;
1transition:box-shadow .2s ease}.stats-card.disabled[_ngcontent-%COMP%]{opacity:.5}.stats-card[_ngcontent-%COMP%]:hover{box-shadow:0 4px 12px #00000014}.stats-card__header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.875rem}.stats-card__icon[_ngcontent-%COMP%]{width:48px;height:48px;min-width:48px;border-radius:50%;display:flex;align-items:center;justify-content:center}.stats-card__icon[_ngcontent-%COMP%] svg{width:22px;height:22px}.stats-card__info[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.125rem}.stats-card__title[_ngcontent-%COMP%]{font-size:var(--fs-small);font-weight:var(--fw-medium);color:var(--dark-gray);line-height:1.3}.stats-card__value[_ngcontent-%COMP%]{font-size:var(--fs-heading-xl);font-weight:var(--fw-bold);color:var(--medium-black);line-height:1.2}.stats-card__divider[_ngcontent-%COMP%]{border:none;border-top:1px solid var(--light-gray);margin:1rem 0}.stats-card__features[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.5rem}.stats-card__feature-row[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center}.stats-card__feature-label[_ngcontent-%COMP%]{font-size:var(--fs-small);font-weight:var(--fw-regular);color:var(--dark-gray)}.stats-card__feature-value[_ngcontent-%COMP%]{font-size:var(--fs-small);font-weight:var(--fw-semi-bold);color:var(--medium-black)}.charts-container[_ngcontent-%COMP%]{width:100%;display:grid;grid-template-columns:repeat(auto-fit,minmax(550px,1fr));gap:1em;margin-top:1.5rem;min-width:0}.charts-container.disabled[_ngcontent-%COMP%]{opacity:.5}@media(max-width:1024px){.charts-container[_ngcontent-%COMP%]{grid-template-columns:1fr}}.chart-card[_ngcontent-%COMP%]{background:var(--white-original);border:1px solid var(--light-gray);border-radius:.75rem;padding:1.5rem;display:flex;flex-direction:column;gap:1.5rem;box-shadow:var(--border-shadow);max-width:100%;min-width:0;box-sizing:border-box}.chart-card.inventory-chart[_ngcontent-%COMP%] .chart-content[_ngcontent-%COMP%] canvas[_ngcontent-%COMP%]{max-height:18.75rem}.chart-card.jobs-chart[_ngcontent-%COMP%] .chart-content[_ngcontent-%COMP%]{display:flex;gap:2rem;align-items:center;justify-content:center}.chart-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center}.chart-title[_ngcontent-%COMP%]{font-size:var(--fs-heading-sm);font-weight:var(--fw-semi-bold);color:var(--medium-black);margin:0}.chart-content[_ngcontent-%COMP%] canvas[_ngcontent-%COMP%]{max-height:17.5rem}.donut-wrapper[_ngcontent-%COMP%]{position:relative;width:15rem;height:15rem;flex-shrink:0}.jobs-legend[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem}.jobs-legend[_ngcontent-%COMP%] .legend-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.75rem}.jobs-legend[_ngcontent-%COMP%] .legend-dot[_ngcontent-%COMP%]{width:1rem;height:1rem;border-radius:50%;flex-shrink:0}.jobs-legend[_ngcontent-%COMP%] .legend-dot.completed[_ngcontent-%COMP%]{background-color:#5b8def}.jobs-legend[_ngcontent-%COMP%] .legend-dot.active[_ngcontent-%COMP%]{background-color:#fdb022}.jobs-legend[_ngcontent-%COMP%] .legend-label[_ngcontent-%COMP%]{font-size:var(--fs-regular);font-weight:var(--fw-medium);color:var(--medium-black)}.bottom-section[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(550px,1fr));gap:1em;margin-top:1.5rem}.bottom-section.disabled[_ngcontent-%COMP%]{opacity:.5}@media(max-width:1024px){.bottom-section[_ngcontent-%COMP%]{grid-template-columns:1fr}}.recent-activity-card[_ngcontent-%COMP%], .low-stock-card[_ngcontent-%COMP%]{background:var(--white-original);border:1px solid var(--light-gray);border-radius:.75rem;padding:1.5rem;box-shadow:var(--border-shadow);max-width:100%;min-width:0;box-sizing:border-box}.low-stock-card[_ngcontent-%COMP%]{max-height:max-content}.section-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.section-title[_ngcontent-%COMP%]{font-size:var(--fs-heading-sm);font-weight:var(--fw-semi-bold);color:var(--medium-black);margin:0}.view-all-link[_ngcontent-%COMP%]{font-size:var(--fs-regular);font-weight:var(--fw-medium);color:var(--primary);text-decoration:none;cursor:pointer}.view-all-link[_ngcontent-%COMP%]:hover{text-decoration:underline}.activity-table[_ngcontent-%COMP%]{overflow-x:scroll}.activity-table[_ngcontent-%COMP%] table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse}.activity-table[_ngcontent-%COMP%] table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] th[_ngcontent-%COMP%]{text-align:left;font-size:var(--fs-small);font-weight:var(--fw-semi-bold);color:var(--dark-gray);padding:.75rem .5rem;border-bottom:1px solid var(--light-gray);text-transform:uppercase}.activity-table[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]{border-bottom:1px solid var(--light-gray)}.activity-table[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child{border-bottom:none}.activity-table[_ngcontent-%COMP%] table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] td[_ngcontent-%COMP%]{padding:1rem .5rem;font-size:var(--fs-regular);font-weight:var(--fw-regular);color:var(--medium-black)}.view-btn[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.375rem;padding:.375rem .75rem;background:var(--primary-dark-gradient);color:var(--white-original);border:none;border-radius:.375rem;font-size:var(--fs-regular);font-weight:var(--fw-medium);cursor:pointer;transition:all .3s}.view-btn[_ngcontent-%COMP%] app-icon[_ngcontent-%COMP%]{width:1rem;height:1rem}.view-btn[_ngcontent-%COMP%]:hover{transform:translateY(-.0625rem);box-shadow:0 .25rem .5rem #0a5fba4d}.stock-items[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem}.stock-item[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1rem;border:1px solid var(--light-gray);border-radius:.5rem}.item-info[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.75rem;flex:1}.item-image[_ngcontent-%COMP%]{width:3rem;height:3rem;border-radius:.375rem;overflow:hidden;background:var(--bg-gray);flex-shrink:0}.item-image[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%;height:100%;object-fit:cover}.item-details[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;gap:.375rem}
1.item-name[_ngcontent-%COMP%]{font-size:var(--fs-regular);font-weight:var(--fw-semi-bold);color:var(--medium-black)}.item-stock[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem}.item-stock[_ngcontent-%COMP%] .current[_ngcontent-%COMP%]{font-size:var(--fs-small);font-weight:var(--fw-regular);color:var(--dark-gray);min-width:5rem}.stock-bar[_ngcontent-%COMP%]{flex:1;height:.375rem;background:var(--light-gray);border-radius:.25rem;overflow:hidden;max-width:10rem}.stock-fill[_ngcontent-%COMP%]{height:100%;background:var(--english-red);border-radius:.25rem;transition:width .3s}.item-action[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:flex-end;gap:.5rem}.threshold[_ngcontent-%COMP%]{font-size:var(--fs-small);font-weight:var(--fw-regular);color:var(--dark-gray)}.reorder-btn[_ngcontent-%COMP%]{padding:.375rem .75rem;background:var(--primary-dark-gradient);color:var(--white-original);border:none;border-radius:.375rem;font-size:var(--fs-regular);font-weight:var(--fw-medium);cursor:pointer;transition:all .3s}.reorder-btn[_ngcontent-%COMP%]:hover{transform:translateY(-.0625rem);box-shadow:0 .25rem .5rem #0a5fba4d}"]})};var ke=class extends ue{time="";activityType="";constructor(t={}){super(t),t.time&&(this.time=t.time),t.activityType&&(this.activityType=t.activityType)}};function Wt(s,t){if(s&1&&(r(0,"th"),c(1),d(2,"translate"),o()),s&2){let e=t.$implicit;n(),p(m(2,1,e))}}function zt(s,t){if(s&1&&(r(0,"span",17),c(1),r(2,"span",19)(3,"span")(4,"strong"),c(5),d(6,"translate"),o(),c(7),o(),r(8,"span")(9,"strong"),c(10),d(11,"translate"),o(),c(12),o(),r(13,"span")(14,"strong"),c(15),d(16,"translate"),o(),c(17),d(18,"enumToKey"),d(19,"translate"),o()()()),s&2){let e=u().$implicit,i=u();n(),v(" ",i.getBatchCode(e)," "),n(4),v("",m(6,7,"unitValue"),":"),n(2),v(" ",i.getActivityUnitValue(e)),n(3),v("",m(11,9,"quantity"),":"),n(2),v(" ",i.getActivityQuantity(e)),n(3),v("",m(16,11,"activityType"),":"),n(2),v(" ",m(19,15,m(18,13,e.type)))}}function Ut(s,t){s&1&&c(0," - ")}function $t(s,t){if(s&1){let e=P();r(0,"div",18)(1,"app-table-action",20),b("click",function(){C(e);let a=u().$implicit,l=u();return x(l.goToDetail(a.jobInventory.inventory.id))}),o()()}if(s&2){let e=u(2);n(),g("type",e.TABLE_ACTIONS.VIEW)}}function Qt(s,t){if(s&1&&(r(0,"tr")(1,"td"),c(2),d(3,"default"),o(),r(4,"td"),c(5),d(6,"enumToKey"),d(7,"translate"),o(),r(8,"td"),c(9),o(),r(10,"td"),S(11,zt,20,17,"span",17)(12,Ut,1,0),o(),r(13,"td"),c(14),o(),r(15,"td"),c(16),o(),r(17,"td"),c(18),o(),r(19,"td"),c(20),o(),r(21,"td"),c(22),o(),r(23,"td"),S(24,$t,2,1,"div",18),o()()),s&2){let e=t.$implicit,i=u();n(2),p(m(3,10,e.jobInventory==null||e.jobInventory.inventory==null?null:e.jobInventory.inventory.materialName)),n(3),p(m(7,14,m(6,12,e.type))),n(4),p(i.getPerformedBy(e)),n(2),w(i.getBatchCode(e)!=="-"?11:12),n(3),p(i.getUnitName(e)),n(2),p(i.getActivityUnitValue(e)),n(2),p(i.getLocation(e)),n(2),p(i.getTotalCost(e)),n(2),p(i.getActivityQuantity(e)),n(2),w(e.jobInventory&&e.jobInventory.inventory?24:-1)}}function Ht(s,t){s&1&&h(0,"app-data-not-found")}var Te=class s{constructor(t,e,i,a){this.routerService=t;this.dialogService=e;this.dashboardService=i;this.loaderService=a}routerService;dialogService;dashboardService;loaderService;columns=["materialName","activityType","performedBy","batchCode","unit","pricePerUnit","location","totalCost","materialQuantity","action"];items=[];filters=new ke;TABLE_ACTIONS=oe;onPageChange(t){this.filters.page=t,this.getRecentActivities()}onPerPageChange(t){this.filters.limit=t,this.getRecentActivities()}viewActivity(t){this.routerService.navigate("/app/inventory/detail",{activityType:t.activityType,details:t.details,jobPerson:t.jobPerson})}openFilterDialog(){let e={fields:[{label:"activityType",key:"activityType",type:"select",options:[{label:"materialPulled",value:"Material Pulled"},{label:"materialReturned",value:"Material Returned"},{label:"Equipment Checkout",value:"Equipment Checkout"},{label:"Job Closed",value:"Job Closed"}]},{label:"timeRange",key:"time",type:"select",options:[{label:"Last Hour",value:"last_hour"},{label:"Last 24 Hours",value:"last_24_hours"},{label:"Last 7 Days",value:"last_7_days"},{label:"Last 30 Days",value:"last_30_days"}]}],formData:{time:this.filters.time,activityType:this.filters.activityType}};this.dialogService.openDialog(be,{data:e}).afterClosed().pipe(te(Boolean)).subscribe({next:a=>{this.filters.time=a.time,this.filters.activityType=a.activityType}})}getFilters(){let t={page:this.filters.page,limit:this.filters.limit,search:this.filters.search};return this.filters.time&&(t.time=this.filters.time),this.filters.activityType&&(t.activityType=this.filters.activityType),t}getRecentActivities(){let t=this.getFilters();this.dashboardService.getRecentActivities(t).subscribe({next:e=>{let{isSuccess:i=!1,data:a,paginator:l}=e;i&&(this.items=a,this.filters.totalPages=l.totalPages,this.filters.totalItems=l.totalItems)}})}firstValue(t){return t.find(e=>e!=null&&e!=="")}getBatchCode(t){let e=t;
1return this.firstValue([t.metadata?.batchCode,e.batch?.batchCode,e.inventoryBatch?.batchCode,e.jobInventory?.inventoryBatch?.batchCode])||"-"}getUnitName(t){let e=t;return this.firstValue([e.jobInventory?.inventory?.unit?.name,e.inventory?.unit?.name,e.unit?.name,e.metadata?.unitName,e.metadata?.unit])||"-"}getActivityUnitValue(t){return T(this.getRawUnitPrice(t))}getRawUnitPrice(t){let e=t;return this.firstValue([e.batch?.unitPrice,e.inventoryBatch?.unitPrice,e.jobInventory?.inventoryBatch?.unitPrice,t.metadata?.unitPrice,t.metadata?.unitValue])}getPerformedBy(t){let e=t;return this.firstValue([t.user?.name,e.creator?.name,e.createdBy?.name])||"-"}getLocation(t){let e=t;return this.firstValue([e.warehouse?.name,e.batch?.warehouse?.name,e.jobInventory?.warehouse?.name,e.metadata?.warehouseName,e.metadata?.locationName,e.metadata?.source?.warehouseName,e.metadata?.destination?.warehouseName])||"-"}getActivityQuantity(t){let e=t;return this.firstValue([t.metadata?.quantity,e.jobInventory?.quantity,e.quantity])||"-"}getTotalCost(t){let e=Number(this.getRawUnitPrice(t)),i=Number(this.getActivityQuantity(t));return Number.isNaN(e)||Number.isNaN(i)?"-":T(e*i)}goToDetail(t){this.routerService.navigate("/app/inventory/detail",{id:t})}ngOnInit(){this.getRecentActivities()}static \u0275fac=function(e){return new(e||s)(f(U),f(N),f(D),f(H))};static \u0275cmp=M({type:s,selectors:[["app-all-recent-activities"]],features:[z([D])],decls:29,vars:15,consts:[[1,"page-container"],[1,"page-header"],[1,"left-section"],[1,"page-heading"],[1,"page-description"],[1,"page-content"],[1,"filter-section"],[1,"search-section","section-bordered-shadow"],["type","search",3,"placeholder"],[1,"right-section"],[1,"filter-icon"],["path","assets/images/common/box-search-icon.svg"],[1,"data-table"],[1,"bottom-border-cells"],[4,"ngFor","ngForOf"],[4,"ngIf"],[3,"pageChange","itemsPerPageChange","currentPage","totalItems","itemsPerPage"],[1,"batch-code-tooltip"],[1,"table-action-btns"],[1,"batch-code-tooltip__content"],[3,"click","type"]],template:function(e,i){e&1&&(r(0,"div",0),h(1,"app-back-navigation"),r(2,"div",1)(3,"div",2)(4,"div",3),c(5),d(6,"translate"),o(),r(7,"div",4),c(8),d(9,"translate"),o()()(),r(10,"div",5)(11,"div",6)(12,"div",2)(13,"div",7),h(14,"input",8),d(15,"translate"),o()(),r(16,"div",9)(17,"div",10),h(18,"app-icon",11),o()()(),r(19,"div",12)(20,"table",13)(21,"thead")(22,"tr"),_(23,Wt,3,3,"th",14),o()(),r(24,"tbody"),_(25,Qt,25,16,"tr",14),o()()(),ne(26),_(27,Ht,1,0,"app-data-not-found",15),ae(),r(28,"app-pagination",16),b("pageChange",function(l){return i.onPageChange(l)})("itemsPerPageChange",function(l){return i.onPerPageChange(l)}),o()()()),e&2&&(n(5),p(m(6,9,"allRecentActivities")),n(3),p(m(9,11,"allRecentActivitiesDescription")),n(6),g("placeholder",m(15,13,"searchActivity...")),n(9),g("ngForOf",i.columns),n(2),g("ngForOf",i.items),n(2),g("ngIf",!i.loaderService.loading()&&!i.items.length),n(),g("currentPage",i.filters.page)("totalItems",i.filters.totalItems)("itemsPerPage",i.filters.limit))},dependencies:[L,O,F,I,fe,k,ve,_e,$,B,Q,he],encapsulation:2})};function Yt(s,t){if(s&1&&(r(0,"span",9),c(1),o()),s&2){let e=u(2);n(),p(e.inventory.warehouse.name)}}function qt(s,t){if(s&1&&(r(0,"span",11),c(1),o()),s&2){let e=t.$implicit;n(),p(e.name)}}function Kt(s,t){if(s&1){let e=P();r(0,"div",1)(1,"div",2)(2,"img",3),b("error",function(a){C(e);let l=u();return x(l.onImageNotFound(a))}),o()(),r(3,"div",4)(4,"div",5)(5,"span",6),c(6),o(),r(7,"span",7),c(8),d(9,"enumToKey"),d(10,"translate"),o()(),r(11,"div",8),c(12),o(),S(13,Yt,2,1,"span",9),r(14,"div",10),ze(15,qt,2,1,"span",11,We),o(),r(17,"div",12)(18,"div",13)(19,"span",14),c(20),d(21,"translate"),o(),r(22,"span",15),c(23),o()(),r(24,"div",13)(25,"span",14),c(26),d(27,"translate"),o(),r(28,"span",15),c(29),o()()(),h(30,"app-progress-bar",16),r(31,"button",17),b("click",function(){C(e);let a=u();return x(a.onReorder())}),c(32),d(33,"translate"),o()()()}if(s&2){let e=u();n(2),g("src",e.inventory.media==null?null:e.inventory.media.baseUrlPath,ie)("alt",e.inventory.materialName),n(4),p(e.inventory.materialName),n(2),p(m(10,15,m(9,13,e.inventory.status))),n(4),p(e.inventory.unit.name),n(),w(e.inventory.warehouse?13:-1),n(2),Ue(e.inventory.categories),n(5),v("",m(21,17,"current"),": "),n(3),p(e.inventory.stock),n(3),v("",m(27,19,"threshold"),": "),n(3),p(e.inventory.minimumStockAlert),n(),g("progress",e.stockPercentage)("showProgressLabel",!1),n(2),v(" ",m(33,21,"reorder")," ")}}var De=class s{inventory=new at;reorder=new Ve;get stockPercentage(){return this.inventory.stock/this.inventory.minimumStockAlert*100}onReorder(){this.reorder.emit(this.inventory)}onImageNotFound(t){t.target.src="assets/images/common/image-placeholder.jpg"}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=M({type:s,selectors:[["app-stock-card"]],inputs:{inventory:"inventory"},outputs:{reorder:"reorder"},decls:1,vars:1,consts:[["class","stock-card",4,"ngIf"],[1,"stock-card"],[1,"card-image"],[3,"error","src","alt"],[1,"card-content"],[1,"card-header"],[1,"item-name"],[1,"status-badge"],[1,"category"],[1,"status-badge","yellow"],[1,"categories-tiles"],[1,"status-badge","blue"],[1,"stock-info"],[1,"stock-item"],[1,"label"],[1,"value"],[3,"progress","showProgressLabel"],[1,"reorder-btn",3,"click"]],template:function(e,i){e&1&&_(0,Kt,34,23,"div",0),e&2&&g("ngIf",i.inventory)},dependencies:[O,I,k,st,B,Q],styles:[".stock-card[_ngcontent-%COMP%]{background:var(--white-original);border:1px solid var(--light-gray);border-radius:.75rem;overflow:hidden;box-shadow:var(--border-shadow);transition:transform .2s,box-shadow .2s;display:flex;flex-direction:column;height:100%}.stock-card[_ngcontent-%COMP%]:hover{transform:translateY(-.125rem);box-shadow:0 .5rem 1rem #0000001a}
1.itme-name[_ngcontent-%COMP%]{font-size:var(--fs-regular);font-weight:var(--fw-semi-bold)}.card-image[_ngcontent-%COMP%]{width:100%;height:12.5rem;overflow:hidden;background:var(--bg-gray);display:flex;align-items:center;justify-content:center;padding:1rem}.card-image[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%;height:100%;object-fit:cover}.card-content[_ngcontent-%COMP%]{padding:1.25rem;display:flex;flex-direction:column;gap:.7rem;flex:1}.card-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem}.item-name[_ngcontent-%COMP%]{font-size:var(--fs-heading-sm);font-weight:var(--fw-semi-bold);color:var(--medium-black);margin:0;flex:1;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.3}.category[_ngcontent-%COMP%]{font-size:var(--fs-regular);font-weight:var(--fw-regular);color:var(--dark-gray)}.stock-info[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;gap:1rem}.stock-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.25rem}.stock-item[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{font-size:var(--fs-regular);font-weight:var(--fw-regular);color:var(--dark-gray)}.stock-item[_ngcontent-%COMP%] .value[_ngcontent-%COMP%]{font-size:var(--fs-regular);font-weight:var(--fw-semi-bold);color:var(--medium-black)}.progress-bar[_ngcontent-%COMP%]{width:100%;height:.5rem;background:var(--light-gray);border-radius:.25rem;overflow:hidden}.progress-fill[_ngcontent-%COMP%]{height:100%;transition:width .3s ease;border-radius:.25rem}.reorder-btn[_ngcontent-%COMP%]{width:100%;padding:.75rem;background:var(--primary-dark-gradient);color:var(--white-original);border:none;border-radius:.5rem;font-size:var(--fs-regular);font-weight:var(--fw-semi-bold);cursor:pointer;transition:all .3s}.reorder-btn[_ngcontent-%COMP%]:hover{transform:translateY(-.0625rem);box-shadow:0 .25rem .5rem #0a5fba4d}.reorder-btn[_ngcontent-%COMP%]:active{transform:translateY(0)}.categories-tiles[_ngcontent-%COMP%]{width:100%;height:28px;display:flex;gap:.5rem;flex-wrap:wrap}"]})};function Gt(s,t){if(s&1){let e=P();r(0,"app-stock-card",18),b("reorder",function(a){C(e);let l=u();return x(l.goToReorder(a))}),o()}if(s&2){let e=t.$implicit;g("inventory",e)}}function Zt(s,t){s&1&&h(0,"app-data-not-found")}var Ae=class s{constructor(t,e,i,a,l,y,A,ee,Y){this.inventoryService=t;this.loaderService=e;this.routerService=i;this.route=a;this.dialogService=l;this.translationService=y;this.warehousesService=A;this.utilService=ee;this.categoriesService=Y;console.log(this.filters,"this.filters")}inventoryService;loaderService;routerService;route;dialogService;translationService;warehousesService;utilService;categoriesService;inventories=[];filters=new Be;warehouses=[];units=[];categories=[];goToReorder(t){let e={id:t.id};this.routerService.navigate("/app/dashboard/restock-inventory",e)}getLowStockInventory(){let t=this.getFilters();this.inventoryService.getLowStockInventory(t).subscribe({next:e=>{let{isSuccess:i=!1,data:a}=e;i&&(this.inventories=a)}})}getAllCategories(){this.categoriesService.getAllCategories().subscribe({next:t=>{let{isSuccess:e=!1,data:i=[]}=t;e&&(this.categories=i)}})}exportLowStockInventory(){let t=this.getFilters(!0);this.inventoryService.exportLowStockInventory(t).subscribe({next:e=>{this.utilService.downloadBinaryFile(e,"low-stock-inventory.xlsx")}})}onPageChange(t){this.filters.page=t,this.setQueryParams()}onPerPageChange(t){this.filters.page=1,this.filters.limit=t,this.setQueryParams()}onSearchChange(t){t||this.handleSearch()}handleSearch(){this.filters.page=1,this.setQueryParams()}subscribeQueryParams(){this.route.queryParams.subscribe({next:t=>{let e=new Be(t);this.filters.page=e.page,this.filters.limit=e.limit,this.filters.search=e.search,this.filters.warehouseId=e.warehouseId,this.filters.categoryId=e.categoryId,this.filters.unitId=e.unitId,this.getLowStockInventory()}})}setQueryParams(){let t=this.getFilters();this.routerService.navigate("/app/dashboard/low-stock-alerts",t)}getFilters(t=!1){let e={page:this.filters.page,limit:this.filters.limit,search:this.filters.search};return t&&(delete e.limit,delete e.page),e.search||delete e.search,this.filters.warehouseId&&(e.warehouseId=this.filters.warehouseId),this.filters.unitId&&(e.unitId=this.filters.unitId),this.filters.categoryId&&(e.categoryId=this.filters.categoryId),e}openFilterDialog(){let e={fields:[{label:"unitType",key:"unitId",type:"select",options:this.units.map(a=>J(V({},a),{label:a.name,value:a.id}))},{label:"selectWarehouseServiceTruck",key:"warehouseId",type:"select",options:this.warehouses.map(a=>{let l=a.locationType.toLowerCase(),y=this.translationService.getTranslation(l);return{label:`${a.name} (${y})`,value:a.id}})},{label:"category",key:"categoryId",type:"select",options:this.categories.map(a=>({label:a.name,value:a.id}))}],formData:{unitId:this.filters.unitId,warehouseId:this.filters.warehouseId,categoryId:this.filters.categoryId}};this.dialogService.openDialog(be,e,!0).afterClosed().pipe(te(Boolean)).subscribe({next:a=>{this.filters.page=1,this.filters.unitId=a.unitId,this.filters.warehouseId=a.warehouseId,this.filters.categoryId=a.categoryId,this.setQueryParams()}})}getAllWarehouses(){this.warehousesService.getAllWarehouses().subscribe({next:t=>{let{isSuccess:e,data:i}=t;e&&(this.warehouses=i)}})}getInventoryUnits(){this.inventoryService.getInventoryUnits().subscribe({next:t=>{let{isSuccess:e=!1,data:i}=t;e&&(this.units=i)}})}get areFiltersApplied(){return["unitId","warehouseId","categoryId"].some(e=>this.filters[e])}ngOnInit(){this.getAllWarehouses(),this.getInventoryUnits(),this.getAllCategories(),this.subscribeQueryParams()}static \u0275fac=function(e){return new(e||s)(f(j),f(H),f(U),f(Ke),f(N),f(se),f(ye),f(le),f(Ce))};static \u0275cmp=M({type:s,selectors:[["app-low-stock-alert"]],features:[z([N,j,ye,Ce])],decls:28,vars:17,consts:[[1,"page-container"],[1,"page-header"],[1,"left-section"],[1,"page-heading"],[1,"right-section"],[1,"export-btn"],[1,"rounded-btn","primary-gradient",3,"click"],[1,"page-content"],[1,"filter-section"],[1,"search-section","section-bordered-shadow"],["type","search",3,"keyup.enter","ngModelChange","placeholder","ngModel"],[1,"filter-icon",3,"click"],["path","assets/images/common/box-search-icon.svg"],["path","assets/images/common/box-filter-icon.svg"],[1,"stock-cards-grid"],[3,"inventory","reorder",4,"ngFor","ngForOf"],[4,"ngIf"],[3,"pageChange","itemsPerPageChange","currentPage","totalItems","itemsPerPage"],[3,"reorder","inventory"]],template:function(e,i){e&1&&(r(0,"div",0),h(1,"app-back-navigation"),r(2,"div",1)(3,"div",2)(4,"div",3),c(5),d(6,"translate"),o()(),r(7,"div",4)(8,"div",5)(9,"button",6),b("click",function(){return i.exportLowStockInventory()}),c(10),d(11,"translate"),o()()()(),r(12,"div",7)(13,"div",8)(14,"div",2)(15,"div",9)(16,"input",10),d(17,"translate"),b("keyup.enter",function(){return i.handleSearch()}),Z("ngModelChange",function(l){return G(i.filters.search,l)||(i.filters.search=l),l}),b("ngModelChange",function(l){return i.onSearchChange(l)}),o()()(),r(18,"div",4)(19,"div",11),b("click",function(){return i.handleSearch()}),h(20,"app-icon",12),o(),r(21,"div",11),b("click",function(){return i.openFilterDialog()}),h(22,"app-icon",13),o()()(),r(23,"div",14),_(24,Gt,1,1,"app-stock-card",15),o(),ne(25),_(26,Zt,1,0,"app-data-not-found",16),ae(),r(27,"app-pagination",17),b("pageChange",function(l){return i.onPageChange(l)})("itemsPerPageChange",function(l){return i.onPerPageChange(l)}),o()()()),e&2&&(n(5),p(m(6,11,"lowStockAlerts")),n(5),p(m(11,13,"exportExcel")),n(6),g("placeholder",m(17,15,"search")),K("ngModel",i.filters.search),n(5),E("blink",i.areFiltersApplied),n(3),g("ngForOf",i.inventories),n(2),g("ngIf",!i.loaderService.loading()&&!i.inventories.length),n(),g("currentPage",i.filters.page)("totalItems",i.filters.totalItems)("itemsPerPage",i.filters.limit))},dependencies:[O,F,I,k,_e,De,$,L,pe,ce,de,me,ve,B],styles:[".stock-cards-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fill,minmax(18rem,1fr));gap:1.5rem;width:100%}@media(max-width:1400px){.stock-cards-grid[_ngcontent-%COMP%]{grid-template-columns:repeat(auto-fill,minmax(16rem,1fr))}}@media(max-width:1024px){.stock-cards-grid[_ngcontent-%COMP%]{grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));gap:1rem}}@media(max-width:768px){.stock-cards-grid[_ngcontent-%COMP%]{grid-template-columns:repeat(auto-fill,minmax(14rem,1fr))}}@media(max-width:480px){.stock-cards-grid[_ngcontent-%COMP%]{grid-template-columns:1fr}}"]})};var Vn=[{path:"",component:Oe},{path:"all-recent-activities",component:Te},{path:"low-stock-alerts",component:Ae},{path:"restock-inventory",component:lt}];export{Vn as DASHBOARD_ROUTES};
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.