Merge pull request #325 from R0m1k3/1.1

Improve date handling for task creation and retrieval
This commit is contained in:
LogiFlow authored and GitHub committed 2025-09-02 12:22:14 +02:00
commit a501a49214
4 files changed
+221 -5

No files matched your search

@@ -0,0 +1,209 @@
Search
Filter...
Lines
100
Actions
Fetching all deliveries
📢 [SERVER] Fetching announcements for user: admin_local environment: production
Customer Orders API called with: { groupIds: [ 2 ], userRole: 'admin' }
🔗 PRODUCTION: getOrders() récupéré 29 commandes avec relations
Orders returned: 29 items
GET /api/orders 200 in 95ms
❌ PRODUCTION: Delivery #127 (store 2) linked to order #81 (store 1) - STORE MISMATCH DETECTED!
Customer Orders returned: 42 items
🔗 PRODUCTION: getDeliveries() récupéré 59 livraisons avec relations
Deliveries returned: 59 items
📢 [SERVER] User found: { username: 'admin', role: 'admin' }
🎯 [PRODUCTION] Using PostgreSQL DASHBOARD_MESSAGES table
GET /api/customer-orders 304 in 109ms
GET /api/deliveries 304 in 111ms
🔍 [PRODUCTION] Raw messages from DB: 2 items: [
{
id: 16,
title: 'Mise à jour Prix',
content: 'Merci de mettre vos prix a jour tous les matins, certain magasin ne le font pas.',
type: 'success',
storeId: null,
createdBy: 'admin',
createdAt: 2025-08-18T10:45:08.585Z
},
{
id: 8,
title: 'Bon de Livraison',
content: 'Lorsque vous rentrez un numéro de bon de livraison, faite le a l identique, même les majuscules. Pour My candy Shop, prendre le numéro de commande.',
type: 'info',
storeId: null,
createdBy: 'admin_local',
createdAt: 2025-08-07T11:04:38.123Z
}
]
🔍 [PRODUCTION] Looking for user with username: admin
🔍 [PRODUCTION] Looking for user with username: admin_local
GET /api/groups 304 in 58ms
🔍 [PRODUCTION] User search result: Found
❌ [PRODUCTION] User not found with username: admin_local
🔍 [PRODUCTION] User search result: Not found
🎯 [PRODUCTION] Found announcements: 2
GET /api/announcements 304 in 117ms
GET /api/user 304 in 4ms
GET /api/users 304 in 15ms
HEAD /api/health 200 in 0ms
📝 POST /api/tasks - Received data: {
originalBody: {
title: 'test',
description: 'test',
priority: 'medium',
status: 'pending',
assignedTo: 'Non assigné',
startDate: '2025-09-02',
dueDate: '2025-09-07',
groupId: 2,
createdBy: 'admin'
},
processedData: {
title: 'test',
description: 'test',
priority: 'medium',
status: 'pending',
assignedTo: 'Non assigné',
startDate: '2025-09-02',
dueDate: '2025-09-07',
groupId: 2,
createdBy: 'admin_local'
},
dueDate: '2025-09-07',
dueDateType: 'string',
dueDateValue: '2025-09-07'
}
💾 DatabaseStorage.createTask - Input: {
taskData: {
title: 'test',
description: 'test',
priority: 'medium',
status: 'pending',
assignedTo: 'Non assigné',
startDate: '2025-09-02',
dueDate: '2025-09-07',
groupId: 2,
createdBy: 'admin_local'
},
dueDate: '2025-09-07',
dueDateType: 'string',
dueDateISO: '2025-09-07'
}
Error creating task: TypeError: value.toISOString is not a function
at PgTimestamp.mapToDriverValue (file:///app/node_modules/drizzle-orm/pg-core/columns/timestamp.js:34:18)
at file:///app/node_modules/drizzle-orm/sql/sql.js:131:73
at Array.map (<anonymous>)
at SQL.buildQueryFromSourceParams (file:///app/node_modules/drizzle-orm/sql/sql.js:73:32)
at file:///app/node_modules/drizzle-orm/sql/sql.js:92:21
at Array.map (<anonymous>)
at SQL.buildQueryFromSourceParams (file:///app/node_modules/drizzle-orm/sql/sql.js:73:32)
at file:///app/node_modules/drizzle-orm/sql/sql.js:95:21
at Array.map (<anonymous>)
at SQL.buildQueryFromSourceParams (file:///app/node_modules/drizzle-orm/sql/sql.js:73:32)
POST /api/tasks 500 in 7ms
Binary file not shown.

After

Width:  |  Height:  |  Size: 281 KiB

+2 -2
View File
@@ -52,7 +52,7 @@ export default function TasksSimplified() {
queryFn: () => {
const params = new URLSearchParams();
if (selectedStoreId) {
params.append('storeId', selectedStoreId);
params.append('storeId', selectedStoreId.toString());
}
return fetch(`/api/tasks?${params.toString()}`).then(res => res.json());
},
@@ -60,7 +60,7 @@ export default function TasksSimplified() {
});
// Récupération des magasins
const { data: stores = [] } = useQuery({
const { data: stores = [] } = useQuery<any[]>({
queryKey: ["/api/groups"],
enabled: !!user,
});
+10 -3
View File
@@ -1791,7 +1791,14 @@ export class DatabaseStorage implements IStorage {
dueDateISO: taskData.dueDate instanceof Date ? taskData.dueDate.toISOString() : taskData.dueDate
});
const [task] = await db.insert(tasks).values(taskData).returning();
// Convert string dates to Date objects for Drizzle PostgreSQL
const processedTaskData = {
...taskData,
startDate: taskData.startDate ? new Date(taskData.startDate) : null,
dueDate: taskData.dueDate ? new Date(taskData.dueDate) : null,
};
const [task] = await db.insert(tasks).values(processedTaskData).returning();
console.log('💾 DatabaseStorage.createTask - Result:', {
taskId: task.id,
@@ -1840,8 +1847,8 @@ export class DatabaseStorage implements IStorage {
if (taskData.dueDate === '' || taskData.dueDate === null) {
cleanData.dueDate = null;
} else {
// due_date est un date en PostgreSQL - on passe la chaîne directement
cleanData.dueDate = taskData.dueDate;
// due_date est un timestamp en PostgreSQL - convertir en Date object
cleanData.dueDate = new Date(taskData.dueDate);
}
}