1import{n as I,a0 as D,a as g,r as m,s as p}from"./index-DfOJmvz4.js";import{m as q,D as _,a as N,b as h,c as y}from"./demoStorage-Bw68jIAl.js";import{D as A}from"./demoApartmentOperationalData-qPlelaOg.js";function U(){const{currentUser:u}=I(),{selectedUnitId:a}=D(),{isDemoMode:E,demoRole:T}=g(),i=E&&T==="realEstateAdmin",[b,s]=m.useState([]),[v,f]=m.useState(!0),[S,d]=m.useState(null),l=u==null?void 0:u.profileId,c=m.useCallback(async()=>{if(!l){f(!1);return}try{f(!0),d(null);let e=p.from("apartment_tenants").select("*").eq("owner_id",l).is("deleted_at",null).order("created_at",{ascending:!1});a&&(e=e.eq("apartment_id",a));const{data:n,error:o}=await e;if(o)throw o;const r=(n||[]).map(t=>({id:t.id,apartmentId:t.apartment_id,ownerId:t.owner_id,nombre:t.nombre,email:t.email||void 0,telefono:t.telefono||void 0,rfc:t.rfc||void 0,direccionFiscal:t.direccion_fiscal||void 0,contactoEmergencia:t.contacto_emergencia||void 0,telefonoEmergencia:t.telefono_emergencia||void 0,tipoInquilino:t.tipo_inquilino||void 0,notas:t.notas||void 0,status:t.status||"activo",createdAt:t.created_at,updatedAt:t.updated_at,razonSocial:t.razon_social||void 0,rfcEmpresa:t.rfc_empresa||void 0,representanteNombre:t.representante_nombre||void 0,representanteRfc:t.representante_rfc||void 0,representanteEmail:t.representante_email||void 0,representanteTelefono:t.representante_telefono||void 0,contactoNombre:t.contacto_nombre||void 0,contactoEmail:t.contacto_email||void 0,contactoTelefono:t.contacto_telefono||void 0,contactoCargo:t.contacto_cargo||void 0,referenciaNombre:t.referencia_nombre||void 0,referenciaTelefono:t.referencia_telefono||void 0,referenciaParentesco:t.referencia_parentesco||void 0}));s(r)}catch(e){console.error("Error fetching apartment tenants:",e),d(e instanceof Error?e.message:"Error al cargar inquilinos")}finally{f(!1)}},[l,a]);return m.useEffect(()=>{if(i){const e=q(_.apartmentTenants,A);s(a?e.filter(n=>n.apartmentId===a):e),f(!1);return}c()},[c,i,a]),{tenants:b,loading:v,error:S,refetch:c,createTenant:async e=>{if(i){const o=g.getState();if(!o.canCreate("tenants"))throw new Error("Has alcanzado el lÃmite de inquilinos en modo demo (2). RegÃstrate para crear más.");const r={id:crypto.randomUUID(),ownerId:"demo",createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),status:"activo",...e};y(_.apartmentTenants,r),s(t=>[r,...t]),o.incrementCreatedCount("tenants");return}if(!l)throw new Error("No hay usuario autenticado");const{error:n}=await p.from("apartment_tenants").insert({apartment_id:e.apartmentId,owner_id:l,nombre:e.nombre,email:e.email,telefono:e.telefono,rfc:e.rfc,direccion_fiscal:e.direccionFiscal,contacto_emergencia:e.contactoEmergencia,telefono_emergencia:e.telefonoEmergencia,tipo_inquilino:e.tipoInquilino||"persona_fisica",notas:e.notas,status:e.status||"activo",razon_social:e.razonSocial,rfc_empresa:e.rfcEmpresa,representante_nombre:e.representanteNombre,representante_rfc:e.representanteRfc,representante_email:e.representanteEmail,representante_telefono:e.representanteTelefono,contacto_nombre:e.contactoNombre,contacto_email:e.contactoEmail,contacto_telefono:e.contactoTelefono,contacto_cargo:e.contactoCargo,referencia_nombre:e.referenciaNombre,referencia_telefono:e.referenciaTelefono,referencia_parentesco:e.referenciaParentesco});if(n)throw n;await c()},updateTenant:async(e,n)=>{if(i){h(_.apartmentTenants,e,{...n,updatedAt:new Date().toISOString()}),s(r=>r.map(t=>t.id===e?{...t,...n}:t));return}const{error:o}=await p.from("apartment_tenants").update({nombre:n.nombre,email:n.email,telefono:n.telefono,rfc:n.rfc,direccion_fiscal:n.direccionFiscal,contacto_emergencia:n.contactoEmergencia,telefono_emergencia:n.telefonoEmergencia,tipo_inquilino:n.tipoInquilino,notas:n.notas,status:n.status,razon_social:n.razonSocial,rfc_empresa:n.rfcEmpresa,representante_nombre:n.representanteNombre,representante_rfc:n.representanteRfc,representante_email:n.representanteEmail,representante_telefono:n.representanteTelefono,contacto_nombre:n.contactoNombre,contacto_email:n.contactoEmail,contacto_telefono:n.contactoTelefono,contacto_cargo:n.contactoCargo,referencia_nombre:n.referenciaNombre,referencia_telefono:n.referenciaTelefono,referencia_parentesco:n.referenciaParentesco}).eq("id",e);if(o)throw o;await c()},deleteTenant:async e=>{if(i){N(_.apartmentTenants,e),s(o=>
1o.filter(r=>r.id!==e));return}const{error:n}=await p.from("apartment_tenants").update({deleted_at:new Date().toISOString()}).eq("id",e);if(n)throw n;await c()}}}export{U as u};
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.