import{j as e,m as u,A as O}from"./vendor-animation-0s3FMHwK.js";import{r,L as W}from"./vendor-react-BVs3cwbi.js";import{a as q,u as U,c as y,b as H,f as x,F as l,A as K,C as R}from"./index-fMsy8JiX.js";import{F as J}from"./Forbidden-D25jV3Oq.js";import{b as G}from"./attendanceHelpers-D6sLEw0q.js";import"./vendor-utils-Dyr8OjFr.js";const j="/api/admin";function te(){const o=q(),{hasPermission:M}=U(),[P,N]=r.useState(!0),[f,g]=r.useState(!1),[T,D]=r.useState({trips:[],vehicles:[],month:"",totals:{total:0,business:0,private:0,count:0}}),[w,m]=r.useState(!1),[h,z]=r.useState(null),[C,_]=r.useState({show:!1,tripId:null}),[a,n]=r.useState({vehicle_id:"",trip_date:new Date().toISOString().split("T")[0],start_km:"",end_km:"",route_from:"",route_to:"",is_business:1,notes:""}),[c,d]=r.useState({}),[,p]=r.useState(0),v=r.useCallback(async(s=!0)=>{s&&N(!0);try{const i=await(await y(`${j}/trips.php`,{})).json();i.success&&D(i.data)}catch{o.error("Nepodařilo se načíst data")}finally{s&&N(!1)}},[o]);if(r.useEffect(()=>{v()},[v]),H(w),!M("trips.record"))return e.jsx(J,{});const B=async s=>{if(!s){p(0);return}try{const i=await(await y(`${j}/trips.php?action=last_km&vehicle_id=${s}`,{})).json();i.success&&(p(i.data.last_km),h||n(b=>({...b,start_km:i.data.last_km})))}catch{}},S=()=>{z(null);const s=new Date().toISOString().split("T")[0];n({vehicle_id:"",trip_date:s,start_km:"",end_km:"",route_from:"",route_to:"",is_business:1,notes:""}),p(0),d({}),m(!0)},E=s=>{z(s),n({vehicle_id:s.vehicle_id,trip_date:s.trip_date,start_km:s.start_km,end_km:s.end_km,route_from:s.route_from,route_to:s.route_to,is_business:s.is_business,notes:s.notes||""}),p(s.start_km),d({}),m(!0)},I=s=>{n(t=>({...t,vehicle_id:s})),B(s)},V=()=>{const s={};return a.vehicle_id||(s.vehicle_id="Vyberte vozidlo"),a.trip_date||(s.trip_date="Zadejte datum"),a.start_km||(s.start_km="Zadejte počáteční km"),a.end_km||(s.end_km="Zadejte konečný km"),a.start_km&&a.end_km&&parseInt(a.end_km)<=parseInt(a.start_km)&&(s.end_km="Musí být větší než počáteční"),a.route_from||(s.route_from="Zadejte místo odjezdu"),a.route_to||(s.route_to="Zadejte místo příjezdu"),d(s),Object.keys(s).length===0},Z=async()=>{if(V()){g(!0);try{const s=h?`${j}/trips.php?id=${h.id}`:`${j}/trips.php`,i=await(await y(s,{method:h?"PUT":"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)})).json();i.success?(m(!1),await v(!1),await new Promise(b=>setTimeout(b,300)),o.success(i.message)):o.error(i.error)}catch{o.error("Chyba připojení")}finally{g(!1)}}},$=async s=>{try{const i=await(await y(`${j}/trips.php?id=${s}`,{method:"DELETE"})).json();i.success?(await v(!1),o.success(i.message)):o.error(i.error)}catch{o.error("Chyba připojení")}finally{_({show:!1,tripId:null})}},A=()=>{const s=parseInt(a.start_km)||0,t=parseInt(a.end_km)||0;return t>s?t-s:0};if(P)return e.jsx("div",{children:e.jsxs("div",{className:"admin-skeleton",style:{padding:0,gap:"1.5rem"},children:[e.jsxs("div",{className:"admin-skeleton-row",style:{justifyContent:"space-between"},children:[e.jsxs("div",{children:[e.jsx("div",{className:"admin-skeleton-line h-8",style:{width:"200px",marginBottom:"0.5rem"}}),e.jsx("div",{className:"admin-skeleton-line",style:{width:"140px"}})]}),e.jsx("div",{className:"admin-skeleton-line h-10",style:{width:"140px",borderRadius:"8px"}})]}),e.jsx("div",{className:"admin-grid admin-grid-4",children:[0,1,2,3].map(s=>e.jsxs("div",{className:"admin-stat-card",children:[e.jsx("div",{className:"admin-skeleton-line",style:{width:"60%",height:"11px",marginBottom:"0.5rem"}}),e.jsx("div",{className:"admin-skeleton-line",style:{width:"40%",height:"28px",marginBottom:"0.5rem"}}),e.jsx("div",{className:"admin-skeleton-line",style:{width:"50%",height:"12px"}})]},s))}),e.jsx("div",{className:"admin-card",children:e.jsx("div",{className:"admin-skeleton",style:{gap:"1.25rem"},children:[0,1,2,3,4].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/3"}),e.jsx("div",{className:"admin-skeleton-line w-1/4"})]},s))})})]})});const{trips:L,vehicles:F,totals:k}=T;return e.jsxs("div",{children:[e.jsxs(u.div,{className:"admin-page-header",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4},children:[e.jsxs("div",{children:[e.jsx("h1",{className:"admin-page-title",children:"Kniha jízd"}),e.jsx("p",{className:"admin-page-subtitle",children:new Date().toLocaleDateString("cs-CZ",{month:"long",year:"numeric"})})]}),e.jsx("div",{className:"admin-page-actions",children:e.jsxs("button",{onClick:S,className:"admin-btn admin-btn-primary",children:[e.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[e.jsx("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),e.jsx("line",{x1:"5",y1:"12",x2:"19",y2:"12"})]}),"Přidat jízdu"]})})]}),e.jsxs(u.div,{className:"admin-grid admin-grid-4",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4,delay:.1},children:[e.jsxs("div",{className:"admin-stat-card info",children:[e.jsx("div",{className:"admin-stat-icon info",children:e.jsxs("svg",{width:"22",height:"22",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("line",{x1:"12",y1:"20",x2:"12",y2:"10"}),e.jsx("line",{x1:"18",y1:"20",x2:"18",y2:"4"}),e.jsx("line",{x1:"6",y1:"20",x2:"6",y2:"16"})]})}),e.jsxs("div",{className:"admin-stat-content",children:[e.jsx("span",{className:"admin-stat-value",children:k.count}),e.jsx("span",{className:"admin-stat-label",children:"Počet jízd"})]})]}),e.jsxs("div",{className:"admin-stat-card",children:[e.jsx("div",{className:"admin-stat-icon",children:e.jsx("svg",{width:"22",height:"22",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:e.jsx("path",{d:"M22 12h-4l-3 9L9 3l-3 9H2"})})}),e.jsxs("div",{className:"admin-stat-content",children:[e.jsxs("span",{className:"admin-stat-value",children:[x(k.total)," km"]}),e.jsx("span",{className:"admin-stat-label",children:"Celkem naježděno"})]})]}),e.jsxs("div",{className:"admin-stat-card success",children:[e.jsx("div",{className:"admin-stat-icon success",children:e.jsxs("svg",{width:"22",height:"22",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("rect",{x:"1",y:"3",width:"15",height:"13",rx:"2",ry:"2"}),e.jsx("path",{d:"M16 8h2a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-1"}),e.jsx("circle",{cx:"5.5",cy:"18",r:"2"}),e.jsx("circle",{cx:"18.5",cy:"18",r:"2"}),e.jsx("path",{d:"M8 18h8"})]})}),e.jsxs("div",{className:"admin-stat-content",children:[e.jsxs("span",{className:"admin-stat-value",children:[x(k.business)," km"]}),e.jsx("span",{className:"admin-stat-label",children:"Služební"})]})]}),e.jsxs("div",{className:"admin-stat-card warning",children:[e.jsx("div",{className:"admin-stat-icon warning",children:e.jsxs("svg",{width:"22",height:"22",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{d:"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"}),e.jsx("polyline",{points:"9 22 9 12 15 12 15 22"})]})}),e.jsxs("div",{className:"admin-stat-content",children:[e.jsxs("span",{className:"admin-stat-value",children:[x(k.private)," km"]}),e.jsx("span",{className:"admin-stat-label",children:"Soukromé"})]})]})]}),e.jsxs(u.div,{className:"admin-card mt-6",initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4,delay:.2},children:[e.jsxs("div",{className:"admin-card-header flex-between",children:[e.jsx("h2",{className:"admin-card-title",children:"Poslední jízdy"}),e.jsx(W,{to:"/trips/history",className:"admin-btn admin-btn-secondary admin-btn-sm",children:"Zobrazit historii"})]}),e.jsx("div",{className:"admin-card-body",children:L.length===0?e.jsxs("div",{className:"admin-empty-state",children:[e.jsx("div",{className:"admin-empty-icon",children:e.jsxs("svg",{width:"28",height:"28",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),e.jsx("polyline",{points:"14 2 14 8 20 8"}),e.jsx("line",{x1:"16",y1:"13",x2:"8",y2:"13"}),e.jsx("line",{x1:"16",y1:"17",x2:"8",y2:"17"})]})}),e.jsx("p",{children:"Zatím nemáte žádné záznamy jízd."}),e.jsx("button",{onClick:S,className:"admin-btn admin-btn-primary",children:"Přidat první jízdu"})]}):e.jsx("div",{className:"admin-table-responsive",children:e.jsxs("table",{className:"admin-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Datum"}),e.jsx("th",{children:"Vozidlo"}),e.jsx("th",{children:"Řidič"}),e.jsx("th",{children:"Trasa"}),e.jsx("th",{children:"Vzdálenost"}),e.jsx("th",{children:"Typ"}),e.jsx("th",{children:"Akce"})]})}),e.jsx("tbody",{children:L.slice(0,10).map(s=>e.jsxs("tr",{children:[e.jsx("td",{className:"admin-mono",children:G(s.trip_date)}),e.jsx("td",{children:e.jsx("span",{className:"admin-badge",children:s.spz})}),e.jsx("td",{children:s.driver_name}),e.jsx("td",{children:e.jsxs("span",{style:{whiteSpace:"nowrap"},children:[s.route_from," → ",s.route_to]})}),e.jsx("td",{className:"admin-mono",children:e.jsxs("strong",{children:[x(s.distance)," km"]})}),e.jsx("td",{children:e.jsx("span",{className:`admin-badge ${s.is_business?"admin-badge-success":"admin-badge-warning"}`,children:s.is_business?"Služební":"Soukromá"})}),e.jsx("td",{children:e.jsxs("div",{className:"admin-table-actions",children:[e.jsx("button",{onClick:()=>E(s),className:"admin-btn-icon",title:"Upravit","aria-label":"Upravit",children:e.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),e.jsx("path",{d:"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"})]})}),e.jsx("button",{onClick:()=>_({show:!0,tripId:s.id}),className:"admin-btn-icon danger",title:"Smazat","aria-label":"Smazat",children:e.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("polyline",{points:"3 6 5 6 21 6"}),e.jsx("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})]})})]})})]},s.id))})]})})})]}),e.jsx(O,{children:w&&e.jsxs(u.div,{className:"admin-modal-overlay",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.2},children:[e.jsx("div",{className:"admin-modal-backdrop",onClick:()=>m(!1)}),e.jsxs(u.div,{className:"admin-modal admin-modal-lg",initial:{opacity:0,scale:.95,y:20},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.95,y:20},transition:{duration:.2},children:[e.jsx("div",{className:"admin-modal-header",children:e.jsx("h2",{className:"admin-modal-title",children:h?"Upravit jízdu":"Přidat jízdu"})}),e.jsx("div",{className:"admin-modal-body",children:e.jsxs("div",{className:"admin-form",children:[e.jsxs("div",{className:"admin-form-row",children:[e.jsx(l,{label:"Vozidlo",error:c.vehicle_id,required:!0,children:e.jsxs("select",{value:a.vehicle_id,onChange:s=>{I(s.target.value),d(t=>({...t,vehicle_id:void 0}))},className:"admin-form-select",children:[e.jsx("option",{value:"",children:"Vyberte vozidlo"}),F.map(s=>e.jsxs("option",{value:s.id,children:[s.spz," - ",s.name]},s.id))]})}),e.jsx(l,{label:"Datum jízdy",error:c.trip_date,required:!0,children:e.jsx(K,{mode:"date",value:a.trip_date,onChange:s=>{n({...a,trip_date:s}),d(t=>({...t,trip_date:void 0}))}})})]}),e.jsxs("div",{className:"admin-form-row admin-form-row-3",children:[e.jsx(l,{label:"Počáteční stav km",error:c.start_km,required:!0,children:e.jsx("input",{type:"number",inputMode:"numeric",value:a.start_km,onChange:s=>{n({...a,start_km:s.target.value}),d(t=>({...t,start_km:void 0}))},className:"admin-form-input",min:"0"})}),e.jsx(l,{label:"Konečný stav km",error:c.end_km,required:!0,children:e.jsx("input",{type:"number",inputMode:"numeric",value:a.end_km,onChange:s=>{n({...a,end_km:s.target.value}),d(t=>({...t,end_km:void 0}))},className:"admin-form-input",min:"0"})}),e.jsx(l,{label:"Vzdálenost",children:e.jsx("input",{type:"text",value:`${x(A())} km`,className:"admin-form-input",readOnly:!0,disabled:!0})})]}),e.jsxs("div",{className:"admin-form-row",children:[e.jsx(l,{label:"Místo odjezdu",error:c.route_from,required:!0,children:e.jsx("input",{type:"text",value:a.route_from,onChange:s=>{n({...a,route_from:s.target.value}),d(t=>({...t,route_from:void 0}))},className:"admin-form-input",placeholder:"Např. Praha"})}),e.jsx(l,{label:"Místo příjezdu",error:c.route_to,required:!0,children:e.jsx("input",{type:"text",value:a.route_to,onChange:s=>{n({...a,route_to:s.target.value}),d(t=>({...t,route_to:void 0}))},className:"admin-form-input",placeholder:"Např. Brno"})})]}),e.jsx(l,{label:"Typ jízdy",children:e.jsxs("select",{value:a.is_business,onChange:s=>n({...a,is_business:parseInt(s.target.value)}),className:"admin-form-select",children:[e.jsx("option",{value:1,children:"Služební"}),e.jsx("option",{value:0,children:"Soukromá"})]})}),e.jsx(l,{label:"Poznámky",children:e.jsx("textarea",{value:a.notes,onChange:s=>n({...a,notes:s.target.value}),className:"admin-form-textarea",rows:2,placeholder:"Volitelné poznámky..."})})]})}),e.jsxs("div",{className:"admin-modal-footer",children:[e.jsx("button",{type:"button",onClick:()=>m(!1),className:"admin-btn admin-btn-secondary",disabled:f,children:"Zrušit"}),e.jsx("button",{type:"button",onClick:Z,className:"admin-btn admin-btn-primary",disabled:f,children:f?"Ukládám...":"Uložit"})]})]})]})}),e.jsx(R,{isOpen:C.show,onClose:()=>_({show:!1,tripId:null}),onConfirm:()=>$(C.tripId),title:"Smazat jízdu",message:"Opravdu chcete smazat tento záznam?",confirmText:"Smazat",cancelText:"Zrušit",type:"danger"})]})}export{te as default};