mirror of
https://github.com/R0m1k3/LogiFlow.git
synced 2026-10-17 20:27:10 +02:00
4 files changed
+39
-5
No files matched your search
Binary file not shown.
|
After Width: | Height: | Size: 268 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 331 KiB |
@@ -98,7 +98,14 @@ export default function Layout({ children }: LayoutProps) {
|
|||||||
// IMPORTANT FIX: Pour les rôles directeur/manager, forcer la sélection d'un magasin spécifique
|
// IMPORTANT FIX: Pour les rôles directeur/manager, forcer la sélection d'un magasin spécifique
|
||||||
// si aucun n'est sélectionné et qu'ils n'ont accès qu'à un seul magasin
|
// si aucun n'est sélectionné et qu'ils n'ont accès qu'à un seul magasin
|
||||||
if ((user.role === 'directeur' || user.role === 'manager') && !selectedStoreId && stores.length === 1 && !needsUpdate) {
|
if ((user.role === 'directeur' || user.role === 'manager') && !selectedStoreId && stores.length === 1 && !needsUpdate) {
|
||||||
console.log('🏪 Auto-selecting single available store for directeur/manager:', stores[0].id);
|
console.log('🏪 Auto-selecting single available store for directeur/manager:', {
|
||||||
|
storeId: stores[0].id,
|
||||||
|
storeName: stores[0].name,
|
||||||
|
userRole: user.role,
|
||||||
|
userId: user.id,
|
||||||
|
previousSelectedStoreId: selectedStoreId,
|
||||||
|
timestamp: new Date().toISOString()
|
||||||
|
});
|
||||||
const singleStoreId = stores[0].id;
|
const singleStoreId = stores[0].id;
|
||||||
setSelectedStoreId(singleStoreId);
|
setSelectedStoreId(singleStoreId);
|
||||||
localStorage.setItem('selectedStoreId', singleStoreId.toString());
|
localStorage.setItem('selectedStoreId', singleStoreId.toString());
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { useState } from "react";
|
import { useState, useEffect } from "react";
|
||||||
import { useQuery, useQueryClient } from "@tanstack/react-query";
|
import { useQuery, useQueryClient } from "@tanstack/react-query";
|
||||||
import { useAuthUnified } from "@/hooks/useAuthUnified";
|
import { useAuthUnified } from "@/hooks/useAuthUnified";
|
||||||
import { useStore } from "@/components/Layout";
|
import { useStore } from "@/components/Layout";
|
||||||
@@ -92,7 +92,7 @@ function TaskFormInline({ task, onClose, selectedStoreId, user }: any) {
|
|||||||
method,
|
method,
|
||||||
taskData,
|
taskData,
|
||||||
selectedStoreId,
|
selectedStoreId,
|
||||||
finalGroupId: taskData.groupId
|
finalGroupId: (taskData as any).groupId
|
||||||
});
|
});
|
||||||
|
|
||||||
const response = await fetch(url, {
|
const response = await fetch(url, {
|
||||||
@@ -317,6 +317,32 @@ export default function Tasks() {
|
|||||||
const { toast } = useToast();
|
const { toast } = useToast();
|
||||||
const queryClient = useQueryClient();
|
const queryClient = useQueryClient();
|
||||||
|
|
||||||
|
// Debug enablement condition for tasks query
|
||||||
|
const isQueryEnabled = !!user && (user.role === 'admin' || (user.role === 'directeur' || user.role === 'manager' ? !!selectedStoreId : true));
|
||||||
|
console.log('🔍 TASK QUERY ENABLEMENT DEBUG:', {
|
||||||
|
hasUser: !!user,
|
||||||
|
userRole: user?.role,
|
||||||
|
selectedStoreId,
|
||||||
|
isAdmin: user?.role === 'admin',
|
||||||
|
isDirecteurOrManager: user?.role === 'directeur' || user?.role === 'manager',
|
||||||
|
hasSelectedStore: !!selectedStoreId,
|
||||||
|
finalEnabled: isQueryEnabled,
|
||||||
|
storeInitialized,
|
||||||
|
timestamp: new Date().toISOString()
|
||||||
|
});
|
||||||
|
|
||||||
|
// Force refresh when selectedStoreId changes for directeur/manager
|
||||||
|
useEffect(() => {
|
||||||
|
if (user && (user.role === 'directeur' || user.role === 'manager') && selectedStoreId) {
|
||||||
|
console.log('🔄 FORCE REFRESH: selectedStoreId changed for directeur/manager:', {
|
||||||
|
userRole: user.role,
|
||||||
|
selectedStoreId,
|
||||||
|
timestamp: new Date().toISOString()
|
||||||
|
});
|
||||||
|
queryClient.invalidateQueries({ queryKey: ["/api/tasks"] });
|
||||||
|
}
|
||||||
|
}, [selectedStoreId, user, queryClient]);
|
||||||
|
|
||||||
// États locaux
|
// États locaux
|
||||||
const [searchTerm, setSearchTerm] = useState("");
|
const [searchTerm, setSearchTerm] = useState("");
|
||||||
const [statusFilter, setStatusFilter] = useState<string>("all");
|
const [statusFilter, setStatusFilter] = useState<string>("all");
|
||||||
@@ -348,7 +374,8 @@ export default function Tasks() {
|
|||||||
url: `/api/tasks?${params.toString()}`,
|
url: `/api/tasks?${params.toString()}`,
|
||||||
willFilterByStore: !!selectedStoreId,
|
willFilterByStore: !!selectedStoreId,
|
||||||
enabled: !!user,
|
enabled: !!user,
|
||||||
timestamp: new Date().toISOString()
|
timestamp: new Date().toISOString(),
|
||||||
|
userGroups: user?.userGroups?.map((ug: any) => ug.groupId) || 'NONE'
|
||||||
});
|
});
|
||||||
|
|
||||||
const response = await fetch(`/api/tasks?${params.toString()}`, {
|
const response = await fetch(`/api/tasks?${params.toString()}`, {
|
||||||
@@ -386,7 +413,7 @@ export default function Tasks() {
|
|||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
enabled: !!user,
|
enabled: !!user && (user.role === 'admin' || (user.role === 'directeur' || user.role === 'manager' ? !!selectedStoreId : true)),
|
||||||
});
|
});
|
||||||
|
|
||||||
// Fetch users for task assignment - seulement pour admin/manager/directeur
|
// Fetch users for task assignment - seulement pour admin/manager/directeur
|
||||||
|
|||||||
Reference in new issue
Block a user