PageSourceSearch

https://lipanesti.ro/_nuxt/Ba1HuDDm.js

js lipanesti.ro collected 2026-10-08 09:56:31 UTC 17,938 bytes, 1 lines download raw bytes

1import{bg as o,b3 as f,J as b,b_ as d,a0 as i,Z as h,I as $,bs as k,h as M,O as S,Q as U,F as C,be as P,c0 as R,c1 as z,bz as p,y as D,P as N,aL as O,bG as H}from"./PW_UF68a.js";import{a as Y,j as w,m as K,g as T}from"./-W1VOijv.js";import{g as E}from"./vqRouZZy.js";import Q from"./Cb9MYrcP.js";import{m as j}from"./Bs5_TFWz.js";import"./Bz2dEcw7.js";import"./CIhhRri8.js";import"./B_aewNsK.js";import"./fgnZjpTr.js";import"./CH7vd0UB.js";import"./206wqFYJ.js";const W={key:1,class:"time-slots mt-4"},Z={class:"mb-2 text-left"},_={class:"tos-label"},G={name:"AppointmentsCreate",components:{SelectFilter:Q},mixins:[E],layout:"client",data(){return{isAuthenticated:!!localStorage.getItem("auth_token"),selectedDepartment:null,selectedUser:"",loadingDepartments:!1,loadingUsers:!1,filteredUsers:[],filteredDepartments:[],configurableType:null,selectedDate:null,timeSlots:[],workingHours:{},selectedTimeSlot:null,vacations:[],bookedSlots:[],fetchedVacations:[],fetchedIndividualVacations:[],loading:!1,formData:{is_firm:1,nume:"",prenume:"",email:"",cnp:"",telefon:"",adresa:"",numeFirma:"",cuiFirma:"",tos:!1},scheduleConfig:null,dayNames:["sunday","monday","tuesday","wednesday","thursday","friday","saturday"],observer:null,nextButton:null,previousButton:null,rules:{required:t=>!!t||"Câmp Obligatoriu",email:t=>/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(t)||"E-mail invalid."}}},watch:{selectedUser(t,e){this.getDateButtonsFromCalendar(),t!==e&&(this.selectedDate=null,this.selectedTimeSlot=null,this.timeSlots=[]),t&&this.fetchScheduleData()},selectedDepartment(t,e){this.getDateButtonsFromCalendar(),t!==e&&(this.selectedDate=null,this.selectedTimeSlot=null,this.timeSlots=[]),t&&this.fetchScheduleData()},selectedDate(t){if(t){const e=this.$store?.state?.app?.time||{zone:"Europe/Bucharest"},{zone:s}=e;this.$nextTick(()=>{this.selectedDate=j(t).tz(s).format("YYYY-MM-DD"),this.getDateButtonsFromCalendar()})}},fetchedVacations(){this.$nextTick(()=>{this.getDateButtonsFromCalendar()})},scheduleConfig(){this.$nextTick(()=>{this.getDateButtonsFromCalendar()})},errors:{handler(t){},deep:!0}},methods:{...T("appointments",["setUsers","setDepartments"]),...T("errors",["clearError"]),...K("resources",["getDepartmentsAndUsers","getConfigDepartments","fetchVacations","fetchUserVacations","fetchScheduleConfiguration","storeAppointment","getData","getTenant"]),prefillCitizenData(){const t=this.$auth?.$state?.user?.citizen;t&&(this.formData.nume=t.last_name||t.nume||"",this.formData.prenume=t.first_name||t.prenume||"",this.formData.email=this.$auth?.$state?.user?.email||t.email||"")},async fetchDepartmentsData(){this.loadingDepartments=!0;try{const t=await this.getConfigDepartments();this.setDepartments(t.data)}catch{}finally{this.loadingDepartments=!1}},async fetchUsersData(){this.loadingDepartments=!0;try{const{data:t}=await this.getData("client/users");this.setUsers(t.items)}catch{}finally{this.loadingDepartments=!1}},async fetchScheduleData(){this.scheduleConfig=null;try{const t=this.selectedUser?"user":"department",e=this.selectedUser?this.selectedUser:this.selectedDepartment,s=await this.fetchScheduleConfiguration({configurableType:t,configurableId:e});this.scheduleConfig=s.workingHours}catch{this.scheduleConfig=null}},async onDepartmentChange(){if(this.selectedDepartment){const t=await this.getDepartmentsAndUsers(),e=t.usersWithMatches.filter(s=>s.department_id===this.selectedDepartment);e.length>0?this.filteredUsers=e:(this.filteredUsers=[],this.selectedUser="",this.filteredDepartments=t.unmatchedDepartments)}else this.filteredUsers=[];await this.fetchAllVacationsData()},onDateSelect(){this.fetchBookedSlots()},formatDate(t){const[e,s,r]=t.split("-");return`${r}.${s}.${e}`},async fetchAllVacationsData(){this.timeSlots=[];const t=new Date().getFullYear();let e=[];this.selectedUser?(e=await this.$store.dispatch("resources/fetchUserVacations",this.selectedUser),this.fetchedIndividualVacations=e.flatMap(r=>r.vacation_date)):this.fetchedIndividualVacations=[];const s=await this.fetchVacations({scope:"vacations",year:t});this.fetchedVacations=s.data.vacations},async fetchBookedSlots(){if(this.timeSlots=[],this.bookedSlots=[],
1!this.selectedDate||!this.selectedUser&&!this.selectedDepartment)return;const t={appointment_date:this.selectedDate};this.selectedUser?t.user_id=this.selectedUser:this.selectedDepartment&&(t.department_id=this.selectedDepartment);const{$axios:e}=H(),s=await e.get("/api/booked-slots",{params:t});s.data&&s.data.data&&(this.bookedSlots=s.data.data.map(r=>r.slice(0,5))),await this.generateTimeSlots()},slotKey(t,e){return`${t}-${e}`},getSlotColor(t){return this.bookedSlots.includes(t)?"block":this.selectedTimeSlot===t?"#aaaaaa":"block"},onSelectSlot(t){this.bookedSlots.includes(t)||(this.selectedTimeSlot=t)},isAllowedDate(t){const e=new Date;if(new Date(t)<e.setHours(0,0,0,0))return!1;const n={0:"sunday",1:"monday",2:"tuesday",3:"wednesday",4:"thursday",5:"friday",6:"saturday"}[new Date(t).getDay()];if(n==="sunday"||n==="saturday"||!this.scheduleConfig||!this.scheduleConfig[n])return!1;const m=this.scheduleConfig[n],l=!m||m&&this.isDayInvalid(m),u=this.fetchedVacations.includes(t),g=this.fetchedIndividualVacations.some(v=>{const y=new Date(v.start_date),V=new Date(v.end_date),c=new Date(t);return c>=y&&c<=V});return!(l||u||g)},isDayInvalid({start:t,end:e}){return t===null&&e===null},async generateTimeSlots(){this.timeSlots=[];const t=this.selectedUser?"user":"department",e=this.selectedUser?this.selectedUser:this.selectedDepartment,s=await this.fetchScheduleConfiguration({configurableType:t,configurableId:e});this.workingHours=s.workingHours||{};const r=s.interval||15,n=new Date(this.selectedDate).getDay(),m=this.dayNames[n],l=this.workingHours[m];if(!l||!l.start||!l.end)return;const u=this.convertToMinutes(l.start),g=this.convertToMinutes(l.end),v=l.breakStart?this.convertToMinutes(l.breakStart):null,y=l.breakEnd?this.convertToMinutes(l.breakEnd):null;this.generateSlots(u,g,r,v,y)},generateSlots(t,e,s,r,n){for(this.timeSlots=[];t<e;){if(r!==null&&n!==null&&t>=r&&t<n){t=n;continue}const m=this.convertToTime(t);this.timeSlots.push(m),t+=s}},convertToMinutes(t){const[e,s]=t.split(":").map(Number);return e*60+s},convertToTime(t){const e=Math.floor(t/60).toString().padStart(2,"0"),s=(t%60).toString().padStart(2,"0");return`${e}:${s}`},async submitAppointment(){this.loading=!0;try{const t=await this.$refs.form.validate();if(t&&t.valid===!1)return;const e={is_firm:this.formData.is_firm,citizen_first_name:this.formData.prenume,citizen_last_name:this.formData.nume,citizen_email:this.formData.email,citizen_cnp:this.formData.is_firm===1?this.formData.cnp:null,citizen_phone:this.formData.telefon||null,citizen_address:this.formData.adresa||null,department_id:this.selectedDepartment,user_id:this.selectedUser,appointment_date:this.selectedDate,appointment_hour:this.selectedTimeSlot,company_name:this.formData.is_firm===2?this.formData.numeFirma:null,company_cui:this.formData.is_firm===2?this.formData.cuiFirma:null};this.$auth.$state.user?.citizen?.is_citizen&&(e.citizen_id=this.$auth.$state.user?.citizen.id),await this.storeAppointment(e)&&await this.$router.push("/")}catch{}finally{this.loading=!1}},initCalendarObserver(){const t=this.$refs.vDatePicker?.$el;this.observer&&this.observer.disconnect(),this.observer=new MutationObserver(()=>{this.$nextTick(()=>{this.getDateButtonsFromCalendar()})}),t&&this.observer.observe(t,{childList:!0,subtree:!0})},getDateButtonsFromCalendar(){document.querySelectorAll(".v-date-picker-month button.v-btn").forEach(e=>{e.classList.contains("v-btn--disabled")||e.getAttribute("aria-disabled")==="true"?(e.style.backgroundColor="#ffe3e3",e.style.color="#ff6b6b",e.style.font="12px 'Quicksand', sans-serif",e.style.opacity="0.85",e.style.borderRadius="50%",e.style.border="1px solid #ff6b6b",e.style.transition="transform 0.3s ease, background-color 0.3s ease"):(e.classList.contains("v-date-picker-month__day--today")&&e.classList.remove("text-accent"),e.addEventListener("click",()=>{e.style="",setTimeout(()=>{(e.classList.contains("v-btn--active")||e.getAttribute("aria-pressed")==="true")&&(e.style.backgroundColor="#0a9318",e.style.color="#F0FFF4",e.style.font="12px 'Quicksand', sans-serif",e.style.opacity="1",e.style.borderRadius="50%",e.style.border="1px solid #2C8540",e.style.transition="transform 0.3s ease, background-color 0.3s ease")},10)}),e.classList.contains("v-btn--active")||e.getAttribute("aria-pressed")==="true"?(e.style.backgroundColor="#0a9318",e.style.color="#F0FFF4",e.style.font="12px 'Quicksand', sans-serif",e.style.opacity="1",e.
1style.borderRadius="50%",e.style.border="1px solid #2C8540",e.style.transition="transform 0.3s ease, background-color 0.3s ease"):!e.classList.contains("v-btn--disabled")&&e.getAttribute("aria-disabled")!=="true"&&(e.style.backgroundColor="#e3ffe6",e.style.color="#0f9d58",e.style.font="12px 'Quicksand', sans-serif",e.style.opacity="0.85",e.style.borderRadius="50%",e.style.border="1px solid #0f9d58",e.style.transition="transform 0.3s ease, background-color 0.3s ease"))})}},async mounted(){await this.getTenant();const e=(this.$auth?.user?.roles||[]).some(r=>r.name==="Super Admin"),s=!!(this.tenant?.has_appointment_permission||this.tenant?.hasAppointmentPermission);if(!e&&!s)return this.$router.push("/");this.prefillCitizenData(),this.fetchDepartmentsData(),this.fetchUsersData(),this.$nextTick(()=>{this.initCalendarObserver(),this.getDateButtonsFromCalendar();const r=()=>{this.selectedDate=null,this.selectedTimeSlot=null,this.timeSlots=[]},n=this.$refs.vDatePicker?.$el;if(n){const m=n.querySelector(".v-date-picker-controls button:first-child"),l=n.querySelector(".v-date-picker-controls button:last-child"),u=n.querySelector(".v-date-picker-controls__month-year");m&&m.addEventListener("click",r),l&&l.addEventListener("click",r),u&&u.addEventListener("click",r)}})},beforeDestroy(){this.observer&&this.observer.disconnect()},computed:{...w("tenant",["tenant"]),...w("appointments",["departments","users"]),...w("errors",["errors"]),filteredUsersAvailable(){return!this.loadingDepartments&&this.selectedDepartment&&this.filteredUsers.length>0},allowedDateStyle(){return this.loadingUsers||!this.dataLoaded?{backgroundColor:"rgba(240, 240, 240, 1)",opacity:.7}:{backgroundColor:"red"}}}},J=Object.assign(G,{setup(t){return(e,s)=>{const r=o("v-icon"),n=o("v-card-title"),m=M,l=o("v-alert"),u=o("v-select"),g=o("v-col"),v=o("v-row"),y=o("v-date-picker"),V=o("v-chip"),c=o("v-text-field"),F=o("v-checkbox"),A=o("v-btn"),B=o("v-form"),q=o("v-card");return f(),b(q,O({id:"scroll-view",class:"mb-2 pa-3 rounded-widget",flat:""},e.$attrs),{default:d(()=>[i(n,null,{default:d(()=>[i(r,{class:"mr-1",size:"large"},{default:d(()=>[...s[21]||(s[21]=[h("mdi-calendar-outline",-1)])]),_:1}),$("h2",null,k(e.$t("menu.appointments_audiences")),1)]),_:1}),e.isAuthenticated?S("",!0):(f(),b(l,{key:0,type:"info",variant:"tonal",closable:"",class:"mx-3 mb-4"},{default:d(()=>[s[23]||(s[23]=h(" Formularul poate fi trimis fara autentificare. Daca doriti sa urmariti statusul solicitarii, va puteti ",-1)),i(m,{to:"/auth/citizens/register",class:"font-weight-bold"},{default:d(()=>[...s[22]||(s[22]=[h("crea un cont de cetatean",-1)])]),_:1}),s[24]||(s[24]=h(". ",-1))]),_:1})),i(v,{class:"mt-4","no-gutters":""},{default:d(()=>[i(g,{class:"pr-0 pr-md-2",cols:"12",md:"6"},{default:d(()=>[i(u,{modelValue:e.selectedDepartment,"onUpdate:modelValue":[s[0]||(s[0]=a=>e.selectedDepartment=a),e.onDepartmentChange],"error-messages":e.errors.department,items:e.departments,label:e.$t("fields.department"),loading:e.loadingDepartments,rules:[e.rules.required],class:"px-1","item-text":"name","item-value":"id","item-title":"name",variant:"outlined","prepend-inner-icon":"mdi-card-text"},null,8,["modelValue","error-messages","items","label","loading","rules","onUpdate:modelValue"])]),_:1}),e.filteredUsersAvailable&&e.filteredUsers?(f(),b(g,{key:0,class:"px-0 px-md-2",cols:"12",md:"6"},{default:d(()=>[i(u,{modelValue:e.selectedUser,"onUpdate:modelValue":[s[1]||(s[1]=a=>e.selectedUser=a),e.fetchAllVacationsData],items:e.filteredUsers,label:e.$t("fields.user"),loading:e.loadingUsers,"validate-on-blur":!1,class:"px-1","item-text":"name","item-value":"id","item-title":"name",variant:"outlined","persistent-hint":"","prepend-inner-icon":"mdi-account"},null,8,["modelValue","items","label","loading","onUpdate:modelValue"])]),_:1})):S("",!0)]),_:1}),i(y,{modelValue:e.selectedDate,"onUpdate:modelValue":[s[2]||(s[2]=a=>e.selectedDate=a),e.onDateSelect],"allowed-dates":e.isAllowedDate,ref:"vDatePicker",class:"custom-date-picker mt-2 highlight-disabled-dates",color:"primary",elevation:"1"},null,8,["modelValue","allowed-dates","onUpdate:modelValue"]),e.timeSlots.length?(f(),U("div",W,[$("h4",Z," Ore disponibile pentru "+k(e.formatDate(e.selectedDate)),1),(f(!0),U(C,null,P(e.timeSlots,(a,I)=>(f(),b(V,{key:e.slotKey(a,I),color:e.getSlotColor(a),disabled:e.bookedSlots.includes(a),class:"text-left mr-1 mb-1",label:"",role:"button",small:"",onClick:L=>e.onSelectSlot(a),onKeydown:R(L=>e.onSelectSlot(a),["space"])},{default:d(()=>[h(k(a),1)]),_:2},1032,["color","disabled","onClick","onKeydown"]))),128))])):S("",!0),e.timeSlots.length&&e.selectedTimeSlot?(f(),b(B,{key:2,ref:"form",class:"additional-info-form mt-4","lazy-vali
1dation":"",onSubmit:z(e.submitAppointment,["prevent"])},{default:d(()=>[i(u,{modelValue:e.formData.is_firm,"onUpdate:modelValue":[s[3]||(s[3]=a=>e.formData.is_firm=a),s[4]||(s[4]=a=>("clearError"in e?e.clearError:p(D))("is_firm"))],"error-messages":e.errors.is_firm,items:[{text:"Persoană fizică",value:1},{text:"Persoană juridică",value:2}],label:"Tip Persoană",rules:[e.rules.required],"validate-on-blur":!1,class:"px-1 field-input",dense:"",variant:"outlined","item-title":"text","item-value":"value",required:"","prepend-inner-icon":"mdi-account-check"},null,8,["modelValue","error-messages","rules"]),e.formData.is_firm===2?(f(),U(C,{key:0},[i(c,{modelValue:e.formData.numeFirma,"onUpdate:modelValue":[s[5]||(s[5]=a=>e.formData.numeFirma=a),s[6]||(s[6]=a=>("clearError"in e?e.clearError:p(D))("company_name"))],"error-messages":e.errors.company_name,label:e.$t("fields.company_name"),rules:[e.rules.required],"validate-on-blur":!1,class:"px-1 field-input",dense:"",variant:"outlined","prepend-inner-icon":"mdi-office-building",required:""},null,8,["modelValue","error-messages","label","rules"]),i(c,{modelValue:e.formData.cuiFirma,"onUpdate:modelValue":[s[7]||(s[7]=a=>e.formData.cuiFirma=a),s[8]||(s[8]=a=>("clearError"in e?e.clearError:p(D))("company_cui"))],"error-messages":e.errors.company_cui,label:e.$t("fields.company_cui")+" (optional)","validate-on-blur":!1,class:"px-1 field-input",dense:"",variant:"outlined","prepend-inner-icon":"mdi-domain"},null,8,["modelValue","error-messages","label"])],64)):S("",!0),i(c,{modelValue:e.formData.nume,"onUpdate:modelValue":[s[9]||(s[9]=a=>e.formData.nume=a),s[10]||(s[10]=a=>("clearError"in e?e.clearError:p(D))("citizen_last_name"))],"error-messages":e.errors.citizen_last_name,label:e.$t("fields.last_name"),rules:[e.rules.required],"validate-on-blur":!1,class:"px-1 field-input",dense:"",variant:"outlined","prepend-inner-icon":"mdi-account",required:""},null,8,["modelValue","error-messages","label","rules"]),i(c,{modelValue:e.formData.prenume,"onUpdate:modelValue":[s[11]||(s[11]=a=>e.formData.prenume=a),s[12]||(s[12]=a=>("clearError"in e?e.clearError:p(D))("citizen_first_name"))],"error-messages":e.errors.citizen_first_name,label:e.$t("fields.first_name"),rules:[e.rules.required],"validate-on-blur":!1,class:"px-1 field-input",dense:"",variant:"outlined","prepend-inner-icon":"mdi-account",required:""},null,8,["modelValue","error-messages","label","rules"]),i(c,{modelValue:e.formData.email,"onUpdate:modelValue":[s[13]||(s[13]=a=>e.formData.email=a),s[14]||(s[14]=a=>("clearError"in e?e.clearError:p(D))("citizen_email"))],"error-messages":e.errors.citizen_email,label:e.$t("fields.email"),rules:[e.rules.required],"validate-on-blur":!1,class:"px-1 field-input",dense:"",variant:"outlined","prepend-inner-icon":"mdi-email",required:"",type:"email"},null,8,["modelValue","error-messages","label","rules"]),i(c,{modelValue:e.formData.telefon,"onUpdate:modelValue":[s[15]||(s[15]=a=>e.formData.telefon=a),s[16]||(s[16]=a=>("clearError"in e?e.clearError:p(D))("citizen_phone"))],"error-messages":e.errors.citizen_phone,label:e.$t("fields.phone_no")+" (optional)","validate-on-blur":!1,class:"px-1 field-input",dense:"",variant:"outlined","prepend-inner-icon":"mdi-phone",type:"tel"},null,8,["modelValue","error-messages","label"]),i(c,{modelValue:e.formData.adresa,"onUpdate:modelValue":[s[17]||(s[17]=a=>e.formData.adresa=a),s[18]||(s[18]=a=>("clearError"in e?e.clearError:p(D))("citizen_address"))],"error-messages":e.errors.citizen_address,label:e.$t("fields.address")+" (optional)","validate-on-blur":!1,class:"px-1 field-input",dense:"",variant:"outlined","prepend-inner-icon":"mdi-map-marker"},null,8,["modelValue","error-messages","label"]),i(F,{modelValue:e.formData.tos,"onUpdate:modelValue":s[20]||(s[20]=a=>e.formData.tos=a),color:"primary",class:"px-1 mt-2"},{label:d(()=>[$("span",_,[h(k(e.$t("fields.tos"))+" ",1),i(r,{icon:"mdi-open-in-new",size:"18",class:"link-icon",onClick:s[19]||(s[19]=z(a=>p(E)(null,null,(e._.provides[N]||e.$route).query.tos,1),["stop"]))})])]),_:1},8,["modelValue"]),i(A,{loading:e.loading,disabled:!e.formData.tos||e.loading,block:"",color:"site",class:"bg-primary text-white",large:"",type:"submit",height:"56"},{default:d(()=>[h(k(e.$t("buttons.schedule_audience"))+" ",1),i(r,{class:"ml-1"},{default:d(()=>[...s[25]||(s[25]=[h("mdi-send",-1)])]),_:1})]),_:1},8,["loading","disabled"])]),_:1},8,["onSubmit"])):S("",!0)]),_:1},16)}}}),de=Y(J,[["__scopeId","data-v-ea84ce1f"]]);export{de as default};

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.