mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-14 18:59:18 +02:00
Enhance task management with start dates and improved visibility
Introduce task start dates, allowing for future task scheduling and better visibility for managers and employees. Admins can now see all tasks, while other roles only see tasks that have started or have no start date. Includes UI updates to visually distinguish future tasks and a new form for creating tasks with start and due dates. Replit-Commit-Author: Agent Replit-Commit-Session-Id: cc2d271b-82f0-4d6a-9302-a0b067ffb429 Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/cc2d271b-82f0-4d6a-9302-a0b067ffb429/kX6A8MG
This commit is contained in:
1 parent
87cc2a0f88
commit
aa1906a9bb
7 files changed
+701
-512
No files matched your search
+1
-1
@@ -1362,7 +1362,7 @@ export async function registerRoutes(app: Express): Promise<Server> {
|
||||
timestamp: new Date().toISOString()
|
||||
});
|
||||
|
||||
const tasks = await storage.getTasks(groupIds);
|
||||
const tasks = await storage.getTasks(groupIds, user.role);
|
||||
console.log('📋 Tasks returned:', {
|
||||
count: tasks.length,
|
||||
userId: user.id,
|
||||
|
||||
+28
-5
@@ -172,8 +172,8 @@ export interface IStorage {
|
||||
restoreDlcProductStock(id: number): Promise<DlcProductFrontend>;
|
||||
getDlcStats(groupIds?: number[]): Promise<{ active: number; expiringSoon: number; expired: number; }>;
|
||||
|
||||
// Task operations
|
||||
getTasks(groupIds?: number[]): Promise<any[]>;
|
||||
// Task operations
|
||||
getTasks(groupIds?: number[], userRole?: string): Promise<any[]>;
|
||||
getTask(id: number): Promise<any | undefined>;
|
||||
createTask(task: InsertTask): Promise<Task>;
|
||||
updateTask(id: number, task: Partial<InsertTask>): Promise<Task>;
|
||||
@@ -1584,7 +1584,10 @@ export class DatabaseStorage implements IStorage {
|
||||
};
|
||||
}
|
||||
|
||||
async getTasks(groupIds?: number[]): Promise<TaskWithRelations[]> {
|
||||
async getTasks(groupIds?: number[], userRole?: string): Promise<TaskWithRelations[]> {
|
||||
const today = new Date();
|
||||
today.setHours(0, 0, 0, 0);
|
||||
|
||||
let query = db
|
||||
.select({
|
||||
task: tasks,
|
||||
@@ -1593,14 +1596,34 @@ export class DatabaseStorage implements IStorage {
|
||||
.from(tasks)
|
||||
.leftJoin(groups, eq(tasks.groupId, groups.id));
|
||||
|
||||
// Appliquer le filtrage par magasin si spécifié
|
||||
let whereConditions = [];
|
||||
if (groupIds && groupIds.length > 0) {
|
||||
query = query.where(inArray(tasks.groupId, groupIds));
|
||||
whereConditions.push(inArray(tasks.groupId, groupIds));
|
||||
}
|
||||
|
||||
// Filtrage par rôle pour la date de départ
|
||||
if (userRole === 'manager' || userRole === 'employee') {
|
||||
// Managers et employés : seulement les tâches dont la date de départ est atteinte ou passée
|
||||
whereConditions.push(
|
||||
or(
|
||||
isNull(tasks.startDate), // Tâches sans date de départ (toujours visibles)
|
||||
lte(tasks.startDate, today) // Tâches dont la date de départ est arrivée
|
||||
)
|
||||
);
|
||||
}
|
||||
// Admin et directeur voient toutes les tâches (pas de filtre additionnel)
|
||||
|
||||
if (whereConditions.length > 0) {
|
||||
query = query.where(and(...whereConditions));
|
||||
}
|
||||
|
||||
const results = await query.orderBy(desc(tasks.createdAt));
|
||||
return results.map((row: any) => ({
|
||||
...row.task,
|
||||
group: row.group
|
||||
group: row.group,
|
||||
// Ajouter le statut "future" pour les tâches futures (admin/directeur)
|
||||
isFutureTask: row.task.startDate && new Date(row.task.startDate) > today
|
||||
}));
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user