Compare commits
4 Commits
v1.3.9
...
d14e97d7bd
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d14e97d7bd | ||
|
|
ef891f8e01 | ||
|
|
96ba5d034f | ||
|
|
2402b7cbc8 |
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "app-ts",
|
||||
"version": "1.3.9",
|
||||
"version": "1.4.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "app-ts",
|
||||
"version": "1.3.9",
|
||||
"version": "1.4.1",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@dnd-kit/core": "^6.3.1",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "app-ts",
|
||||
"version": "1.3.9",
|
||||
"version": "1.4.1",
|
||||
"description": "",
|
||||
"main": "dist/server.js",
|
||||
"scripts": {
|
||||
|
||||
@@ -61,7 +61,7 @@ export default function LeaveRequests() {
|
||||
|
||||
const fetchRequests = useCallback(async () => {
|
||||
try {
|
||||
const response = await apiFetch(`${API_BASE}/leave-requests`);
|
||||
const response = await apiFetch(`${API_BASE}/leave-requests?mine=1`);
|
||||
if (response.status === 401) return;
|
||||
const result = await response.json();
|
||||
if (result.success) {
|
||||
|
||||
@@ -29,7 +29,7 @@ export default async function leaveRequestsRoutes(
|
||||
const isAdmin = authData.permissions.includes("attendance.approve");
|
||||
|
||||
const where: Record<string, unknown> = {};
|
||||
if (!isAdmin) where.user_id = authData.userId;
|
||||
if (!isAdmin || query.mine === "1") where.user_id = authData.userId;
|
||||
else if (query.user_id) where.user_id = Number(query.user_id);
|
||||
if (query.status) where.status = String(query.status);
|
||||
|
||||
|
||||
@@ -39,7 +39,9 @@ export const AttendanceBalancesSchema = z.object({
|
||||
|
||||
export const AttendanceBulkSchema = z.object({
|
||||
month: z.string().regex(/^\d{4}-\d{2}$/, "Měsíc je povinný (formát YYYY-MM)"),
|
||||
user_ids: z.array(z.number()).min(1, "Vyberte alespoň jednoho zaměstnance"),
|
||||
user_ids: z
|
||||
.array(z.union([z.number(), z.string()]).transform((v) => Number(v)))
|
||||
.min(1, "Vyberte alespoň jednoho zaměstnance"),
|
||||
arrival_time: z.string().optional().default("08:00"),
|
||||
departure_time: z.string().optional().default("16:30"),
|
||||
break_start_time: z.string().optional().default("12:00"),
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { attendance_leave_type, Prisma } from "@prisma/client";
|
||||
import prisma from "../config/database";
|
||||
import { getBusinessDaysInMonth } from "../utils/czech-holidays";
|
||||
import { getBusinessDaysInMonth, isHoliday } from "../utils/czech-holidays";
|
||||
import { localDateStr } from "../utils/date";
|
||||
import { getSystemSettings } from "./system-settings";
|
||||
|
||||
@@ -1087,6 +1087,7 @@ export async function bulkCreateAttendance(data: BulkAttendanceData) {
|
||||
const dow = date.getDay();
|
||||
|
||||
if (dow === 0 || dow === 6) continue;
|
||||
if (isHoliday(dateStr)) continue;
|
||||
|
||||
if (existingSet.has(`${userId}:${dateStr}`)) {
|
||||
skipped++;
|
||||
|
||||
Reference in New Issue
Block a user