1import{d as Q,a as G,r as p,m as S,g as v,h as s,w as l,an as Se,l as i,v as n,x as be,c as q,M as xe,o as Ce,f as se,n as ye,s as _,q as P,t as c,y as ke,Q as we,at as fe,J as $e,K as Ee,I as Ve,A as J,F as V,_ as Ue,a5 as Ie,af as De,j as Ne,V as Fe,i as X,k as Be,ak as Ae,aI as Pe,N as Me}from"./CSThdQoH.js";import{E as ze}from"./DaB4Xlpl.js";import{u as W}from"./Bw43wGCJ.js";import{B as Te}from"./BcUnhL2b.js";import{S as je}from"./KT0Yg6iS.js";import{V as Le}from"./CFg2gTUA.js";import{u as Re}from"./zuajsLph.js";import{a as Oe}from"./DiMi7WIw.js";import{C as Ye}from"./A4JQvlOs.js";import{V as qe,a as Z,b as Je,c as ee}from"./Dfc7wAPb.js";import"./C66TP-X3.js";import"./DSFLVKc-.js";import"./Ba4-DT8p.js";import"./Cy3Sa6ZO.js";import"./Dh0mt-hM.js";import"./HwCF4GhT.js";import"./BsPSxXxG.js";import"./D7Fhgg7J.js";import"./BloHBxqu.js";import"./ByH8-GRh.js";import"./BOP7VDnO.js";import"./Bj6vZdiE.js";import"./tI4w4w8m.js";import"./BI5JTX0D.js";import"./C7ZnVHZd.js";import"./goNDG_5b.js";import"./Cd_zsIEz.js";import"./Bhk9-Oel.js";import"./C97wxLwC.js";import"./C7tivgAQ.js";const We={class:"employee-schedule-data d-flex"},Qe={class:"w-md-25"},Ge=Q({__name:"EmployeeScheduleData",props:{modelValue:{type:Boolean},companyUuid:{},schedules:{},employeeUuid:{}},emits:["update:modelValue","schedules-updated","save-success","save-error"],setup($,{emit:x}){const C=$,t=x,{t:h}=G(),{createEmployeeSchedule:a}=W(),b=p(!1),E=p([]),k=f=>{E.value=f},y=async()=>{b.value=!0;try{C.employeeUuid?(await a(C.companyUuid,C.employeeUuid,E.value)).error?t("save-error",h("employees.scheduleUpdateError")):(t("schedules-updated",E.value),t("save-success",h("employees.scheduleUpdated"))):t("save-error",h("employees.noEmployeeUuid"))}catch{t("save-error",h("employees.scheduleUpdateError"))}finally{b.value=!1}};return(f,w)=>(v(),S("div",We,[s(Le,{ref:"formRef",onSubmit:be(y,["prevent"])},{default:l(()=>[s(je,{"show-title":!1,"show-presets":!0,"show-bulk-actions":!0,"show-summary":!0,"show-submit-button":!1,"initial-schedule":C.schedules,onChange:k,"horizontal-layout":!0},null,8,["initial-schedule"]),s(Se,{class:"d-flex justify-end pa-4"},{default:l(()=>[i("span",Qe,[s(Te,{label:n(h)("common.save"),action:y},null,8,["label"])])]),_:1})]),_:1},512)]))}}),He={class:"services-management"},Ke={class:"mb-4"},Xe={class:"d-flex align-center ga-3 mb-2"},Ze={class:"text-subtitle-1"},es={class:"text-body-2 text-grey"},ss={key:0,class:"text-center py-8"},ts={class:"text-body-2 text-grey mt-2"},as={key:1},ls={key:1,class:"services-list",style:{"max-height":"400px","overflow-y":"auto"}},os=["onClick"],rs={class:"d-flex flex-column",style:{cursor:"pointer"}},ns={class:"text-body-1 font-weight-medium"},is={key:0,class:"text-body-2 text-grey mt-1"},ds={class:"d-flex align-center ga-4 mt-2"},cs={class:"text-caption text-grey d-flex align-center"},us={class:"text-caption text-grey d-flex align-center"},ms={key:2,class:"d-flex justify-end ga-3 mt-6"},ps={class:"text-body-2"},vs=Q({__name:"ServiceManagement",props:{employee:{type:Object,default:null},companyUuid:{type:String,required:!0},initialSelectedServices:{type:Array,default:()=>[]},showActions:{type:Boolean,default:!0},autoLoad:{type:Boolean,default:!0}},emits:["services-changed","services-updated","employee-updated"],setup($,{expose:x,emit:C}){const t=$,h=C,{t:a}=G(),{getServicesList:b}=Re(),{updateEmployee:E}=W(),k=p(!1),y=p(!1),f=p(""),w=p([]),d=p([]),I=p([]),B=q(()=>t.employee?Oe(t.employee,a):null),D=q(()=>{if(!f.value)return w.value;const o=f.value.toLowerCase();return w.value.filter(u=>{var r;return u.name.toLowerCase().includes(o)||((r=u.description)==null?void 0:r.toLowerCase().includes(o))})}),A=q(()=>{const o=[...d.value].sort(),u=[...I.value].sort();return JSON.stringify(o)!==JSON.stringify(u)}),z=(o,u)=>{y.value||(u?d.value.includes(o)||d.value.push(o):d.value=d.value.filter(r=>r!==o),h("services-changed",d.value))},T=async()=>{var o,u;k.value=!0;try{const r=await b(t.companyUuid,1,100,"name","ASC");w.value=r.data||[];const N=((u=(o=t.employee)==null?void 0:o.services)==null?void 0:u.map(R=>R.uuid))||t.initialSelectedServices||[];d.value=[...N],I.value=[...N],h("services-changed",d.value)}
1catch(r){console.error("Error loading services:",r),V().setSnackbar(a("services.errors.loadFailed"),"error")}finally{k.value=!1}},j=async()=>{if(!(!t.employee||!A.value)){y.value=!0;try{if(!t.employee.address)throw new Error("Employee address is undefined");await E(t.companyUuid,t.employee.uuid,t.employee.address,t.employee.status||"active",d.value,!1);const o=w.value.filter(r=>d.value.includes(r.uuid)),u={...t.employee,services:o};h("employee-updated",u),h("services-updated",o),I.value=[...d.value],V().setSnackbar(a("employees.servicesUpdatedSuccessfully"),"success")}catch(o){console.error("Error updating employee services:",o),V().setSnackbar(a("employees.errors.updateServicesFailed"),"error")}finally{y.value=!1}}},L=()=>{d.value=[...I.value],h("services-changed",d.value)},H=o=>new Intl.NumberFormat("es-ES",{style:"currency",currency:"EUR"}).format(o/100);return x({loadServices:T,saveChanges:j,resetChanges:L,getSelectedServices:()=>w.value.filter(o=>d.value.includes(o.uuid)),getSelectedServiceIds:()=>d.value,hasChanges:A}),xe(()=>t.initialSelectedServices,o=>{o&&(d.value=[...o],I.value=[...o])}),Ce(()=>{t.autoLoad&&T()}),(o,u)=>(v(),S("div",He,[i("div",Ke,[i("div",Xe,[s(P,{color:"primary",size:"24"},{default:l(()=>u[1]||(u[1]=[_("$folder")])),_:1,__:[1]}),i("h6",Ze,c(n(a)("employees.manageServices")),1)]),i("p",es,c(B.value?n(a)("employees.selectServicesForEmployee",{name:B.value}):n(a)("employees.selectServicesForNewEmployee")),1)]),s(ke,{modelValue:f.value,"onUpdate:modelValue":u[0]||(u[0]=r=>f.value=r),placeholder:n(a)("services.searchServices"),"prepend-inner-icon":"$search",variant:"outlined",density:"compact",clearable:"",class:"mb-4"},null,8,["modelValue","placeholder"]),k.value?(v(),S("div",ss,[s(we,{indeterminate:"",color:"primary"}),i("p",ts,c(n(a)("common.loading")),1)])):(v(),S("div",as,[D.value.length===0?(v(),se(fe,{key:0,type:"info",variant:"tonal",density:"compact"},{default:l(()=>[_(c(f.value?n(a)("services.noServicesFound"):n(a)("services.noServicesAvailable")),1)]),_:1})):(v(),S("div",ls,[(v(!0),S($e,null,Ee(D.value,r=>(v(),S("div",{key:r.uuid,class:Ve(["service-item d-flex align-start ga-3 mb-3 pa-2",{"service-item--disabled":y.value}])},[s(Ye,{"model-value":d.value.includes(r.uuid),disabled:y.value,color:"primary",size:"medium","wrapper-class":"mt-1","onUpdate:modelValue":N=>z(r.uuid,N)},null,8,["model-value","disabled","onUpdate:modelValue"]),i("div",{class:"flex-grow-1",onClick:N=>!y.value&&z(r.uuid,!d.value.includes(r.uuid))},[i("div",rs,[i("span",ns,c(r.name),1),r.description?(v(),S("span",is,c(r.description),1)):ye("",!0),i("div",ds,[i("span",cs,[s(P,{size:"12",class:"mr-1"},{default:l(()=>u[2]||(u[2]=[_("$clock")])),_:1,__:[2]}),_(" "+c(r.duration)+"min ",1)]),i("span",us,[s(P,{size:"12",class:"mr-1"},{default:l(()=>u[3]||(u[3]=[_("$money")])),_:1,__:[3]}),_(" "+c(H(r.price)),1)])])])],8,os)],2))),128))]))])),$.showActions?(v(),S("div",ms,[s(J,{variant:"text",disabled:y.value,onClick:L},{default:l(()=>[_(c(n(a)("common.reset")),1)]),_:1},8,["disabled"]),s(J,{color:"primary",variant:"flat",disabled:!A.value||y.value,loading:y.value,onClick:j},{default:l(()=>[_(c(n(a)("common.save")),1)]),_:1},8,["disabled","loading"])])):A.value?(v(),se(fe,{key:3,type:"info",variant:"tonal",density:"compact",class:"mt-4"},{default:l(()=>[i("div",ps,c(n(a)("employees.servicesWillBeUpdated",{count:d.value.length})),1)]),_:1})):ye("",!0)]))}}),ys=Ue(vs,[["__scopeId","data-v-7374f9c3"]]),fs={class:"services-navigation pa-4"},_s={class:"d-flex justify-space-between align-center"},hs={class:"text-body-2 text-grey"},gs={class:"d-flex ga-3"},_e=Q({__name:"EmployeeCreationNavigation",props:{selectedCount:{type:Number,default:0},canProceed:{type:Boolean,default:!0},isFinalStep:{type:Boolean,default:!1}},emits:["continue","skip"],setup($){const{t:x}=G();return(C,t)=>(v(),S("div",fs,[s(Ie,{class:"mb-4"}),i("div",_s,[i("div",hs,c($.selectedCount>0?n(x)("employees.servicesSelectedMessage",{count:$.selectedCount}):n(x)("employees.noServicesSelected")),1),i("div",gs,[s(J,{variant:"text",onClick:t[0]||(t[0]=h=>C.$emit("skip"))},{default:l(()=>[_(c(n(x)("common.skip")),1)]),_:1}),s(J,{color:"primary",variant:"flat",disabled:!$.canProceed,onClick:t[1]||(t[1]=h=>C.$emit("continue"))},{default:l(()=>[_(c($.isFinalStep?n(x)("common.complete"):n(x)("common.continue")),1)]),_:1},8,["disabled"])])])]))}}),Ss={class:"text-h6 pl-4 pt-2 text-grey-darken-3"},bs={class:"d-flex align-center ga-3 pa-5 bg-tonal rounded-lg"},xs={class:"pa-3 bg-primary rounded-lg"},Cs={class:"text-primary text-h5"},ks={key:0,class:"text-center pa-8"},ws={class:"text-h6 text-grey-lighten-1 mb-2"},$s={class:"text-body-2 text-grey"},Es={key:1},Vs={key:0,class:"text-center pa-8"},Us={class:"text-h6 text-grey-lighten-1 mb-2"},Is={class:"text-body-2 text-grey"},Ds={key:1},it=Q({__name:"new-employee",emits:["set-title"],setup($,{emit:x}){const C=De(),t=q(()=>C.company),h=x,{t:a}=G(),b=p("personalData"),E=p(null),k=p(!1),y=p(),f=p(null),w=p([]),d=p({personalData:null,scheduleData:null}),I=p(!1),B=p(!1),D=p(""),A=e=>{d.value.personalData=e},z=async()=>{I.value&&d.value.personalData&&await ge()},T=e=>{I.value=e},j=e=>{},L=e=>{w.value=e},H=()=>{b.value="services"},o=()=>{b.value="services"},u=()=>{R("Empleado creado exitosamente con servicios asignados")},r=()=>{R("Empleado creado exitosamente")},N=async e=>{V().setSnackbar(e,"success"),b.value="services"},R=async e=>{if(w.value.length>0&&f.value)try{const{updateEmployee:g}=W();await g(t.value.uuid,f.value.uuid,f.value.address,f.value.status,w.value,!1)}catch(g){console.error("Error updating employee services:",g)}V().setSnackbar(e,"success");const m=Ae();E.value?await m.push(`/company/${t.value.uuid}/employees/${E.value}`):await m.push(`/company/${t.value.uuid}/employees`)},he=e=>{V().setSnackbar(e,"error")},ge=async()=>{var te,ae,le,oe,re,ne,ie,de,ce,ue,me,pe,ve;const e=d.value.personalData;
1let m=(e==null?void 0:e.birthdate)??null;if(m&&typeof m=="string")try{m=Pe(m).format("DD/MM/YYYY")}catch(F){console.error("Error formatting birthdate:",F),m=(e==null?void 0:e.birthdate)??null}else m=null;if(!e)return;B.value=!0,D.value="";const g={address:{title:e.title,first_name:e.first_name,last_name:e.last_name,name:`${e.first_name} ${e.last_name}`,contact:e.phone,phone:e.phone||"",email:e.email,postal_code:((te=e.address)==null?void 0:te.postalCode)||"",city:((ae=e.address)==null?void 0:ae.city)||"",street:((le=e.address)==null?void 0:le.street)||"",street_number:String(parseInt((oe=e.address)==null?void 0:oe.streetNumber,10)||0),extended_address:((re=e.address)==null?void 0:re.doorNumber)||"",document_type:e.document_type,document_number:e.document_number,birthdate:m},status:"active",all_services:!1,services:[]};try{const{createEmployee:F,updateEmployeeUserStatus:O}=W(),K=await F(t.value.uuid,g);if(K.error)D.value=a("employees.errors.createFailed");else{k.value=!0;const U=K.data||K,M=(U==null?void 0:U.uuid)||((ne=U==null?void 0:U.value)==null?void 0:ne.uuid)||((ie=U==null?void 0:U.data)==null?void 0:ie.uuid);if(M)if(E.value=M,f.value={uuid:M,created_at:new Date().toISOString(),address:{title:e.title,first_name:e.first_name,last_name:e.last_name,contact:e.phone,phone:e.phone||"",email:e.email,postal_code:((de=e.address)==null?void 0:de.postalCode)||"",city:((ce=e.address)==null?void 0:ce.city)||"",street:((ue=e.address)==null?void 0:ue.street)||"",street_number:String(parseInt((me=e.address)==null?void 0:me.streetNumber,10)||0),extended_address:((pe=e.address)==null?void 0:pe.doorNumber)||"",document_type:e.document_type,document_number:e.document_number,birthdate:m,name:`${e.first_name} ${e.last_name}`},status:"active",services:[],user:null},(ve=y.value)!=null&&ve.uploadAvatarIfSelected&&await y.value.uploadAvatarIfSelected(t.value.uuid,M),e.isUser)try{const Y=await O(t.value.uuid,M,!0);Y?V().setSnackbar(a("employees.employeeAndUserCreated"),"success"):(console.error("â User account creation failed - no response:",Y),V().setSnackbar(a("employees.employeeCreatedButUserFailed"),"warning"))}catch(Y){console.error("â Error creating user account:",Y),V().setSnackbar(a("employees.employeeCreatedButUserFailed"),"warning")}else V().setSnackbar(a("employees.employeeCreated"),"success");else D.value=a("employees.errors.scheduleFailed");await Me(),b.value="schedules"}}catch(F){const O=F instanceof Error?F.message:String(F);console.error("Employee creation error:",O),D.value=`${a("employees.errors.unexpected")}: ${O}`}finally{B.value=!1}};return h("set-title","Nuevo Trabajador"),(e,m)=>(v(),se(Ne,{elevation:"0",rounded:"lg"},{default:l(()=>[s(Fe,{class:"new-employee-page"},{default:l(()=>[s(X,{cols:"12",class:"ga-5 d-flex flex-column"},{default:l(()=>[i("p",Ss,c(n(a)("employees.completeDoctorInfo")),1)]),_:1})]),_:1}),s(X,{cols:"12"},{default:l(()=>[i("div",bs,[i("div",xs,[s(P,{class:"text-white",size:"20"},{default:l(()=>m[2]||(m[2]=[_(" $userOutlined ")])),_:1,__:[2]})]),i("h5",Cs,c(n(a)("employees.employeeInfo")),1)])]),_:1}),s(X,{cols:"12",class:"py-2"},{default:l(()=>[s(qe,{modelValue:b.value,"onUpdate:modelValue":m[0]||(m[0]=g=>b.value=g),"bg-color":"employeeInfo"},{default:l(()=>[s(Z,{value:"personalData"},{default:l(()=>[_(c(n(a)("employees.personalData")),1)]),_:1}),s(Z,{value:"schedules",disabled:!k.value},{default:l(()=>[_(c(n(a)("menuItems.schedules")),1)]),_:1},8,["disabled"]),s(Z,{value:"services",disabled:!k.value},{default:l(()=>[_(c(n(a)("menuItems.services")),1)]),_:1},8,["disabled"])]),_:1},8,["modelValue"])]),_:1}),s(Be,{class:"pa-1 pa-sm-2 pa-lg-4"},{default:l(()=>[s(Je,{modelValue:b.value,"onUpdate:modelValue":m[1]||(m[1]=g=>b.value=g)},{default:l(()=>[s(ee,{value:"personalData"},{default:l(()=>[s(ze,{ref_key:"personalDataRef",ref:y,loading:B.value,error:D.value,onPersonalDataUpdated:A,onValidationChanged:T,onSave:z},null,8,["loading","error"])]),_:1}),s(ee,{value:"schedules"},{default:l(()=>{var g;return[k.value?(v(),S("div",Es,[s(Ge,{"model-value":!1,"company-uuid":((g=t.value)==null?void 0:g.uuid)||"","employee-uuid":E.value||void 0,schedules:[],onSchedulesUpdated:j,onSaveSuccess:N,onSaveError:he},null,8,["company-uuid","employee-uuid"]),s(_e,{"selected-count":0,onContinue:H,onSkip:o})])):(v(),S("div",ks,[s(P,{size:"48",color:"grey-lighten-1",class:"mb-4"},{default:l(()=>m[3]||(m[3]=[_("mdi-clock-outline")])),_:1,__:[3]}),i("p",ws,c(n(a)("employees.scheduleNotAvailable")),1),i("p",$s,c(n(a)("employees.completePersonalDataFirst")),1)]))]}),_:1}),s(ee,{value:"services"},{default:l(()=>{var g;return[k.value?(v(),S("div",Ds,[s(ys,{employee:f.value,"company-uuid":((g=t.value)==null?void 0:g.uuid)||"","show-actions":!1,onServicesChanged:L},null,8,["employee","company-uuid"]),s(_e,{"selected-count":w.value.length,"is-final-step":!0,onContinue:u,onSkip:r}
1,null,8,["selected-count"])])):(v(),S("div",Vs,[s(P,{size:"48",color:"grey-lighten-1",class:"mb-4"},{default:l(()=>m[4]||(m[4]=[_("$service")])),_:1,__:[4]}),i("p",Us,c(n(a)("employees.servicesNotAvailable")),1),i("p",Is,c(n(a)("employees.completePersonalDataFirst")),1)]))]}),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1}))}});export{it as default}; 2//# sourceMappingURL=ikl7bOsB.js.map
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.