PageSourceSearch

https://bublitz-einrichtungen.de/_next/static/chunks/pages/admin/firmen/[uuid]-a2b5098dac07e57d.js

js bublitz-einrichtungen.de collected 2026-10-06 16:15:53 UTC 36,683 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4827],{13109:(e,t,a)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/admin/firmen/[uuid]",function(){return a(58278)}])},58278:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>x});var s=a(37876),r=a(14232),i=a(89099),n=a(77328),l=a.n(n),c=a(48230),d=a.n(c),o=a(6585),m=a(30116);let x=()=>{let e=(0,i.useRouter)(),{uuid:t}=e.query,[a,n]=(0,r.useState)(null),[c,x]=(0,r.useState)(!0),[u,h]=(0,r.useState)(!1),[g,p]=(0,r.useState)(null),[y,f]=(0,r.useState)(!1),[j,b]=(0,r.useState)(!1),[v,N]=(0,r.useState)(!1),[k,w]=(0,r.useState)(!1),[A,C]=(0,r.useState)(!1),[S,E]=(0,r.useState)(null),[F,z]=(0,r.useState)(!1),[D,T]=(0,r.useState)([]),[P,M]=(0,r.useState)(0),[L,Z]=(0,r.useState)(!1),U=(0,r.useCallback)(async()=>{try{let a=await fetch("/api/admin/companies/".concat(t));if(a.ok){let e=await a.json();n(e),p(e)}else alert("Firma nicht gefunden"),e.push("/admin/firmen")}catch(e){console.error("Error fetching company:",e),alert("Fehler beim Laden der Firmendaten")}finally{x(!1)}},[t,e]);(0,r.useEffect)(()=>{t&&U()},[t,U]);let I=(0,r.useCallback)(async()=>{if(t){z(!0);try{let e=await fetch("/api/admin/companies/".concat(t,"/rate-limits"));if(e.ok){let t=await e.json();E(t)}}catch(e){console.error("Rate-limits fetch error",e)}finally{z(!1)}}},[t]);(0,r.useEffect)(()=>{I()},[I]);let O=(0,r.useCallback)(async()=>{if(t){Z(!0);try{let e=await fetch("/api/admin/firmen/".concat(t,"/activity?limit=10"));if(e.ok){let t=await e.json();T(t.logs||[]),M(t.count||0)}}catch(e){console.error("Activity logs fetch error",e)}finally{Z(!1)}}},[t]);(0,r.useEffect)(()=>{O()},[O]);let _=async()=>{if(!a)return;let e=(()=>{let e="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",t="";for(let a=0;a<12;a++)t+=e.charAt(Math.floor(Math.random()*e.length));return t})();try{let a=await fetch("/api/admin/companies/".concat(t,"/portal-access"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({password:e})});if(a.ok)f(!1),U(),alert("Portal-Zugang wurde erfolgreich erstellt und die Zugangsdaten wurden per E-Mail an den Kunden versendet.");else{let e=await a.json();alert("Fehler beim Erstellen des Portal-Zugangs: ".concat(e.error||"Unbekannter Fehler"))}}catch(e){console.error("Error creating portal access:",e),alert("Fehler beim Erstellen des Portal-Zugangs")}},K=async()=>{if(g)try{(await fetch("/api/admin/companies/".concat(t),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(g)})).ok?(n(g),h(!1),alert("\xc4nderungen gespeichert")):alert("Fehler beim Speichern")}catch(e){console.error("Error saving company:",e),alert("Fehler beim Speichern")}},R=async()=>{alert("Diese Funktion wird noch implementiert.\n\nSie wird es erm\xf6glichen, Duplikate zusammenzuf\xfchren und alle Daten (Kontakte, Submissions, etc.) in eine Firma zu konsolidieren.")},J=async()=>{if(confirm('M\xf6chten Sie die Firma "'.concat(null==a?void 0:a.name,'" wirklich l\xf6schen?')))try{let a=await fetch("/api/admin/companies/".concat(t),{method:"DELETE"});if(a.ok)alert("Firma wurde gel\xf6scht"),e.push("/admin/firmen");else{let e=await a.json();console.error("Delete error:",e),alert("Fehler beim L\xf6schen: ".concat(e.details||e.error||"Unbekannter Fehler"))}}catch(e){console.error("Error deleting company:",e),alert("Fehler beim L\xf6schen: Netzwerkfehler")}},V=async e=>{if(t){C(!0);try{let a=await fetch("/api/admin/companies/".concat(t,"/premium"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({days:e})});if(!a.ok)throw Error("Premium-Aktivierung fehlgeschlagen");let s=await a.json();alert(s.message||"Premium f\xfcr ".concat(e," Tag").concat(1===e?"":"e"," aktiviert")),U()}catch(e){alert((null==e?void 0:e.message)||"Fehler bei Premium-Aktivierung")}finally{C(!1)}}},G=async()=>{if(t){C(!0);try{let e=await fetch("/api/admin/companies/".concat(t,"/premium"),{method:"DELETE"});if(!e.ok)throw Error("Premium-Deaktivierung fehlgeschlagen");let a=await e.json();alert(a.message||"Premium wurde deaktiviert"),U()}catch(e){alert((null==e?void 0:e.message)||"Fehler bei Premium-Deaktivierung")}finally{C(!1)}}};return c?(0,s.jsx)(o.A,{children:(0,s.jsx)("div",{className:"flex items-center justify-center min-h-screen",children:(0,s.jsx)("div",{className:"animate-spin rounded-full h-12 w-12 border-b-2 border-primary"})})}):a?(0,s.jsxs)(o.A,{children:[(0,s.jsxs)(l(),{children:[(0,s.jsxs)("title",{children:[a.name," - Firmendetails | Admin"]}),(0,s.jsx)("meta",{name:"robots",content:"noindex, nofollow"})]}),(0,s.jsxs)("div",{className:"min-h-screen bg-gray-50",children:[(0,s.jsx)("div",{className:"bg-white shadow",children:(0,s.jsx)("div",{className:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8",children:(0,s.jsx)("div",{className:"py-6",children:(0,s.jsxs)("div",{className:"flex justify-between items-center",children:[(0,s.jsx)("div",{children:(0,s.jsx)("nav",{className:"flex","aria-label":"Breadcrumb",children:(0,s.jsxs)("ol",{className:"flex items-center space-x-4",children:[(0,s.jsx)("li",{children:(0,s.jsx)(d(),{href:"/admin/firmen",className:"text-gray-500 hover:text-gray-700",children:"Firmenverwaltung"})}),(0,s.jsxs)("li",{className:"flex items-center",children:[(0,s.jsx)("svg",{className:"flex-shrink-0 h-5 w-5 text-gray-300",fill:"currentColor",viewBox:"0 0 20 20",children:(0,s.jsx)("path",{fillRule:"evenodd",d:"M10 3a1 1 0 01.707.293l5 5a1 1 0 010 1.414l-5 5a1 1 0 01-1.414-1.414L13.586 9H3a1 1 0 110-2h10.586l-4.293-4.293A1 1 0 0110 3z",clipRule:"evenodd"})}),(0,s.jsx)("span",{className:"ml-4 text-gray-900 font-medium",children:a.name})]})]})})}),(0,s.jsxs)("div",{className:"flex gap-2",children:[(0,s.jsx)(m.A,{text:"Als Kunde ansehen",variant:"outline",onClick:async()=>{try{let e=await fetch("/api/admin/companies/".concat(a.uuid,"/impersonate?redirect=/kunden/").concat(a.uuid,"&mode=json"),{credentials:"include"});if(!e.ok){let t=await e.json().catch(()=>({}));alert("Impersonation fehlgeschlagen: ".concat(t.message||e.statusText));return}let t=await e.json();window.open(t.redirect,"_blank")}catch(e){console.error("Impersonation error",e),alert("Impersonation fehlgeschlagen")}}}),(0,s.jsx)(m.A,{text:"Gebrauchtm\xf6bel pflegen",variant:"outline",onClick:async()=>{try{let e="/kunden/".concat(a.uuid,"/inventar-pro?view=disposal"),t=await fetch("/api/admin/companies/".concat(a.uuid,"/impersonate?redirect=").concat(encodeURIComponent(e),"&mode=json"),{credentials:"include"});if(!t.ok){let e=await t.json().catch(()=>({}));alert("Impersonation fehlgeschlagen: ".concat(e.message||t.statusText));return}let s=await t.json();window.open(s.redirect,"_blank")}catch(e){console.error("Impersonation error",e),alert("Impersonation fehlgeschlagen")}}}),u?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(m.A,{text:"Speichern",variant:"primary",onClick:K}),(0,s.jsx)(m.A,{text:"Abbrechen",variant:"outline",onClick:()=>{h(!1),p(a)}})]}):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(m.A,{text:"Bearbeiten",variant:"primary",onClick:()=>h(!0)}),(0,s.jsx)(m.A,{text:"Firma zusammenf\xfchren",variant:"secondary",onClick:R}),(0,s.jsx)(m.A,{text:"L\xf6schen",variant:"outline",onClick:J})]})]})]})})})}),(0,s.jsx)("div",{className:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8",children:(0,s.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6",children:[(0,s.jsx)("div",{className:"lg:col-span-2",children:(0,s.jsxs)("div",{className:"bg-white shadow rounded-lg",children:[(0,s.jsx)("div",{className:"px-6 py-4 border-b",children:(0,s.jsx)("h2",{className:"text-lg font-medium",children:"Firmendaten"})}),(0,s.jsxs)("div",{className:"p-6",children:[(0,s.jsx)("h3",{className:"text-md font-medium text-gray-900 mb-4",children:"Grunddaten"}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6 mb-8",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:"Firmenname *"}),u?(0,s.jsx)("input",{type:"text",value:(null==g?void 0:g.name)||"",onChange:e=>p({...g,name:e.target.value}),className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent",required:!0}):(0,s.jsx)("p",{className:"text-gray-900",children:a.name})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:"Firmen-UUID"}),(0,s.jsx)("p",{className:"text-gray-900 font-mono",children:a.uuid})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:"Mitarbeiteranzahl"}),u?(0,s.jsx)("input",{type:"number",value:(null==g?void 0:g.employeeCount)||"",onChange:e=>p({...g,employeeCount:parseInt(e.target.value)||null}),className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent"}):(0,s.jsx)("p",{className:"text-gray-900",children:a.employeeCount||"-"})]}),a.employeeCountRange&&(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:"Mitarbeiter am Standort (Umfrage-Angabe)"}),(0,s.jsx)("p",{className:"text-gray-900",children:a.employeeCountRange})]}),a.locationCount&&(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:"Anzahl Standorte (Umfrage-Angabe)"}),(0,s.jsx)("p",{className:"text-gray-900",children:a.locationCount})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:"Abteilung"}),u?(0,s.jsx)("input",{type:"text",value:(null==g?void 0:g.department)||"",onChange:e=>p({...g,department:e.target.value}),className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent"}):(0,s.jsx)("p",{className:"text-gray-900",children:a.department||"-"})]})]}),(0,s.jsx)("h3",{className:"text-md font-medium text-gray-900 mb-4",children:"Ansprechpartner"}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6 mb-8",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:"Anrede"}),u?(0,s.jsxs)("select",{value:(null==g?void 0:g.salutation)||"",onChange:e=>p({...g,salutation:e.target.value}),className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent",children:[(0,s.jsx)("option",{value:"",children:"Bitte w\xe4hlen"}),(0,s.jsx)("option",{value:"Herr",children:"Herr"}),(0,s.jsx)("option",{value:"Frau",children:"Frau"}),(0,s.jsx)("option",{value:"Divers",children:"Divers"})]}):(0,s.jsx)("p",{className:"text-gray-900",children:a.salutation||"-"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:"Position"}),u?(0,s.jsx)("input",{type:"text",value:(null==g?void 0:g.position)||"",onChange:e=>p({...g,position:e.target.value}),className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent"}):(0,s.jsx)("p",{className:"text-gray-900",children:a.position||"-"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:"Vorname"}),u?(0,s.jsx)("input",{type:"text",value:(null==g?void 0:g.firstName)||"",onChange:e=>p({...g,firstName:e.target.value}),className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent"}):(0,s.jsx)("p",{className:"text-gray-900",children:a.firstName||"-"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:"Nachname"}),u?(0,s.jsx)("input",{type:"text",value:(null==g?void 0:g.lastName)||"",onChange:e=>p({...g,lastName:e.target.value}),className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent"}):(0,s.jsx)("p",{className:"text-gray-900",children:a.lastName||"-"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:"E-Mail *"}),u?(0,s.jsx)("input",{type:"email",value:(null==g?void 0:g.email)||"",onChange:e=>p({...g,email:e.target.value}),className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent",required:!0}):(0,s.jsx)("p",{className:"text-gray-900",children:a.email})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:"Telefon"}),u?(0,s.jsx)("input",{type:"tel",value:(null==g?void 0:g.phone)||"",onChange:e=>p({...g,phone:e.target.value}),className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent"}):(0,s.jsx)("p",{className:"text-gray-900",children:a.phone||"-"})]})]}),(0,s.jsx)("h3",{className:"text-md font-medium text-gray-900 mb-4",children:"Adresse"}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6 mb-8",children:[(0,s.jsxs)("div",{className:"md:col-span-2",children:[(0,s.jsx)("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:"Stra\xdfe und Hausnummer"}),u?(0,s.jsx)("input",{type:"text",value:(null==g?void 0:g.street)||"",onChange:e=>p({...g,street:e.target.value}),className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent"}):(0,s.jsx)("p",{className:"text-gray-900",children:a.street||"-"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:"PLZ"}),u?(0,s.jsx)("input",{type:"text",value:(null==g?void 0:g.postalCode)||"",onChange:e=>p({...g,postalCode:e.target.value}),className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent"}):(0,s.jsx)("p",{className:"text-gray-900",children:a.postalCode||"-"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:"Ort"}),u?(0,s.jsx)("input",{type:"text",value:(null==g?void 0:g.city)||"",onChange:e=>p({...g,city:e.target.value}),className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent"}):(0,s.jsx)("p",{className:"text-gray-900",children:a.city||"-"})]})]}),(0,s.jsx)("h3",{className:"text-md font-medium text-gray-900 mb-4",children:"Projektinformationen"}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:"Projekttyp"}),u?(0,s.jsx)("input",{type:"text",value:(null==g?void 0:g.projectType)||"",onChange:e=>p({...g,projectType:e.target.value}),className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent"}):(0,s.jsx)("p",{className:"text-gray-900",children:a.projectType||"-"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:"Projektgr\xf6\xdfe"}),u?(0,s.jsx)("input",{type:"text",value:(null==g?void 0:g.projectSize)||"",onChange:e=>p({...g,projectSize:e.target.value}),className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent"}):(0,s.jsx)("p",{className:"text-gray-900",children:a.projectSize||"-"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:"Zeitrahmen"}),u?(0,s.jsx)("input",{type:"text",value:(null==g?void 0:g.timeframe)||"",onChange:e=>p({...g,timeframe:e.target.value}),className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent"}):(0,s.jsx)("p",{className:"text-gray-900",children:a.timeframe||"-"})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("label",{className:"block text-sm font-medium text-gray-700 mb-2",children:"Budget"}),u?(0,s.jsx)("input",{type:"text",value:(null==g?void 0:g.budget)||"",onChange:e=>p({...g,budget:e.target.value}),className:"w-full px-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-primary focus:border-transparent"}):(0,s.jsx)("p",{className:"text-gray-900",children:a.budget||"-"})]}),(0,s.jsx)("div",{className:"md:col-span-2",children:(0,s.jsxs)("label",{className
1:"flex items-center space-x-2",children:[u?(0,s.jsx)("input",{type:"checkbox",checked:(null==g?void 0:g.newsletter)||!1,onChange:e=>p({...g,newsletter:e.target.checked}),className:"h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded"}):(0,s.jsx)("input",{type:"checkbox",checked:a.newsletter||!1,disabled:!0,className:"h-4 w-4 text-primary focus:ring-primary border-gray-300 rounded"}),(0,s.jsx)("span",{className:"text-sm text-gray-700",children:"Newsletter-Anmeldung"})]})})]})]})]})}),(0,s.jsxs)("div",{className:"space-y-6",children:[(0,s.jsxs)("div",{className:"bg-white shadow rounded-lg p-6",children:[(0,s.jsx)("h3",{className:"font-medium mb-4",children:"Portal-Zugang"}),a.hasPortalAccess?(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-sm text-gray-600",children:"Status"}),(0,s.jsx)("span",{className:"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-800",children:"Aktiv"})]}),a.portalActivatedAt&&(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-sm text-gray-600",children:"Aktiviert am"}),(0,s.jsx)("span",{className:"text-sm",children:new Date(a.portalActivatedAt).toLocaleDateString("de-DE")})]}),(0,s.jsxs)("div",{className:"mt-4 p-3 bg-gray-50 rounded-lg",children:[(0,s.jsx)("p",{className:"text-xs text-gray-600 mb-2",children:"Zugangsdaten:"}),(0,s.jsxs)("div",{className:"space-y-1",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-sm font-medium",children:"E-Mail:"}),(0,s.jsx)("span",{className:"text-sm font-mono",children:a.email})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-sm font-medium",children:"Portal-Link:"}),(0,s.jsx)("span",{className:"text-sm font-mono text-blue-600",children:a.uuid&&"bublitz-einrichtungen.de/kunden/".concat(a.uuid,"/")})]})]})]}),(0,s.jsx)("div",{className:"mt-4 space-y-2",children:(0,s.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,s.jsx)(m.A,{text:j?"Sende E-Mail...":"Zugangsdaten erneut senden",variant:"outline",size:"sm",disabled:j||v,onClick:async()=>{if(confirm("Ein neues Passwort wird generiert und die Zugangsdaten werden per E-Mail versendet. Fortfahren?")){b(!0);try{let e="ABCDEFGHJKLMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz23456789!@#$%",a="";for(let t=0;t<12;t++)a+=e.charAt(Math.floor(Math.random()*e.length));let s=await fetch("/api/admin/companies/".concat(t,"/reset-password"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({password:a})});if(s.ok){let e=await s.json();alert(e.message||"Neue Zugangsdaten wurden per E-Mail versendet.")}else{let e=await s.json().catch(()=>({})),t=e.error||e.message||"Fehler ".concat(s.status,": ").concat(s.statusText);console.error("Reset password error:",t),alert("Fehler beim Versenden der Zugangsdaten: ".concat(t))}}catch(t){console.error("Reset password error:",t);let e=t instanceof Error?t.message:"Unbekannter Fehler";alert("Fehler beim Versenden der Zugangsdaten: ".concat(e))}finally{b(!1)}}}}),(0,s.jsx)(m.A,{text:v?"Entziehe Zugang...":"Portal-Zugang entziehen",variant:"outline",size:"sm",disabled:v||j,onClick:async()=>{if(confirm("M\xf6chten Sie den Portal-Zugang wirklich entziehen? Die Firma kann sich dann nicht mehr einloggen.")){N(!0);try{let e=await fetch("/api/admin/companies/".concat(t,"/portal-access"),{method:"DELETE"});if(e.ok){let t=await e.json();alert(t.message||"Portal-Zugang wurde entzogen."),await U()}else{let t=await e.json().catch(()=>({})),a=t.error||t.message||"Fehler ".concat(e.status,": ").concat(e.statusText);console.error("Revoke access error:",a),alert("Fehler beim Entziehen des Portal-Zugangs: ".concat(a))}}catch(t){console.error("Revoke access error:",t);let e=t instanceof Error?t.message:"Unbekannter Fehler";alert("Fehler beim Entziehen des Portal-Zugangs: ".concat(e))}finally{N(!1)}}}})]})})]}):(0,s.jsxs)("div",{className:"text-center",children:[(0,s.jsx)("p",{className:"text-sm text-gray-500 mb-4",children:"Kein Portal-Zugang aktiviert"}),(0,s.jsx)(m.A,{text:"Portal aktivieren",variant:"primary",size:"sm",onClick:()=>f(!0)})]})]}),(0,s.jsxs)("div",{className:"bg-white shadow rounded-lg p-6",children:[(0,s.jsx)("h3",{className:"font-medium mb-4",children:"Aktivit\xe4tsprotokoll"}),L?(0,s.jsx)("p",{className:"text-sm text-gray-500",children:"Lade Aktivit\xe4ten..."}):D.length>0?(0,s.jsxs)("div",{className:"space-y-3",children:[D.map(e=>(0,s.jsx)("div",{className:"border-b pb-3 last:border-b-0",children:(0,s.jsx)("div",{className:"flex items-start justify-between",children:(0,s.jsxs)("div",{className:"flex-1",children:[(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"inline-flex items-center px-2 py-0.5 rounded text-xs font-medium ".concat("login"===e.activityType?"bg-green-100 text-green-800":"logout"===e.activityType?"bg-gray-100 text-gray-800":"download"===e.activityType?"bg-blue-100 text-blue-800":"bg-purple-100 text-purple-800"),children:"login"===e.activityType?"\uD83D\uDD10 Login":"logout"===e.activityType?"\uD83D\uDEAA Logout":"download"===e.activityType?"\uD83D\uDCE5 Download":"page_view"===e.activityType?"\uD83D\uDC41️ Seitenaufruf":e.activityType}),e.activityDetails.action&&(0,s.jsx)("span",{className:"text-xs text-gray-600",children:e.activityDetails.action})]}),(0,s.jsx)("p",{className:"text-xs text-gray-500 mt-1",children:new Date(e.createdAt).toLocaleStr
1ing("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}),e.ipAddress&&(0,s.jsxs)("p",{className:"text-xs text-gray-400 mt-0.5 font-mono",children:["IP: ",e.ipAddress]})]})})},e.id)),D.length<P&&(0,s.jsx)(m.A,{text:"Mehr anzeigen",variant:"outline",size:"sm",onClick:async()=>{try{let e=await fetch("/api/admin/firmen/".concat(t,"/activity?limit=50"));if(e.ok){let t=await e.json();T(t.logs||[]),M(t.count||0)}}catch(e){console.error("Failed to load more activity logs",e)}}})]}):(0,s.jsx)("p",{className:"text-sm text-gray-500",children:"Noch keine Aktivit\xe4ten"})]}),(0,s.jsxs)("div",{className:"bg-white shadow rounded-lg p-6",children:[(0,s.jsx)("h3",{className:"font-medium mb-4",children:"Login-Schutz / Rate-Limits"}),F?(0,s.jsx)("p",{className:"text-sm text-gray-500",children:"Lade Status…"}):S?(0,s.jsxs)("div",{className:"space-y-4",children:[S.email&&(0,s.jsxs)("div",{className:"border rounded-lg p-3",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-sm text-gray-600",children:"Kennung (E‑Mail)"}),(0,s.jsx)("div",{className:"text-sm font-mono",children:S.email.identifier})]}),(0,s.jsx)("div",{children:(0,s.jsx)("span",{className:"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ".concat(S.email.locked?"bg-red-100 text-red-800":"bg-green-100 text-green-800"),children:S.email.locked?"Gesperrt":"OK"})})]}),(0,s.jsxs)("div",{className:"mt-2 grid grid-cols-3 gap-2 text-xs text-gray-700",children:[(0,s.jsxs)("div",{children:["Versuche (24h): ",S.email.recentAttempts]}),(0,s.jsxs)("div",{children:["Fehlversuche gesamt: ",S.email.totalFailures]}),(0,s.jsx)("div",{children:S.email.lockedUntil?"Gesperrt bis: ".concat(new Date(S.email.lockedUntil).toLocaleString("de-DE")):"Keine Sperre"})]}),(0,s.jsx)("div",{className:"mt-3 flex gap-2",children:(0,s.jsx)(m.A,{text:"Sperre zur\xfccksetzen (E‑Mail)",variant:"outline",size:"sm",onClick:async()=>{try{(await fetch("/api/admin/companies/".concat(t,"/rate-limits"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"clear",target:"email",removeAttempts:!0})})).ok?(await I(),alert("Sperre und Fehlversuche f\xfcr E‑Mail zur\xfcckgesetzt")):alert("Fehler beim Zur\xfccksetzen (E‑Mail)")}catch(e){alert("Fehler beim Zur\xfccksetzen (E‑Mail)")}}})})]}),(0,s.jsxs)("div",{className:"border rounded-lg p-3",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-sm text-gray-600",children:"Kennung (UUID)"}),(0,s.jsx)("div",{className:"text-sm font-mono",children:S.uuid.identifier})]}),(0,s.jsx)("div",{children:(0,s.jsx)("span",{className:"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium ".concat(S.uuid.locked?"bg-red-100 text-red-800":"bg-green-100 text-green-800"),children:S.uuid.locked?"Gesperrt":"OK"})})]}),(0,s.jsxs)("div",{className:"mt-2 grid grid-cols-3 gap-2 text-xs text-gray-700",children:[(0,s.jsxs)("div",{children:["Versuche (24h): ",S.uuid.recentAttempts]}),(0,s.jsxs)("div",{children:["Fehlversuche gesamt: ",S.uuid.totalFailures]}),(0,s.jsx)("div",{children:S.uuid.lockedUntil?"Gesperrt bis: ".concat(new Date(S.uuid.lockedUntil).toLocaleString("de-DE")):"Keine Sperre"})]}),(0,s.jsxs)("div",{className:"mt-3 flex gap-2",children:[(0,s.jsx)(m.A,{text:"Sperre zur\xfccksetzen (UUID)",variant:"outline",size:"sm",onClick:async()=>{try{(await fetch("/api/admin/companies/".concat(t,"/rate-limits"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"clear",target:"uuid",removeAttempts:!0})})).ok?(await I(),alert("Sperre und Fehlversuche f\xfcr UUID zur\xfcckgesetzt")):alert("Fehler beim Zur\xfccksetzen (UUID)")}catch(e){alert("Fehler beim Zur\xfccksetzen (UUID)")}}}),(0,s.jsx)(m.A,{text:"Alles zur\xfccksetzen",variant:"secondary",size:"sm",onClick:async()=>{if(confirm("Alle Sperren/Versuche (E‑Mail + UUID) zur\xfccksetzen?"))try{(await fetch("/api/admin/companies/".concat(t,"/rate-limits"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"clear",target:"both",removeAttempts:!0})})).ok?(await I(),alert("Alle Sperren/Versuche zur\xfcckgesetzt")):alert("Fehler beim Zur\xfccksetzen (Alle)")}catch(e){alert("Fehler beim Zur\xfccksetzen (Alle)")}}})]})]})]}):(0,s.jsx)("p",{className:"text-sm text-gray-500",children:"Kein Status verf\xfcgbar"})]}),(0,s.jsxs)("div",{className:"bg-white shadow rounded-lg p-6",children:[(0,s.jsx)("h3",{className:"font-medium mb-4",children:"Mitarbeiter-Checkliste"}),a.checklistActive?(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-sm text-gray-600",children:"Status"}),(0,s.jsx)("span",{className:"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-800",children:"Aktiv"})]}),a.checklistExpiresAt&&(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-sm text-gray-600",children:"G\xfcltig bis"}),(0,s.jsx)("span",{className:"text-sm",children:new Date(a.checklistExpiresAt).toLocaleDateString("de-DE")})]}),(0,s.jsxs)("div",{className:"mt-4 flex flex-col gap-2",children:[(0,s.jsx)(m.A,{text:"Link kopieren",variant:"outline",size:"sm",onClick:()=>
1{if(a.uuid){let e="https://bublitz-einrichtungen.de/survey/company/".concat(a.uuid);navigator.clipboard.writeText(e),alert("Survey-Link f\xfcr Mitarbeiter wurde in die Zwischenablage kopiert!")}}}),(0,s.jsx)(m.A,{text:"Um 30 Tage verl\xe4ngern",variant:"outline",size:"sm",onClick:async()=>{try{(await fetch("/api/admin/companies/".concat(t,"/checklist/extend"),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({extensionDays:30})})).ok?(alert("Checkliste wurde um 30 Tage verl\xe4ngert!"),U()):alert("Fehler beim Verl\xe4ngern der Checkliste")}catch(e){alert("Fehler beim Verl\xe4ngern der Checkliste")}}}),(0,s.jsx)(d(),{href:"/admin/mitarbeiter-checkliste/".concat(t,"/dashboard"),className:"w-full",children:(0,s.jsx)(m.A,{text:"Admin-Dashboard",variant:"primary",size:"sm"})}),(0,s.jsx)("button",{onClick:async()=>{try{w(!0);let e=await fetch("/api/admin/companies/".concat(t,"/impersonate?redirect=/kunden/").concat(t,"/mitarbeiter-checkliste&mode=json"),{credentials:"include"});if(!e.ok){let t=await e.json().catch(()=>({}));alert("Impersonation fehlgeschlagen: ".concat(t.message||e.statusText));return}let a=await e.json();window.location.href=a.redirect}catch(e){console.error("Impersonation error",e),alert("Impersonation fehlgeschlagen")}finally{w(!1)}},className:"w-full",disabled:k,children:(0,s.jsx)("span",{className:"inline-flex items-center justify-center px-3 py-1.5 border rounded text-sm text-gray-700 hover:text-gray-900 hover:bg-gray-50",children:k?"\xd6ffne Kunden-Auswertung...":"Kunden-Auswertung"})}),(0,s.jsx)(m.A,{text:"Checkliste deaktivieren",variant:"outline",size:"sm",onClick:async()=>{if(confirm("M\xf6chten Sie die Checkliste wirklich deaktivieren? Mitarbeiter k\xf6nnen dann keine Antworten mehr einreichen."))try{(await fetch("/api/admin/companies/".concat(t,"/checklist"),{method:"DELETE"})).ok?(alert("Checkliste wurde deaktiviert"),U()):alert("Fehler beim Deaktivieren")}catch(e){alert("Fehler beim Deaktivieren")}}})]})]}):(0,s.jsxs)("div",{className:"text-center",children:[(0,s.jsx)("p",{className:"text-sm text-gray-500 mb-4",children:"Checkliste nicht aktiviert"}),(0,s.jsx)(m.A,{text:"Checkliste aktivieren (30 Tage)",variant:"primary",size:"sm",onClick:async()=>{try{let e=await fetch("/api/admin/companies/".concat(t,"/checklist"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({validDays:30})});if(!e.ok){let t=await e.json();console.error("Checklist activation failed:",t),alert("Fehler beim Aktivieren: ".concat(t.error||t.message||"Unbekannter Fehler"));return}alert("Mitarbeiter-Checkliste wurde f\xfcr 30 Tage aktiviert!"),U()}catch(e){console.error("Error activating checklist:",e),alert("Fehler beim Aktivieren der Checkliste")}}})]})]}),(0,s.jsxs)("div",{className:"bg-white shadow rounded-lg p-6",children:[(0,s.jsx)("h3",{className:"font-medium mb-4",children:"Inventarisierung"}),a.inventoryActive?(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-sm text-gray-600",children:"Status"}),(0,s.jsx)("span",{className:"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-800",children:"Aktiv"})]}),a.inventoryActivatedAt&&(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-sm text-gray-600",children:"Aktiviert am"}),(0,s.jsx)("span",{className:"text-sm",children:new Date(a.inventoryActivatedAt).toLocaleDateString("de-DE")})]}),(0,s.jsxs)("div",{className:"mt-4 pt-4 border-t",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,s.jsx)("span",{className:"text-sm font-medium text-gray-700",children:"Abonnement"}),"premium"===a.subscriptionTier&&"active"===a.subscriptionStatus?(0,s.jsx)("span",{className:"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-yellow-100 text-yellow-800",children:"\uD83D\uDC8E Premium"}):(0,s.jsx)("span",{className:"inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-gray-100 text-gray-700",children:"Free"})]}),a.subscriptionStartedAt&&(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-xs text-gray-600",children:"Gestartet am"}),(0,s.jsx)("span",{className:"text-xs",children:new Date(a.subscriptionStartedAt).toLocaleDateString("de-DE")})]})]}),(0,s.jsx)("div",{className:"mt-4 pt-4 border-t space-y-2",children:"premium"===a.subscriptionTier&&"active"===a.subscriptionStatus?(0,s.jsx)(m.A,{text:"Premium deaktivieren",variant:"outline",size:"sm",disabled:A,onClick:()=>{confirm("M\xf6chten Sie Premium wirklich deaktivieren?")&&G()}}):(0,s.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,s.jsx)(m.A,{text:"Premium 1 Tag",variant:"primary",size:"sm",disabled:A,onClick:()=>V(1)}),(0,s.jsx)(m.A,{text:"Premium 30 Tage",variant:"primary",size:"sm",disabled:A,onClick:()=>V(30)})]})}),(0,s.jsxs)("div",{className:"mt-4 pt-4 border-t",children:[(0,s.jsx)("p",{className:"text-xs text-gray-500 mb-2",children:"Inventar-Fragen werden in der Mitarbeiter-Checkliste angezeigt"}),(0,s.jsx)(m.A,{text:"Inventar deaktivieren",variant:"outline",size:"sm",onClick:async()=>
1{if(confirm("M\xf6chten Sie die Inventarisierung wirklich deaktivieren?"))try{(await fetch("/api/admin/companies/".concat(t,"/inventory"),{method:"DELETE"})).ok&&(alert("Inventarisierung wurde deaktiviert"),U())}catch(e){alert("Fehler beim Deaktivieren")}}})]})]}):(0,s.jsxs)("div",{className:"text-center",children:[(0,s.jsx)("p",{className:"text-sm text-gray-500 mb-4",children:"Inventar-Fragen werden nicht angezeigt"}),(0,s.jsx)(m.A,{text:"Inventarisierung aktivieren",variant:"primary",size:"sm",onClick:async()=>{try{(await fetch("/api/admin/companies/".concat(t,"/inventory"),{method:"POST"})).ok&&(alert("Inventarisierung wurde aktiviert"),U())}catch(e){alert("Fehler beim Aktivieren")}}})]})]}),(0,s.jsxs)("div",{className:"bg-white shadow rounded-lg p-6",children:[(0,s.jsx)("h3",{className:"font-medium mb-4",children:"Weitere Informationen"}),(0,s.jsxs)("div",{className:"space-y-2",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-sm text-gray-600",children:"Erstellt am"}),(0,s.jsx)("span",{className:"text-sm",children:a.createdAt?new Date(a.createdAt).toLocaleDateString("de-DE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}):"-"})]}),a.createdFrom&&(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-sm text-gray-600",children:"Quelle"}),(0,s.jsx)("span",{className:"text-sm capitalize",children:a.createdFrom.replace("_"," ")})]}),a.last_contact_at&&(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-sm text-gray-600",children:"Letzter Kontakt"}),(0,s.jsx)("span",{className:"text-sm",children:new Date(a.last_contact_at).toLocaleDateString("de-DE")})]})]}),a.initial_message&&(0,s.jsxs)("div",{className:"mt-4 pt-4 border-t",children:[(0,s.jsx)("p",{className:"text-sm font-medium text-gray-700 mb-2",children:"Erste Nachricht:"}),(0,s.jsx)("p",{className:"text-sm text-gray-600 bg-gray-50 p-3 rounded",children:a.initial_message})]})]})]})]})})]}),y&&a&&(0,s.jsx)("div",{className:"fixed inset-0 z-50 overflow-y-auto",children:(0,s.jsxs)("div",{className:"flex items-center justify-center min-h-screen px-4",children:[(0,s.jsx)("div",{className:"fixed inset-0 bg-black opacity-50",onClick:()=>f(!1)}),(0,s.jsxs)("div",{className:"relative bg-white rounded-lg max-w-md w-full p-6",children:[(0,s.jsx)("h2",{className:"text-xl font-bold mb-4",children:"Portal-Zugang aktivieren"}),(0,s.jsxs)("p",{className:"text-gray-600 mb-6",children:["M\xf6chten Sie f\xfcr ",(0,s.jsx)("strong",{children:a.name})," einen Portal-Zugang erstellen?"]}),(0,s.jsx)("div",{className:"bg-blue-50 border border-blue-200 rounded-lg p-4 mb-6",children:(0,s.jsxs)("p",{className:"text-sm text-blue-800",children:[(0,s.jsx)("strong",{children:"Info:"})," Das Passwort wird automatisch generiert und die Zugangsdaten werden per E-Mail an die hinterlegte E-Mail-Adresse (",a.email,") gesendet."]})}),(0,s.jsxs)("div",{className:"flex gap-4",children:[(0,s.jsx)(m.A,{text:"Zugang erstellen",variant:"primary",onClick:_}),(0,s.jsx)(m.A,{text:"Abbrechen",variant:"outline",onClick:()=>f(!1)})]})]})]})})]}):null}},63393:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});var s=a(14232);let r=s.forwardRef(function(e,t){let{title:a,titleId:r,...i}=e;return s.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:t,"aria-labelledby":r},i),a?s.createElement("title",{id:r},a):null,s.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z"}))})}},e=>{e.O(0,[6585,636,6593,8792],()=>e(e.s=13109)),_N_E=e.O()}]);

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.