Files
app/dist/assets/ProjectCreate-B8awV2Y4.js
2026-03-13 09:19:40 +01:00

2 lines
5.5 KiB
JavaScript

import{j as e,m as w}from"./vendor-animation-0s3FMHwK.js";import{g as O,r,L as A}from"./vendor-react-BVs3cwbi.js";import{a as M,u as R,F as m,A as Z,c as x}from"./index-BBlIrj2z.js";import{F as $}from"./Forbidden-D25jV3Oq.js";import"./vendor-utils-Dyr8OjFr.js";const v="/api/admin";function U(){const _=O(),c=M(),{hasPermission:C}=R(),[a,d]=r.useState({project_number:"",name:"",customer_id:null,customer_name:"",start_date:new Date().toISOString().split("T")[0]}),[f,y]=r.useState(!1),[k,u]=r.useState({}),[S,z]=r.useState(!0),[p,E]=r.useState([]),[o,N]=r.useState(""),[h,l]=r.useState(!1);r.useEffect(()=>{(async()=>{try{const[t,n]=await Promise.all([x(`${v}/projects.php?action=next_number`),x(`${v}/customers.php`)]),i=await t.json();i.success&&d(P=>({...P,project_number:i.data.number}));const g=await n.json();g.success&&E(g.data.customers)}catch{c.error("Chyba při načítání dat")}finally{z(!1)}})()},[c]);const b=r.useMemo(()=>{if(!o)return p;const s=o.toLowerCase();return p.filter(t=>(t.name||"").toLowerCase().includes(s)||(t.company_id||"").includes(o)||(t.city||"").toLowerCase().includes(s))},[p,o]);if(r.useEffect(()=>{const s=()=>l(!1);if(h)return document.addEventListener("click",s),()=>document.removeEventListener("click",s)},[h]),!C("projects.create"))return e.jsx($,{});const F=s=>{d(t=>({...t,customer_id:s.id,customer_name:s.name})),u(t=>({...t,customer_id:void 0})),N(""),l(!1)},D=()=>{d(s=>({...s,customer_id:null,customer_name:""}))},j=(s,t)=>{d(n=>({...n,[s]:t})),u(n=>({...n,[s]:void 0}))},L=async()=>{const s={};if(a.name.trim()||(s.name="Název projektu je povinný"),a.customer_id||(s.customer_id="Vyberte zákazníka"),u(s),!(Object.keys(s).length>0)){y(!0);try{const t={name:a.name.trim(),customer_id:a.customer_id,start_date:a.start_date,project_number:a.project_number.trim()},i=await(await x(`${v}/projects.php`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})).json();i.success?_(`/projects/${i.data.project_id}`,{state:{created:!0}}):c.error(i.error||"Nepodařilo se vytvořit projekt")}catch{c.error("Chyba připojení")}finally{y(!1)}}};return S?e.jsxs("div",{className:"admin-skeleton",style:{padding:0,gap:"1.5rem"},children:[e.jsx("div",{className:"admin-skeleton-row",style:{justifyContent:"space-between"},children:e.jsx("div",{className:"admin-skeleton-line h-8",style:{width:"200px"}})}),e.jsx("div",{className:"admin-card",children:e.jsx("div",{className:"admin-skeleton",style:{gap:"1.25rem"},children:[0,1,2,3].map(s=>e.jsxs("div",{className:"admin-skeleton-row",children:[e.jsx("div",{className:"admin-skeleton-line w-1/4"}),e.jsx("div",{className:"admin-skeleton-line w-1/2"})]},s))})})]}):e.jsxs("div",{children:[e.jsxs(w.div,{className:"admin-page-header",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"1rem"},children:[e.jsx(A,{to:"/projects",className:"admin-btn-icon",title:"Zpět","aria-label":"Zpět",children:e.jsx("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:e.jsx("path",{d:"M19 12H5M12 19l-7-7 7-7"})})}),e.jsxs("div",{children:[e.jsx("h1",{className:"admin-page-title",children:"Nový projekt"}),e.jsx("p",{className:"admin-page-subtitle",children:"Ruční vytvoření projektu"})]})]}),e.jsx("div",{className:"admin-page-actions",children:e.jsx("button",{onClick:L,disabled:f,className:"admin-btn admin-btn-primary",children:f?"Ukládám...":"Uložit"})})]}),e.jsx(w.div,{className:"admin-card",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4,delay:.1},style:{overflow:"visible"},children:e.jsxs("div",{className:"admin-card-body",children:[e.jsx("h3",{className:"admin-card-title",children:"Základní údaje"}),e.jsxs("div",{className:"admin-form",children:[e.jsxs("div",{className:"admin-form-row",children:[e.jsx(m,{label:"Číslo projektu",children:e.jsx("input",{type:"text",value:a.project_number,onChange:s=>j("project_number",s.target.value),className:"admin-form-input",placeholder:"Ponechte prázdné pro automatické"})}),e.jsx(m,{label:"Název",error:k.name,required:!0,children:e.jsx("input",{type:"text",value:a.name,onChange:s=>j("name",s.target.value),className:"admin-form-input",placeholder:"Název projektu"})})]}),e.jsxs("div",{className:"admin-form-row",children:[e.jsx(m,{label:"Zákazník",error:k.customer_id,required:!0,children:a.customer_id?e.jsxs("div",{className:"offers-customer-selected",children:[e.jsx("span",{children:a.customer_name}),e.jsx("button",{type:"button",onClick:D,className:"admin-btn-icon",title:"Odebrat zákazníka","aria-label":"Odebrat zákazníka",children:e.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),e.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}):e.jsxs("div",{className:"offers-customer-select",onClick:s=>s.stopPropagation(),children:[e.jsx("input",{type:"text",value:o,onChange:s=>{N(s.target.value),l(!0)},onFocus:()=>l(!0),className:"admin-form-input",placeholder:"Hledat zákazníka..."}),h&&e.jsx("div",{className:"offers-customer-dropdown",children:b.length===0?e.jsx("div",{className:"offers-customer-dropdown-empty",children:"Žádní zákazníci"}):b.slice(0,20).map(s=>e.jsxs("div",{className:"offers-customer-dropdown-item",onMouseDown:()=>F(s),children:[e.jsx("div",{children:s.name}),s.city&&e.jsx("div",{children:s.city})]},s.id))})]})}),e.jsx(m,{label:"Datum zahájení",children:e.jsx(Z,{mode:"date",value:a.start_date,onChange:s=>j("start_date",s)})})]})]})]})})]})}export{U as default};