1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7051],{87051:(e,t,r)=>{r.d(t,{BR:()=>f,Dv:()=>m,W9:()=>c});var a=r(95155),i=r(12115),s=r(36682),l=r(27058);let n=new Set(["dataNomina","nominaConLetteraIntenti","scadenzaLetteraIntenti","dataInizioContratto","scadenzaContratto","affidamenti","mailAziendale","referenteNome","referenteTelefono","referenteEmail","obiettivoTargheVendute","docLetteraIntentiUrl","docContrattoUrl","docIdentitaUrl","docVisuraCameraleUrl"]);var o=r(399),d=r(54748),u=r(49904);class c extends Error{constructor(e){super("Verifica in due passaggi richiesta."),this.name="MfaRequiredError",this.resolver=e}}let f=(0,i.createContext)({currentUser:null,login:async()=>null,completeMfaSignIn:async()=>null,logout:()=>{},generateNewQuoteId:async()=>"PR001",generateNewOrderId:async()=>"OR001",generateNewLeadId:async()=>"LD001",generateNewPeriziaId:async()=>"PER001",newOrdersCount:0,newCircularsCount:0,isCircularNew:()=>!1,markCircularAsDownloaded:()=>{},users:[],setUsers:async()=>{},createUser:async()=>{},cars:[],setCars:async()=>{},assignedCars:[],orders:[],setOrders:async()=>{},leads:[],setLeads:async()=>{},dealers:[],setDealers:async()=>{},quotes:[],setQuotes:async()=>{},perizie:[],setPerizie:async()=>{},colors:[],setColors:async()=>{},trims:[],setTrims:async()=>{},fuels:[],setFuels:async()=>{},gearboxes:[],setGearboxes:async()=>{},optionals:[],setOptionals:async()=>{},additionalWarranties:[],setAdditionalWarranties:async()=>{},partnerFinanziari:[],setPartnerFinanziari:async()=>{},vehicleConfigurations:[],vehicleConfigurationsAttive:[],setVehicleConfigurations:async()=>{},circulars:[],setCirculars:async()=>{},contacts:[],setContacts:async()=>{},showStockFabbrica:!0}),m=e=>{var t,r;let{children:m}=e,{firestore:g,auth:p,user:y,isUserLoading:_}=(0,s.D3)(),[v,w]=(0,i.useState)(null),[I,h]=(0,i.useState)(0),[S,C]=(0,i.useState)(0);(0,i.useEffect)(()=>{(async()=>{if(y&&!v&&g){let t=(0,l.P)((0,l.rJ)(g,"users"),(0,l._M)("auth_uid","==",y.uid)),r=await (0,l.GG)(t);if(r.empty&&(t=(0,l.P)((0,l.rJ)(g,"users"),(0,l._M)("authUid","==",y.uid)),r=await (0,l.GG)(t)),r.empty&&y.email){let e=y.email.toLowerCase();t=(0,l.P)((0,l.rJ)(g,"users"),(0,l._M)("email","==",e)),r=await (0,l.GG)(t)}if(r.empty){let t=await y.getIdTokenResult(),r=t.claims.role,a=t.claims.dealerId;if(r){var e;let t={id:y.uid,username:y.displayName||(null===(e=y.email)||void 0===e?void 0:e.split("@")[0])||"User",email:y.email||"",role:r,dealerId:a||null,auth_uid:y.uid,is_linked:!0};w(t),localStorage.setItem("currentUser",JSON.stringify(t))}}else{let e={...r.docs[0].data(),id:r.docs[0].id};e.auth_uid!==y.uid&&await (0,l.BN)((0,l.H9)(g,"users",e.id),{auth_uid:y.uid,is_linked:!0},{merge:!0});let t={...e,auth_uid:y.uid,is_linked:!0};w(t),localStorage.setItem("currentUser",JSON.stringify(t))}}else y||_||(w(null),localStorage.removeItem("currentUser"))})()},[y,g,v,_]),(0,i.useEffect)(()=>{{let e=localStorage.getItem("currentUser");e&&w(JSON.parse(e))}},[]);let J=null==v?void 0:v.id;(0,i.useEffect)(()=>{if(g&&y&&J)return(0,l.aQ)((0,l.H9)(g,"users",J),e=>{e.exists()&&w(t=>{if(!t||t.id!==e.id)return t;let r={...t,...e.data(),id:e.id};return localStorage.setItem("currentUser",JSON.stringify(r)),r})},e=>console.error("Errore ascolto profilo utente:",e))},[g,y,J]);let G=async(e,t)=>{if(!g)throw Error("Firebase non inizializzato correttamente.");let r=await e.getIdTokenResult(),a=r.claims.role,i=r.claims.dealerId,s=await (0,l.GG)((0,l.P)((0,l.rJ)(g,"users"),(0,l._M)("auth_uid","==",e.uid)));if(s.empty&&(s=await (0,l.GG)((0,l.P)((0,l.rJ)(g,"users"),(0,l._M)("authUid","==",e.uid)))),s.empty&&(s=await (0,l.GG)((0,l.P)((0,l.rJ)(g,"users"),(0,l._M)("email","==",t.trim().toLowerCase())))),s.empty){if(a){let r={id:e.uid,username:e.displayName||t.split("@")[0]||"User",email:e.email||t,role:a,dealerId:i||null,auth_uid:e.uid,is_linked:!0};return w(r),localStorage.setItem("currentUser",JSON.stringify(r)),r}throw Error("Account non trovato nel database. Contatta l'amministratore.")}let n={...{...s.docs[0].data(),id:s.docs[0].id},auth_uid:e.uid,is_linked:!0};return w(n),localStorage.setItem("currentUser",JSON.stringify(n)),n},N=async(e,t)=>{if(!p||!g)throw Error("Firebase non inizializzato correttamente.");try{let r=await (0,o.x9)(p,e.trim(),t);return await G(r.user,e)}catch(e){if("auth/multi-factor-auth-required"===e.code)throw new c((0,o.vZ)(p,e));throw console.error("Auth Login Error:",e),e}},z=async(e,t)=>{try{let r=e.hints[0],a=o.p7.assertionForSignIn(r.uid,t),i=await e.resolveSignIn(a);return await G(i.user,i.user.email||"")}catch(e){throw console.error("MFA Sign-In Error:",e),e}},D=async()=>{p&&await (0,o.CI)(p),w(null),localStorage.removeItem("currentUser")},O=async(e,t)=>{if(!g)throw Error("Firestore non \xe8 disponibile");let r=(0,l.H9)(g,"counters",e),a=(0,l.rJ)(g,"proposals"===e?"quotes":e);try{let e=await (0,l.c4)(g,async e=>{let i=await e.get(r);if(i.exists()){let t=(i.data().currentId||0)+1;return e.update(r,{currentId:t}),t}{let i=(0,l.P)(a,(0,l.My)("id","desc"),(0,l.AB)(1)),s=await (0,l.GG)(i),n=0;if(!s.empty){let e=s.docs[0].id.replace(RegExp("^".concat(t),"i"),"");isNaN(parseInt(e))||(n=parseInt(e,10))}let o=n+1;return e.set(r,{currentId:o}),o}});return"".concat(t).concat(String(e).padStart(3,"0"))}catch(r){return console.error("Errore durante la generazione del nuovo ID per ".concat(e,":"),r),"".concat(t,"-ERR-").concat(Date.now())}},P=(0,s.$e)(()=>g&&y&&v&&("admin"===v.role||"cmc_ultra"===v.role)?(0,l.P)((0,l.rJ)(g,"orders"),(0,l._M)("assignedVin","==",null)):null,[g,y,v]),{data:A}=(0,s.Ge)(P),M=(0,s.$e)(()=>g&&y&&v&&"venditore"===v.role&&v.dealerId?(0,l.P)((0,l.rJ)(g,"autos"),(0,l._M)("assignedDealerId","==",v.dealerId),(0,l._M)("transferredAt","==",null)):null,[g,y,v]),{data:E}=(0,s.Ge)(M),U=(0,s.$e)(()=>g&&y&&v?"admin"===v.role||"cmc_ultra"===v.role?(0,l.P)((0,l.rJ)(g,"leads"),(0,l._M)("status","==","Non assegnato")):"venditore"===v.role&&v.dealerId&&!0===v.isDirezione?(0,l.P)((0,l.rJ)(g,"leads"),(0,l._M)("assignedDealerId","==",v.dealerId),(0,l._M)("status","==","Assegnato")):"venditore"===v.role?(0,l.P)((0,l.rJ)(g,"leads"),(0,l._M)("assignedSellerId","==",v.id),(0,l._M)("status","==","Assegnato")):null:null,[g,y,v]),{data:b}
1=(0,s.Ge)(U),k=(0,s.$e)(()=>g&&y?(0,l.rJ)(g,"users"):null,[g,y]),{data:$}=(0,s.Ge)(k),x=(0,s.$e)(()=>g&&y?(0,l.rJ)(g,"dealers"):null,[g,y]),{data:F}=(0,s.Ge)(x),L=(null==v?void 0:v.role)==="admin"||(null==v?void 0:v.role)==="cmc_ultra",H=(0,s.$e)(()=>g&&y&&L?(0,l.rJ)(g,"dealers_internal"):null,[g,y,L]),{data:R}=(0,s.Ge)(H),V=(0,i.useMemo)(()=>{let e=(null==F?void 0:F.filter(e=>!e.isDeleted))||[];if(!L)return e;if(!R)return[];let t=new Map(R.map(e=>[e.id,e]));return e.map(e=>{let r=t.get(e.id);if(!r)return e;let{id:a,...i}=r;return function(e,t){return t?{...t,...e}:e}(e,i)})},[F,R,L]),q=(0,s.$e)(()=>g&&y?(0,l.rJ)(g,"options_colors"):null,[g,y]),{data:Q}=(0,s.Ge)(q),T=(0,s.$e)(()=>g&&y?(0,l.rJ)(g,"options_trims"):null,[g,y]),{data:B}=(0,s.Ge)(T),W=(0,s.$e)(()=>g&&y?(0,l.rJ)(g,"options_fuels"):null,[g,y]),{data:j}=(0,s.Ge)(W),Z=(0,s.$e)(()=>g&&y?(0,l.rJ)(g,"options_gearboxes"):null,[g,y]),{data:K}=(0,s.Ge)(Z),X=(0,s.$e)(()=>g&&y?(0,l.rJ)(g,"options_optionals"):null,[g,y]),{data:Y}=(0,s.Ge)(X),ee=(0,s.$e)(()=>g&&y?(0,l.rJ)(g,"options_additional_warranties"):null,[g,y]),{data:et}=(0,s.Ge)(ee),er=(0,s.$e)(()=>g&&y?(0,l.rJ)(g,"partner_finanziari"):null,[g,y]),{data:ea}=(0,s.Ge)(er),ei=(0,s.$e)(()=>g&&y?(0,l.P)((0,l.rJ)(g,"vehicle_configurations"),(0,l.My)("displayOrder")):null,[g,y]),{data:es}=(0,s.Ge)(ei),el=(0,s.$e)(()=>g&&y?(0,l.P)((0,l.rJ)(g,"circolari"),(0,l.My)("data","desc"),(0,l.AB)(50)):null,[g,y]),{data:en}=(0,s.Ge)(el),eo=(0,s.$e)(()=>g&&y?(0,l.P)((0,l.rJ)(g,"contacts"),(0,l.My)("createdAt","asc")):null,[g,y]),{data:ed}=(0,s.Ge)(eo);(0,i.useEffect)(()=>{A&&v&&("admin"===v.role||"cmc_ultra"===v.role)?h(A.filter(e=>!e.assignedVin).length):h(0)},[A,v]),(0,i.useEffect)(()=>{if(en&&v){let e="seenCircularIds_v4_".concat(v.id);if("true"!==localStorage.getItem("circularsInitialized_v4")){let t=en.map(e=>e.id);localStorage.setItem(e,JSON.stringify(t)),localStorage.setItem("circularsInitialized_v4","true"),C(0);return}let t=JSON.parse(localStorage.getItem(e)||"[]");C(en.filter(e=>!t.includes(e.id)).length)}else C(0)},[en,v]);let eu=e=>async t=>{if(!g)return;let r=Array.isArray(t)?t:[t],a=(0,l.wP)(g);for(let t of r){let{id:r,isDeleted:i,...s}=t,n=Object.entries(s).reduce((e,t)=>{let[r,a]=t;return void 0!==a&&(e[r]=a),e},{});if(i&&r)a.delete((0,l.H9)(g,e,r));else if(r)a.set((0,l.H9)(g,e,r),n,{merge:!0});else{let t={...n,createdAt:(0,l.O5)()};"circolari"===e&&(t.data=(0,l.O5)());let r=(0,l.H9)((0,l.rJ)(g,e));a.set(r,t)}}await a.commit()},ec=async e=>{if(!g)return;let t=Array.isArray(e)?e:[e],r=(0,l.wP)(g);for(let e of t){let{id:t,isDeleted:a,...i}=e;if(a&&t){r.delete((0,l.H9)(g,"dealers",t)),r.delete((0,l.H9)(g,"dealers_internal",t));continue}let s=t?(0,l.H9)(g,"dealers",t):(0,l.H9)((0,l.rJ)(g,"dealers")),o={},d={};for(let[e,t]of Object.entries(i))n.has(e)?(d[e]=void 0===t||""===t?(0,l.CL)():t,o[e]=(0,l.CL)()):void 0!==t&&(o[e]=t);t||(o.createdAt=(0,l.O5)()),r.set(s,o,{merge:!0}),Object.keys(d).length>0&&r.set((0,l.H9)(g,"dealers_internal",s.id),d,{merge:!0})}await r.commit()},ef=async(e,t)=>{if(!g)return;let{id:r,isDeleted:a,...i}=e;try{a&&r?await (0,l.kd)((0,l.H9)(g,"users",r)):r?await (0,l.BN)((0,l.H9)(g,"users",r),i,{merge:!0}):await (0,l.gS)((0,l.rJ)(g,"users"),{...i,createdAt:(0,l.O5)()})}catch(e){throw console.error("Error during user operation:",e),e}},em=async(e,t,r,a,i)=>{let s=(0,d.Uz)((0,u.Sx)(),"us-central1"),l=(0,d.Qg)(s,"createUserAccount");await l({username:e,email:t,password:r,role:a,dealerId:i||null})},eg={currentUser:v,login:N,completeMfaSignIn:z,logout:D,generateNewQuoteId:()=>O("proposals","PR"),generateNewOrderId:()=>O("orders","OR"),generateNewLeadId:()=>O("leads","LD"),generateNewPeriziaId:()=>O("perizie","PER"),newOrdersCount:I,newCircularsCount:S,isCircularNew:e=>{if(!v)return!1;let t="seenCircularIds_v4_".concat(v.id);return!JSON.parse(localStorage.getItem(t)||"[]").includes(e)},markCircularAsDownloaded:e=>{if(!v)return;let t="seenCircularIds_v4_".concat(v.id),r=JSON.parse(localStorage.getItem(t)||"[]");if(!r.includes(e)){let a=[...r,e];localStorage.setItem(t,JSON.stringify(a)),C(e=>Math.max(0,e-1))}},users:(null==$?void 0:$.filter(e=>!e.isDeleted))||[],setUsers:ef,createUser:em,cars:[],setCars:eu("autos"),assignedCars:(null==E?void 0:E.filter(e=>!e.isDeleted))||[],orders:(null==A?void 0:A.filter(e=>!e.isDeleted))||[],setOrders:eu("orders"),leads:(null==b?void 0:b.filter(e=>!e.isDeleted))||[],setLeads:eu("leads"),dealers:V,setDealers:ec,quotes:[],setQuotes:eu("quotes"),perizie:[],setPerizie:eu("perizie"),colors:(null==Q?void 0:Q.filter(e=>!e.isDeleted))||[],setColors:eu("options_colors"),trims:(null==B?void 0:B.filter(e=>!e.isDeleted))||[],setTrims:eu("options_trims"),fuels:(null==j?void 0:j.filter(e=>!e.isDeleted))||[],setFuels:eu("options_fuels"),gearboxes:(null==K?void 0:K.filter(e=>!e.isDeleted))||[],setGearboxes:eu("options_gearboxes"),optionals:(null==Y?void 0:Y.filter(e=>!e.isDeleted))||[],setOptionals:eu("options_optionals"),additionalWarranties:(null==et?void 0:et.filter(e=>!e.isDeleted))||[],setAdditionalWarranties:eu("options_additional_warranties"),partnerFinanziari:(null==ea?void 0:ea.filter(e=>!e.isDeleted))||[],setPartnerFinanziari:eu("partner_finanziari"),vehicleConfigurations:(null==es?void 0:es.filter(e=>!e.isDeleted))||[],vehicleConfigurationsAttive:(null==es?void 0:es.filter(e=>
1!e.isDeleted&&!e.soloOfficina))||[],setVehicleConfigurations:eu("vehicle_configurations"),circulars:(null==en?void 0:en.filter(e=>!e.isDeleted))||[],setCirculars:eu("circolari"),contacts:(null==ed?void 0:ed.filter(e=>!e.isDeleted))||[],setContacts:eu("contacts"),showStockFabbrica:null===(r=null==F?void 0:null===(t=F.find(e=>e.id===(null==v?void 0:v.dealerId)))||void 0===t?void 0:t.showStockFabbrica)||void 0===r||r};return(0,a.jsx)(f.Provider,{value:eg,children:m})}}}]);
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.