bettertend/frontend/dist/assets/users-DxH_c7oY.js

2 lines
6.4 KiB
JavaScript

import{bk as _,r as f,c as o,aO as D}from"./index-BUdRbiwj.js";const w=new _;function ee(){const n=f({content:[],totalElements:0,totalPages:0,currentPage:0,pageSize:10}),i=f(null),u=f(!1),c=f(null),g=f({page:0,size:10,direction:"ASC",sortBy:"lastName",searchValue:"",searchFields:["firstName","lastName","email","phone","jobTitle"]}),x=f([]),M=o(()=>n.value.content.length>0),R=o(()=>n.value.totalElements),z=o(()=>n.value.currentPage),B=o(()=>n.value.totalPages),m=async(e={})=>{try{u.value=!0,c.value=null;const r={...g.value,...e},t=await w.searchUsers(r);return n.value=t,g.value={...r},t}catch(r){throw c.value=r.message||"Failed to search users",console.error("Error searching users:",r),r}finally{u.value=!1}},A=async()=>{try{u.value=!0,c.value=null;const e=await w.getUsersMini();return x.value=e,e}catch(e){throw c.value=e.message||"Failed to load users",console.error("Error loading mini users:",e),e}finally{u.value=!1}},j=async()=>await m(g.value),p=async e=>await m({...g.value,searchValue:e,page:0}),P=async e=>await m({...g.value,page:e}),S=async e=>await m({...g.value,size:e,page:0}),C=async(e,r="ASC")=>await m({...g.value,sortBy:e,direction:r,page:0}),h=async e=>{try{u.value=!0,c.value=null;const r=await w.getById(e);return i.value=r,r}catch(r){throw c.value=r.message||"Failed to get user details",console.error("Error getting user:",r),r}finally{u.value=!1}},d=async(e,r)=>{try{u.value=!0,c.value=null;const t=await w.updateProfile(e,r);i.value&&i.value.id===e&&(i.value=t);const v=n.value.content.findIndex(N=>N.id===e);return v!==-1&&(n.value.content[v]=t),t}catch(t){throw c.value=t.message||"Failed to update user profile",console.error("Error updating user profile:",t),t}finally{u.value=!1}},b=e=>{i.value=e},F=()=>{i.value=null},E=async(e,r)=>{try{u.value=!0,c.value=null;const t=await w.updateUserRole(e,r);i.value&&i.value.id===e&&(i.value.role=r);const v=n.value.content.findIndex(N=>N.id===e);return v!==-1&&(n.value.content[v].role=r),t}catch(t){throw c.value=t.message||"Failed to update user role",console.error("Error updating user role:",t),t}finally{u.value=!1}},T=async e=>{try{u.value=!0,c.value=null;const r=await w.toggleUserStatus(e);i.value&&i.value.id===e&&(i.value.enabled=!i.value.enabled);const t=n.value.content.findIndex(v=>v.id===e);return t!==-1&&(n.value.content[t].enabled=!n.value.content[t].enabled),r}catch(r){throw c.value=r.message||"Failed to toggle user status",console.error("Error toggling user status:",r),r}finally{u.value=!1}},I=async(e,r,t="")=>{try{if(u.value=!0,c.value=null,!y(e))throw new Error("One or more email addresses are invalid");return await w.inviteUsers(e,r,t)}catch(v){throw c.value=v.message||"Failed to send invitations",console.error("Error inviting users:",v),v}finally{u.value=!1}},y=e=>{if(!Array.isArray(e)||e.length===0)return!1;const r=/^[^\s@]+@[^\s@]+\.[^\s@]+$/;return e.every(t=>r.test(t))},O=e=>!(!e||!e.firstName||e.firstName.trim()===""||!e.lastName||e.lastName.trim()===""||!e.email||!y([e.email])),$=e=>e?`${e.firstName||""} ${e.lastName||""}`.trim():"",k=e=>e&&e.name||"",L=()=>{c.value=null},V=()=>u.value;return{users:o(()=>n.value),selectedUser:o(()=>i.value),loading:o(()=>u.value),error:o(()=>c.value),searchCriteria:o(()=>g.value),miniUsers:o(()=>x.value),hasUsers:M,totalUsers:R,currentPage:z,totalPages:B,searchUsers:m,loadMiniUsers:A,refreshUsers:j,updateSearchTerm:p,changePage:P,changePageSize:S,changeSorting:C,getUserById:h,updateUserProfile:d,selectUser:b,clearSelectedUser:F,updateUserRole:E,toggleUserStatus:T,inviteUsers:I,validateEmails:y,validateUserProfile:O,formatUserName:$,formatRoleName:k,clearError:L,isLoading:V}}const se=D("users",()=>{const{users:n,selectedUser:i,loading:u,error:c,searchCriteria:g,miniUsers:x,searchUsers:M,loadMiniUsers:R,getUserById:z,updateUserProfile:B,updateUserRole:m,toggleUserStatus:A,inviteUsers:j,refreshUsers:p,selectUser:P,clearSelectedUser:S,clearError:C}=ee(),h=f([]),d=f({role:"",status:"all",searchTerm:""}),b=f(!1),F=f("create"),E=f(!1),T=o(()=>n.value.content.filter(a=>a.enabled)),I=o(()=>n.value.content.filter(a=>!a.enabled)),y=o(()=>{const a={};return n.value.content.forEach(s=>{var U;const l=((U=s.role)==null?void 0:U.name)||"No Role";a[l]||(a[l]=[]),a[l].push(s)}),a}),O=o(()=>{let a=n.value.content;if(d.value.role&&(a=a.filter(s=>{var l;return((l=s.role)==null?void 0:l.name)===d.value.role})),d.value.status==="enabled"?a=a.filter(s=>s.enabled):d.value.status==="disabled"&&(a=a.filter(s=>!s.enabled)),d.value.searchTerm){const s=d.value.searchTerm.toLowerCase();a=a.filter(l=>{var U,q,G,H;return((U=l.firstName)==null?void 0:U.toLowerCase().includes(s))||((q=l.lastName)==null?void 0:q.toLowerCase().includes(s))||((G=l.email)==null?void 0:G.toLowerCase().includes(s))||((H=l.jobTitle)==null?void 0:H.toLowerCase().includes(s))})}return a}),$=o(()=>({total:n.value.totalElements,active:T.value.length,inactive:I.value.length,byRole:Object.keys(y.value).reduce((a,s)=>(a[s]=y.value[s].length,a),{})})),k=async()=>{try{await Promise.all([M(),R()])}catch(a){console.error("Failed to initialize users:",a)}},L=async(a={})=>{const s={...a,searchValue:d.value.searchTerm};return await M(s)},V=async a=>(d.value={...d.value,...a},await L()),e=async(a,s,l="")=>{const U=await j(a,s,l);return await p(),U},r=async(a,s)=>{const l=await B(a,s);return await K(l),l},t=async(a,s)=>{const l=await m(a,s);return await p(),l},v=async a=>{const s=await A(a);return await p(),s},N=(a=null,s="create")=>{a?(P(a),F.value=s):(S(),F.value="create"),b.value=!0},J=()=>{b.value=!1,S()},Q=()=>{E.value=!0},X=()=>{E.value=!1},K=a=>{if(!a)return;const s=h.value.findIndex(l=>l.id===a.id);s!==-1&&h.value.splice(s,1),h.value.unshift(a),h.value.length>10&&(h.value=h.value.slice(0,10))},Y=async a=>{const s=n.value.content.find(U=>U.id===a);if(s)return P(s),s;const l=await z(a);return await K(l),l},W=()=>{d.value={role:"",status:"all",searchTerm:""}},Z=()=>{W(),S(),C(),b.value=!1,E.value=!1,h.value=[]};return{users:n,selectedUser:i,loading:u,error:c,searchCriteria:g,miniUsers:x,recentUsers:o(()=>h.value),userFilters:o(()=>d.value),showUserModal:o(()=>b.value),userModalMode:o(()=>F.value),showInviteModal:o(()=>E.value),activeUsers:T,inactiveUsers:I,usersByRole:y,filteredUsers:O,userStats:$,initializeUsers:k,searchWithFilters:L,updateFilters:V,createUser:e,updateUser:r,changeUserRole:t,changeUserStatus:v,openUserModal:N,closeUserModal:J,openInviteModal:Q,closeInviteModal:X,addToRecentUsers:K,getUser:Y,clearFilters:W,resetStore:Z,searchUsers:M,loadMiniUsers:R,refreshUsers:p,selectUser:P,clearSelectedUser:S,clearError:C}});export{se as u};