diff --git a/demand-capacity-mgmt-frontend/src/components/capacitygroup/CapacityGroupsList.tsx b/demand-capacity-mgmt-frontend/src/components/capacitygroup/CapacityGroupsList.tsx index 8bd25f72..90e130ca 100644 --- a/demand-capacity-mgmt-frontend/src/components/capacitygroup/CapacityGroupsList.tsx +++ b/demand-capacity-mgmt-frontend/src/components/capacitygroup/CapacityGroupsList.tsx @@ -52,6 +52,7 @@ const CapacityGroupsList: React.FC = () => { const [sortOrder, setSortOrder] = useState('asc'); const [capacitygroupsPerPage, setcapacitygroupsPerPage] = useState(20); // Set the default value here const { addFavorite, fetchFavoritesByType, deleteFavorite } = useContext(FavoritesContext)!; + const { findCompanyByCompanyID, findCompanyNameByBpn } = useContext(CompanyContext)!; const [favoriteCapacityGroups, setFavoriteCapacityGroups] = useState([]); const handleSort = (column: string) => { @@ -197,9 +198,21 @@ const CapacityGroupsList: React.FC = () => { {capacitygroup.name} - {capacitygroup.customerBPNL} - {capacitygroup.customerName} - {capacitygroup.supplierBNPL} + {user?.role === 'SUPPLIER' && ( + <> + {capacitygroup.customerBPNL} + {capacitygroup.customerName} + + )} + + {user?.role === 'CUSTOMER' && ( + <> + {capacitygroup.supplierBNPL} + {findCompanyNameByBpn(capacitygroup.supplierBNPL)} + + )} + + {capacitygroup.numberOfMaterials} {capacitygroup.favoritedBy} diff --git a/demand-capacity-mgmt-frontend/src/components/capacitygroup/CapacityGroupsTableHeaders.tsx b/demand-capacity-mgmt-frontend/src/components/capacitygroup/CapacityGroupsTableHeaders.tsx index 4df75bc5..fbb267e4 100644 --- a/demand-capacity-mgmt-frontend/src/components/capacitygroup/CapacityGroupsTableHeaders.tsx +++ b/demand-capacity-mgmt-frontend/src/components/capacitygroup/CapacityGroupsTableHeaders.tsx @@ -47,21 +47,36 @@ const CapacityGroupsTable: React.FC = ({ sortColumn, s {sortColumn === 'name' && sortOrder === 'asc' && } {sortColumn === 'name' && sortOrder === 'desc' && } - handleSort('customerBPNL')}> - Customber BPNL - {sortColumn === 'customerBPNL' && sortOrder === 'asc' && } - {sortColumn === 'customerBPNL' && sortOrder === 'desc' && } - - handleSort('customerName')}> - Customer Name - {sortColumn === 'customerName' && sortOrder === 'asc' && } - {sortColumn === 'customerName' && sortOrder === 'desc' && } - - handleSort('supplierBNPL')}> - Supplier BPNL - {sortColumn === 'supplierBNPL' && sortOrder === 'asc' && } - {sortColumn === 'supplierBNPL' && sortOrder === 'desc' && } - + {user?.role === 'SUPPLIER' && ( + <> + handleSort('customerBPNL')}> + Customer BPNL + {sortColumn === 'customerBPNL' && sortOrder === 'asc' && } + {sortColumn === 'customerBPNL' && sortOrder === 'desc' && } + + handleSort('customerName')}> + Customer Name + {sortColumn === 'customerName' && sortOrder === 'asc' && } + {sortColumn === 'customerName' && sortOrder === 'desc' && } + + + )} + + {user?.role === 'CUSTOMER' && ( + <> + handleSort('supplierBNPL')}> + Supplier BPNL + {sortColumn === 'supplierBNPL' && sortOrder === 'asc' && } + {sortColumn === 'supplierBNPL' && sortOrder === 'desc' && } + + handleSort('supplierName')}> + Supplier Name + {sortColumn === 'supplierName' && sortOrder === 'asc' && } + {sortColumn === 'supplierName' && sortOrder === 'desc' && } + + + )} + handleSort('numberOfMaterials')}> # of Materials {sortColumn === 'numberOfMaterials' && sortOrder === 'asc' && } diff --git a/demand-capacity-mgmt-frontend/src/components/demands/DemandList.tsx b/demand-capacity-mgmt-frontend/src/components/demands/DemandList.tsx index 9a434395..8e4683c4 100644 --- a/demand-capacity-mgmt-frontend/src/components/demands/DemandList.tsx +++ b/demand-capacity-mgmt-frontend/src/components/demands/DemandList.tsx @@ -28,6 +28,7 @@ import CapacityGroupsProvider from '../../contexts/CapacityGroupsContextProvider import { DemandContext } from '../../contexts/DemandContextProvider'; import { FavoritesContext } from "../../contexts/FavoritesContextProvider"; import UnitsofMeasureContextContextProvider from '../../contexts/UnitsOfMeasureContextProvider'; +import { useUser } from '../../contexts/UserContext'; import { DemandProp, DemandSeries, DemandSeriesValue } from '../../interfaces/demand_interfaces'; import { EventType } from '../../interfaces/event_interfaces'; import { FavoriteType, MaterialDemandFavoriteResponse } from "../../interfaces/favorite_interfaces"; @@ -57,6 +58,8 @@ const DemandList: React.FC<{ eventTypes = [] }) => { + const { user } = useUser(); + const [showDetailsModal, setShowDetailsModal] = useState(false); const [showDeleteConfirmation, setShowDeleteConfirmation] = useState(false); const [deleteItemId, setDeleteItemId] = useState(null); @@ -299,7 +302,18 @@ const DemandList: React.FC<{ - {demand.customer.bpn} + {user?.role === 'SUPPLIER' ? ( + <> + {demand.customer.bpn} + {demand.customer.companyName} + + ) : null} + {user?.role === 'CUSTOMER' ? ( + <> + {demand.supplier.bpn} + {demand.supplier.companyName} + + ) : null} {demand.materialNumberCustomer} {demand.materialNumberSupplier} diff --git a/demand-capacity-mgmt-frontend/src/components/demands/DemandListTableHeaders.tsx b/demand-capacity-mgmt-frontend/src/components/demands/DemandListTableHeaders.tsx index f3d4136a..e4cc08ec 100644 --- a/demand-capacity-mgmt-frontend/src/components/demands/DemandListTableHeaders.tsx +++ b/demand-capacity-mgmt-frontend/src/components/demands/DemandListTableHeaders.tsx @@ -21,6 +21,7 @@ */ import { BiCaretDown, BiCaretUp } from 'react-icons/bi'; +import { useUser } from '../../contexts/UserContext'; type DemandsTableProps = { sortColumn: string | null; @@ -31,7 +32,7 @@ type DemandsTableProps = { }; const DemandListTable: React.FC = ({ sortColumn, sortOrder, handleSort, demandItems, hasfavorites }) => { - + const { user } = useUser(); return ( @@ -39,12 +40,41 @@ const DemandListTable: React.FC = ({ sortColumn, sortOrder, h {hasfavorites && } {hasfavorites && } - + + + {user?.role === 'SUPPLIER' ? ( + <> + + + + ) : null} + {user?.role === 'CUSTOMER' ? ( + <> + + + + ) : null} + + {user?.role === 'SUPPLIER' ? ( + <> + + + + ) : null} + {user?.role === 'CUSTOMER' ? ( + <> + + + + ) : null}
handleSort('customer.bpn')}> - Company Id{' '} - {sortColumn === 'customer.bpn' && sortOrder === 'asc' && } - {sortColumn === 'customer.bpn' && sortOrder === 'desc' && } - {!sortColumn && ...} - handleSort('customer.bpn')}> + Customer BPN{' '} + {sortColumn === 'customer.bpn' && sortOrder === 'asc' && } + {sortColumn === 'customer.bpn' && sortOrder === 'desc' && } + {!sortColumn && ...} + handleSort('customer.name')}> + Customer Name{' '} + {sortColumn === 'customer.name' && sortOrder === 'asc' && } + {sortColumn === 'customer.name' && sortOrder === 'desc' && } + {!sortColumn && ...} + handleSort('supplier.bpn')}> + Supplier BPN{' '} + {sortColumn === 'supplier.bpn' && sortOrder === 'asc' && } + {sortColumn === 'supplier.bpn' && sortOrder === 'desc' && } + {!sortColumn && ...} + handleSort('supplier.name')}> + Supplier Name{' '} + {sortColumn === 'supplier.name' && sortOrder === 'asc' && } + {sortColumn === 'supplier.name' && sortOrder === 'desc' && } + {!sortColumn && ...} + handleSort('materialNumberCustomer')}> Material No. Customer{' '} {sortColumn === 'materialNumberCustomer' && sortOrder === 'asc' && } diff --git a/demand-capacity-mgmt-frontend/src/components/demands/DemandManagement.tsx b/demand-capacity-mgmt-frontend/src/components/demands/DemandManagement.tsx index 4e712345..758ee3eb 100644 --- a/demand-capacity-mgmt-frontend/src/components/demands/DemandManagement.tsx +++ b/demand-capacity-mgmt-frontend/src/components/demands/DemandManagement.tsx @@ -251,7 +251,18 @@ const DemandManagement: React.FC = () => { - {demand.customer.bpn}{demand.customer.bpn}{demand.customer.companyName}{demand.supplier.bpn}{demand.supplier.companyName}{demand.materialNumberCustomer} {demand.materialNumberSupplier} diff --git a/demand-capacity-mgmt-frontend/src/components/demands/DemandManagementTableHeaders.tsx b/demand-capacity-mgmt-frontend/src/components/demands/DemandManagementTableHeaders.tsx index d251bfc3..826d50a4 100644 --- a/demand-capacity-mgmt-frontend/src/components/demands/DemandManagementTableHeaders.tsx +++ b/demand-capacity-mgmt-frontend/src/components/demands/DemandManagementTableHeaders.tsx @@ -21,6 +21,7 @@ */ import { BiCaretDown, BiCaretUp } from 'react-icons/bi'; +import { useUser } from '../../contexts/UserContext'; type DemandsTableProps = { sortColumn: string | null; @@ -31,18 +32,46 @@ type DemandsTableProps = { const DemandManagementTable: React.FC = ({ sortColumn, sortOrder, handleSort, demandItems }) => { + const { user } = useUser(); + return ( - + {user?.role === 'SUPPLIER' ? ( + <> + + + + ) : null} + {user?.role === 'CUSTOMER' ? ( + <> + + + + ) : null}
handleSort('customer.bpn')}> - Company Id{' '} - {sortColumn === 'customer.bpn' && sortOrder === 'asc' && } - {sortColumn === 'customer.bpn' && sortOrder === 'desc' && } - {!sortColumn && ...} - handleSort('customer.bpn')}> + Customer BPN{' '} + {sortColumn === 'customer.bpn' && sortOrder === 'asc' && } + {sortColumn === 'customer.bpn' && sortOrder === 'desc' && } + {!sortColumn && ...} + handleSort('customer.name')}> + Customer Name{' '} + {sortColumn === 'customer.name' && sortOrder === 'asc' && } + {sortColumn === 'customer.name' && sortOrder === 'desc' && } + {!sortColumn && ...} + handleSort('supplier.bpn')}> + Supplier BPN{' '} + {sortColumn === 'supplier.bpn' && sortOrder === 'asc' && } + {sortColumn === 'supplier.bpn' && sortOrder === 'desc' && } + {!sortColumn && ...} + handleSort('supplier.name')}> + Supplier Name{' '} + {sortColumn === 'supplier.name' && sortOrder === 'asc' && } + {sortColumn === 'supplier.name' && sortOrder === 'desc' && } + {!sortColumn && ...} + handleSort('materialNumberCustomer')}> Material No. Customer{' '} {sortColumn === 'materialNumberCustomer' && sortOrder === 'asc' && } diff --git a/demand-capacity-mgmt-frontend/src/contexts/CompanyContextProvider.tsx b/demand-capacity-mgmt-frontend/src/contexts/CompanyContextProvider.tsx index 136ef58f..a4469b3a 100644 --- a/demand-capacity-mgmt-frontend/src/contexts/CompanyContextProvider.tsx +++ b/demand-capacity-mgmt-frontend/src/contexts/CompanyContextProvider.tsx @@ -39,6 +39,9 @@ export interface Company { interface CompanyContextData { companies: Company[]; topCompanies: Company[]; + findCompanyByCompanyID: (companyID: string) => Company | undefined; + findCompanyNameByBpn: (bpn: string) => string | undefined; + } export const CompanyContext = createContext(undefined); @@ -78,8 +81,17 @@ const CompanyContextProvider: React.FC> = (props) => + const findCompanyByCompanyID = (companyID: string | undefined): Company | undefined => { + return companies.find(company => company.id === companyID); + }; + + const findCompanyNameByBpn = (bpn: string | undefined): string => { + const companyName = companies.find(company => company.bpn === bpn)?.companyName; + return companyName || 'N/A'; + }; + return ( - + {props.children} );