Files
app/dist/assets/AttendanceCreate-vV1GmYUg.js

2 lines
5.7 KiB
JavaScript

import{j as e,m as u}from"./vendor-animation-0s3FMHwK.js";import{g as w,r as o,L as p}from"./vendor-react-BVs3cwbi.js";import{a as S,u as z,F as n,A as i,c as x}from"./index-fMsy8JiX.js";import{F as P}from"./Forbidden-D25jV3Oq.js";import"./vendor-utils-Dyr8OjFr.js";const j="/api/admin";function U(){const r=S(),{hasPermission:v}=z(),_=w(),[y,b]=o.useState(!0),[m,c]=o.useState(!1),[f,g]=o.useState([]),l=new Date().toISOString().split("T")[0],[s,t]=o.useState({user_id:"",shift_date:l,leave_type:"work",leave_hours:8,arrival_date:l,arrival_time:"",break_start_date:l,break_start_time:"",break_end_date:l,break_end_time:"",departure_date:l,departure_time:"",notes:""});o.useEffect(()=>{(async()=>{try{const d=await(await x(`${j}/attendance.php?action=users`,{})).json();d.success&&g(d.data.users)}catch{r.error("Nepodařilo se načíst uživatele")}finally{b(!1)}})()},[r]);const k=async a=>{if(a.preventDefault(),!s.user_id||!s.shift_date){r.error("Vyplňte zaměstnance a datum směny");return}c(!0);try{const d=await(await x(`${j}/attendance.php?action=create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)})).json();d.success?(r.success(d.message),_(`/attendance/admin?month=${s.shift_date.substring(0,7)}`)):r.error(d.error)}catch{r.error("Chyba připojení")}finally{c(!1)}},N=a=>{t({...s,shift_date:a,arrival_date:a,break_start_date:a,break_end_date:a,departure_date:a})},h=s.leave_type==="work";return v("attendance.admin")?y?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",style:{maxWidth:"600px"},children:e.jsxs("div",{className:"admin-skeleton",style:{gap:"1.25rem"},children:[[0,1,2,3,4].map(a=>e.jsxs("div",{children:[e.jsx("div",{className:"admin-skeleton-line w-1/4",style:{marginBottom:"0.5rem",height:"10px"}}),e.jsx("div",{className:"admin-skeleton-line w-full h-10"})]},a)),e.jsx("div",{className:"admin-skeleton-line h-10",style:{width:"120px",borderRadius:"8px"}})]})})]}):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.jsx("div",{children:e.jsx("h1",{className:"admin-page-title",children:"Přidat záznam docházky"})}),e.jsx("div",{className:"admin-page-actions",children:e.jsx(p,{to:"/attendance/admin",className:"admin-btn admin-btn-secondary",children:"← Zpět na správu"})})]}),e.jsx(u.div,{className:"admin-card",style:{maxWidth:"600px"},initial:{opacity:0,y:20},animate:{opacity:1,y:0},transition:{duration:.4,delay:.1},children:e.jsx("div",{className:"admin-card-body",children:e.jsxs("form",{onSubmit:k,className:"admin-form",children:[e.jsxs("div",{className:"admin-form-row",children:[e.jsx(n,{label:"Zaměstnanec",required:!0,children:e.jsxs("select",{value:s.user_id,onChange:a=>t({...s,user_id:a.target.value}),className:"admin-form-select",required:!0,children:[e.jsx("option",{value:"",children:"Vyberte zaměstnance"}),f.map(a=>e.jsx("option",{value:a.id,children:a.name},a.id))]})}),e.jsx(n,{label:"Datum směny",required:!0,children:e.jsx(i,{mode:"date",value:s.shift_date,onChange:a=>N(a),required:!0})})]}),e.jsx(n,{label:"Typ záznamu",required:!0,children:e.jsxs("select",{value:s.leave_type,onChange:a=>t({...s,leave_type:a.target.value}),className:"admin-form-select",children:[e.jsx("option",{value:"work",children:"Práce"}),e.jsx("option",{value:"vacation",children:"Dovolená"}),e.jsx("option",{value:"sick",children:"Nemoc"}),e.jsx("option",{value:"holiday",children:"Svátek"}),e.jsx("option",{value:"unpaid",children:"Neplacené volno"})]})}),!h&&e.jsxs(n,{label:"Počet hodin",children:[e.jsx("input",{type:"number",value:s.leave_hours,onChange:a=>t({...s,leave_hours:parseFloat(a.target.value)}),min:"0.5",max:"24",step:"0.5",className:"admin-form-input"}),e.jsx("small",{className:"admin-form-hint",children:"Výchozí 8 hodin pro celý den"})]}),h&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"admin-form-row",children:[e.jsx(n,{label:"Příchod - datum",children:e.jsx(i,{mode:"date",value:s.arrival_date,onChange:a=>t({...s,arrival_date:a})})}),e.jsx(n,{label:"Příchod - čas",children:e.jsx(i,{mode:"time",value:s.arrival_time,onChange:a=>t({...s,arrival_time:a})})})]}),e.jsxs("div",{className:"admin-form-row",children:[e.jsx(n,{label:"Začátek pauzy - datum",children:e.jsx(i,{mode:"date",value:s.break_start_date,onChange:a=>t({...s,break_start_date:a})})}),e.jsx(n,{label:"Začátek pauzy - čas",children:e.jsx(i,{mode:"time",value:s.break_start_time,onChange:a=>t({...s,break_start_time:a})})})]}),e.jsxs("div",{className:"admin-form-row",children:[e.jsx(n,{label:"Konec pauzy - datum",children:e.jsx(i,{mode:"date",value:s.break_end_date,onChange:a=>t({...s,break_end_date:a})})}),e.jsx(n,{label:"Konec pauzy - čas",children:e.jsx(i,{mode:"time",value:s.break_end_time,onChange:a=>t({...s,break_end_time:a})})})]}),e.jsxs("div",{className:"admin-form-row",children:[e.jsx(n,{label:"Odchod - datum",children:e.jsx(i,{mode:"date",value:s.departure_date,onChange:a=>t({...s,departure_date:a})})}),e.jsx(n,{label:"Odchod - čas",children:e.jsx(i,{mode:"time",value:s.departure_time,onChange:a=>t({...s,departure_time:a})})})]})]}),e.jsx(n,{label:"Poznámka",children:e.jsx("textarea",{value:s.notes,onChange:a=>t({...s,notes:a.target.value}),className:"admin-form-textarea",rows:3})}),e.jsxs("div",{className:"admin-form-actions",children:[e.jsx(p,{to:"/attendance/admin",className:"admin-btn admin-btn-secondary",children:"Zrušit"}),e.jsx("button",{type:"submit",disabled:m,className:"admin-btn admin-btn-primary",children:m?"Ukládám...":"Uložit"})]})]})})})]}):e.jsx(P,{})}export{U as default};