Merge pull request #249 from R0m1k3/1.1

Fix task due date not saving correctly to a future date
This commit is contained in:
LogiFlow authored and GitHub committed 2025-08-19 08:59:12 +02:00
commit 3d69e9c477
4 files changed
+93 -2

No files matched your search

Binary file not shown.

After

Width:  |  Height:  |  Size: 330 KiB

+29 -2
View File
@@ -134,7 +134,12 @@ export default function TaskForm({ task, onClose }: TaskFormProps) {
createdBy: user?.id,
dueDate: data.dueDate || null
};
console.log('🚀 Creating task with data:', taskData);
console.log('🚀 Creating task with data:', {
...taskData,
dueDate: taskData.dueDate,
dueDateType: typeof taskData.dueDate,
dueDateISO: taskData.dueDate?.toISOString?.()
});
return apiRequest("/api/tasks", "POST", taskData);
},
onSuccess: () => {
@@ -156,7 +161,16 @@ export default function TaskForm({ task, onClose }: TaskFormProps) {
});
const updateMutation = useMutation({
mutationFn: (data: any) => apiRequest(`/api/tasks/${task?.id}`, "PUT", data),
mutationFn: (data: any) => {
console.log('🔄 Updating task with data:', {
taskId: task?.id,
data,
dueDate: data.dueDate,
dueDateType: typeof data.dueDate,
dueDateISO: data.dueDate?.toISOString?.()
});
return apiRequest(`/api/tasks/${task?.id}`, "PUT", data);
},
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ["/api/tasks"] });
toast({
@@ -176,6 +190,17 @@ export default function TaskForm({ task, onClose }: TaskFormProps) {
});
const onSubmit = (data: TaskFormData) => {
// Debug: log des données de soumission
console.log('📝 TaskForm onSubmit:', {
isEdit: !!task,
taskId: task?.id,
formData: data,
dueDate: data.dueDate,
dueDateType: typeof data.dueDate,
dueDateISO: data.dueDate?.toISOString(),
localSelectedStoreId
});
// Vérifier qu'un magasin est auto-sélectionné
if (!localSelectedStoreId) {
toast({
@@ -196,9 +221,11 @@ export default function TaskForm({ task, onClose }: TaskFormProps) {
assignedTo: data.assignedTo,
dueDate: data.dueDate || null,
};
console.log('🔄 Update task submitData:', submitData);
updateMutation.mutate(submitData);
} else {
// Création d'une nouvelle tâche - le groupId sera ajouté dans createMutation
console.log('➕ Create task data:', data);
createMutation.mutate(data);
}
};
+33
View File
@@ -1390,6 +1390,14 @@ export async function registerRoutes(app: Express): Promise<Server> {
createdBy: user.id,
};
console.log('📝 POST /api/tasks - Received data:', {
originalBody: req.body,
processedData: data,
dueDate: data.dueDate,
dueDateType: typeof data.dueDate,
dueDateValue: data.dueDate
});
// Check if user has access to the group
if (user.role !== 'admin') {
const userGroupIds = user.userGroups.map(ug => ug.groupId);
@@ -1399,6 +1407,12 @@ export async function registerRoutes(app: Express): Promise<Server> {
}
const task = await storage.createTask(data);
console.log('✅ Task created:', {
id: task.id,
title: task.title,
dueDate: task.dueDate,
dueDateType: typeof task.dueDate
});
res.json(task);
} catch (error) {
console.error("Error creating task:", error);
@@ -1420,6 +1434,19 @@ export async function registerRoutes(app: Express): Promise<Server> {
return res.status(404).json({ message: "Task not found" });
}
console.log('🔄 PUT /api/tasks/:id - Received data:', {
taskId: id,
originalTask: {
id: task.id,
title: task.title,
dueDate: task.dueDate,
dueDateType: typeof task.dueDate
},
updateBody: req.body,
newDueDate: req.body.dueDate,
newDueDateType: typeof req.body.dueDate
});
// Check permissions
if (user.role !== 'admin') {
const userGroupIds = user.userGroups.map(ug => ug.groupId);
@@ -1429,6 +1456,12 @@ export async function registerRoutes(app: Express): Promise<Server> {
}
const updatedTask = await storage.updateTask(id, req.body);
console.log('✅ Task updated:', {
id: updatedTask.id,
title: updatedTask.title,
dueDate: updatedTask.dueDate,
dueDateType: typeof updatedTask.dueDate
});
res.json(updatedTask);
} catch (error) {
console.error("Error updating task:", error);
+31
View File
@@ -1622,16 +1622,47 @@ export class DatabaseStorage implements IStorage {
}
async createTask(taskData: InsertTask): Promise<Task> {
console.log('💾 DatabaseStorage.createTask - Input:', {
taskData,
dueDate: taskData.dueDate,
dueDateType: typeof taskData.dueDate,
dueDateISO: taskData.dueDate instanceof Date ? taskData.dueDate.toISOString() : taskData.dueDate
});
const [task] = await db.insert(tasks).values(taskData).returning();
console.log('💾 DatabaseStorage.createTask - Result:', {
taskId: task.id,
title: task.title,
dueDate: task.dueDate,
dueDateType: typeof task.dueDate
});
return task;
}
async updateTask(id: number, taskData: Partial<InsertTask>): Promise<Task> {
console.log('💾 DatabaseStorage.updateTask - Input:', {
taskId: id,
taskData,
dueDate: taskData.dueDate,
dueDateType: typeof taskData.dueDate,
dueDateISO: taskData.dueDate instanceof Date ? taskData.dueDate.toISOString() : taskData.dueDate
});
const [task] = await db
.update(tasks)
.set({ ...taskData, updatedAt: new Date() })
.where(eq(tasks.id, id))
.returning();
console.log('💾 DatabaseStorage.updateTask - Result:', {
taskId: task.id,
title: task.title,
dueDate: task.dueDate,
dueDateType: typeof task.dueDate
});
return task;
}