diff --git a/src/APIServices/SystemparameterApi.js b/src/APIServices/SystemparameterApi.js index 30780f2..ac6b192 100644 --- a/src/APIServices/SystemparameterApi.js +++ b/src/APIServices/SystemparameterApi.js @@ -9,9 +9,9 @@ export const getSysParameter = async (id) => { } } -export const addSysParameter = async (id) => { +export const addSysParameter = async (formdata) => { try { - const response = await apiService.post(`/sysparam/addSysParams`); + const response = await apiService.put(`/sysparam/updateSysParams/${1}`,formdata); console.log("add response data ",response.data) return response.data; // Return only the data part of the response } catch (error) { diff --git a/src/App.js b/src/App.js index 1675a37..2f3f406 100644 --- a/src/App.js +++ b/src/App.js @@ -1,6 +1,7 @@ import React from "react"; +import { SystemParameterProvider } from './context/SystemParameterContext'; import { BrowserRouter, Route, @@ -62,11 +63,12 @@ import DashboardRunner from "components/Dashboard/dashboardRunner/dashboardRunne const App = () => { return ( +
{/* ToastContainer should be placed in the root component */} {
+
); }; diff --git a/src/components/Dashboard/CSS/CSS/UserMaintainanceView.css b/src/components/Dashboard/CSS/CSS/UserMaintainanceView.css index 7bbb9c0..9ab1bcf 100644 --- a/src/components/Dashboard/CSS/CSS/UserMaintainanceView.css +++ b/src/components/Dashboard/CSS/CSS/UserMaintainanceView.css @@ -1,3 +1,5 @@ + + .table-responsive{ box-shadow: 2px 2px 6px -1px grey; diff --git a/src/components/Dashboard/MenuAccessControl.js b/src/components/Dashboard/MenuAccessControl.js index 14dbb0b..46008d7 100644 --- a/src/components/Dashboard/MenuAccessControl.js +++ b/src/components/Dashboard/MenuAccessControl.js @@ -1,13 +1,18 @@ import React, { useState, useEffect } from "react"; -import { Button, Dropdown, Modal, Form,Row,Col,InputGroup, +import { + Button, Dropdown, Modal, Form, Row, Col, InputGroup, FormControl, - } from "react-bootstrap"; - import { Table ,Pagination, - PaginationItem, - PaginationLink,Input,Label} from 'reactstrap'; - import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { faEdit, faTrashAlt, faPlus, faBars, - faTimes } from "@fortawesome/free-solid-svg-icons"; +} from "react-bootstrap"; +import { + Table, Pagination, + PaginationItem, + PaginationLink, Input, Label +} from 'reactstrap'; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { + faEdit, faTrashAlt, faPlus, faBars, + faTimes +} from "@fortawesome/free-solid-svg-icons"; import "bootstrap/dist/css/bootstrap.min.css"; import "../Dashboard/CSS/CSS/CommonStyle.css"; import { FaSearch, FaTimes } from "react-icons/fa"; @@ -16,15 +21,15 @@ import Spinner from '../../UIComponants/Spinner'; import { getByUsrGrpId } from "APIServices/MenuAccessControlAPI"; import { toast } from "react-toastify"; -function MenuAccessControl({ selected,Sync}) { +function MenuAccessControl({ selected, Sync }) { const [loading, setLoading] = useState(true); const [menuItems, setMenuItems] = useState([]); - const [menus,setMenus] = useState([]); + const [menus, setMenus] = useState([]); const [showAddEditModal, setShowAddEditModal] = useState(false); const [selectedMenuId, setSelectedMenuId] = useState(null); - const [usrgrp, setUsrgrp] = useState('DefaultGroup'); + const [usrgrp, setUsrgrp] = useState(1); const [allData, setAllData] = useState([]); - + const [currentMenuItem, setCurrentMenuItem] = useState({ menuId: "", @@ -40,7 +45,7 @@ function MenuAccessControl({ selected,Sync}) { }); const [alldata, setAlldata] = useState([]); // const [slicedMenus, setSlicedMenus] = useState([]); - const [toggle, setToggle] = useState(false); + const [toggle, setToggle] = useState(false); const [currentPage, setCurrentPage] = useState(1); const [isEditing, setIsEditing] = useState(false); const [recordsPerPage, setRecordsPerPage] = useState(10); @@ -68,29 +73,29 @@ function MenuAccessControl({ selected,Sync}) { }, ]); const [visibleColumns, setVisibleColumns] = useState({ - No:true, + No: true, menuId: true, menuItemName: true, - view:true, - create:true, - edit:true, - delete:true, - query:true, - export:true, + view: true, + create: true, + edit: true, + delete: true, + query: true, + export: true, isActive: true, actions: true }); const [newItemData, setNewItemData] = useState({ - + menuId: "", menuItemName: "", - view:"", - create:"", - edit:"", - delete:"", - query:"", - export:"", + view: "", + create: "", + edit: "", + delete: "", + query: "", + export: "", isActive: true, }); @@ -107,90 +112,90 @@ function MenuAccessControl({ selected,Sync}) { // const defaultGroup = 'Admin'; // Replace with fetched or derived value setUsrgrp(); }, []); - + useEffect(() => { - const apiUrl = `${process.env.REACT_APP_API_URL}/api/getAllMenuItems`; + const apiUrl = `${process.env.REACT_APP_API_URL}/api/getAllUsrGrp`; const token = localStorage.getItem("authToken"); const fetchMenuItems = async () => { - try { - const response = await fetch(apiUrl, { - method: "GET", - headers: { - "Content-Type": "application/json", - Authorization: `Bearer ${token}`, - }, - }); + try { + const response = await fetch(apiUrl, { + method: "GET", + headers: { + "Content-Type": "application/json", + Authorization: `Bearer ${token}`, + }, + }); - if (!response.ok) { - throw new Error(`HTTP error! status: ${response.status}`); - } - - const data = await response.json(); - setMenuItems(data); - } catch (error) { - console.error("Error fetching menu items:", error); + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); } + + const data = await response.json(); + setMenuItems(data); + } catch (error) { + console.error("Error fetching menu items:", error); + } }; fetchMenuItems(); -}, []); + }, []); -useEffect(() => { - fetchData(); -}, []); + useEffect(() => { + fetchData(); + }, []); -// const fetchData = async () => { -// try { -// const data = await getByUsrGrpId(usrgrp); -// console.log("Data fetched successfully:", data); + // const fetchData = async () => { + // try { + // const data = await getByUsrGrpId(usrgrp); + // console.log("Data fetched successfully:", data); -// setAlldata(data); // Update the state with fetched data -// toast.success("Data fetched successfully!"); -// } catch (error) { -// console.error('Error fetching data:', error); -// toast.error("Failed to fetch data."); -// } -// }; + // setAlldata(data); // Update the state with fetched data + // toast.success("Data fetched successfully!"); + // } catch (error) { + // console.error('Error fetching data:', error); + // toast.error("Failed to fetch data."); + // } + // }; -// const fetchData = async () => { -// try { -// console.log("Fetching data for usrgrp:", usrgrp); -// const data = await getByUsrGrpId(usrgrp); -// if (!data) { -// console.error("Received undefined data"); -// toast.error("Failed to fetch data."); -// return; -// } -// console.log("Data fetched successfully:", data); -// setAlldata(data); -// toast.success("Data fetched successfully!"); -// } catch (error) { -// console.error("Error fetching data:", error); -// toast.error("Failed to fetch data."); -// } -// }; + // const fetchData = async () => { + // try { + // console.log("Fetching data for usrgrp:", usrgrp); + // const data = await getByUsrGrpId(usrgrp); + // if (!data) { + // console.error("Received undefined data"); + // toast.error("Failed to fetch data."); + // return; + // } + // console.log("Data fetched successfully:", data); + // setAlldata(data); + // toast.success("Data fetched successfully!"); + // } catch (error) { + // console.error("Error fetching data:", error); + // toast.error("Failed to fetch data."); + // } + // }; -const fetchData = async () => { - try { + const fetchData = async () => { + try { console.log("Fetching data for usrgrp:", usrgrp); const data = await getByUsrGrpId(usrgrp); if (!data) { - console.error("Received undefined data"); - toast.error("Failed to fetch data."); - return; + console.error("Received undefined data"); + toast.error("Failed to fetch data."); + return; } console.log("Data fetched successfully:", data); setAlldata(data); toast.success("Data fetched successfully!"); - } catch (error) { + } catch (error) { console.error("Error fetching data:", error.message || error); toast.error("Failed to fetch data."); - } -}; -const idselected = (value) => { - setSelectedMenuId(value); -}; + } + }; + const idselected = (value) => { + setSelectedMenuId(value); + }; const toggleColumn = (column) => { setVisibleColumns((prev) => ({ @@ -199,7 +204,7 @@ const idselected = (value) => { })); }; - const handleInputChange = (event,menuId) => { + const handleInputChange = (event, menuId) => { const { name, value, checked, type } = event.target; setCurrentMenuItem(prev => ({ ...prev, @@ -256,7 +261,7 @@ const idselected = (value) => { setMenuItems(menuItems.filter(item => item.menuId !== menuId)); }; - const handleRecordsPerPageChange=(number) =>{ + const handleRecordsPerPageChange = (number) => { setRecordsPerPage(number); setCurrentPage(1); } @@ -269,323 +274,323 @@ const idselected = (value) => { const handleSelectChange = (value) => { console.log(value); setUsrgrp(value); - + }; const handleToggleCheckbox = () => { setToggle(!toggle); }; - - slicedMenus = menuItems - .filter((item) => - item.menuName && item.menuName.toLowerCase().includes(searchQuery.toLowerCase()) - ) - .slice((currentPage - 1) * recordsPerPage, currentPage * recordsPerPage); + + slicedMenus = menuItems + .filter((item) => + item.menuName && item.menuName.toLowerCase().includes(searchQuery.toLowerCase()) + ) + .slice((currentPage - 1) * recordsPerPage, currentPage * recordsPerPage); return ( -
+
{loading ? ( - - ):( + + ) : (
-
- {/* Left Side */} -
-

Menu Access Control

- - Edit Mode - -
- - {/* Right Side */} -
- For - - - - {toggle ? "Only Main Menu" : "Show All"} - - -
- - -
-
-
- - {/* Left: Search Bar */} - - - +

Menu Access Control

+ + Edit Mode + +
+ + {/* Right Side */} +
+ For + + + + {toggle ? "Only Main Menu" : "Show All"} + + +
+ + +
+
+
+ + {/* Left: Search Bar */} + - - - handleSearch(e.target.value)} - style={{ - padding: "10px", - border: "none", - paddingRight: "5px", // More space on the right side of input field - }} - /> - - - - {/*Add Icons */} - - <> - {/* Add Icon */} - handleAddItem(true)} - style={{ - cursor: "pointer", - fontSize: "1.5rem", - color: "#747264", - marginRight: "20px", - }} - /> - - - - - -
- - - - {Object.entries(visibleColumns).map(([key, visible]) => - visible ? : null - )} - - - - {slicedMenus.length === 0 ? ( - - - - ) : ( - slicedMenus.map((item, index) => ( - - {Object.entries(visibleColumns).map(([key, visible]) => - visible ? ( - - ) : null - )} - - )) - )} - -
{key.charAt(0).toUpperCase() + key.slice(1)}
visibleColumns[key]) - .length - } - className="text-center" - > - No items found. Please add new items. -
- {key === "actions" ? ( - <> - openModal(item)} - style={{ - cursor: "pointer", - fontSize: "1rem", - color: "green", - marginRight: "15px", - }} - /> - handleDelete(item.menuId)} - style={{ - cursor: "pointer", - fontSize: "1rem", - color: "#dc3545", - }} - /> - - ) :["view", "create", "edit", "delete", "query", "export"].includes(key) ? ( - - // handleInputChange({ - // target: { - // name: key, - // value: e.target.checked, - // }, - // }) - onChange={(e) => handleInputChange(e, item.menuId)} - disabled={false} - /> - ): key === "isActive" ? ( - + - {item.isActive ? "Active" : "Inactive"} - - ) : ( - item[key] - )} -
-
+ + + handleSearch(e.target.value)} + style={{ + padding: "10px", + border: "none", + paddingRight: "5px", // More space on the right side of input field + }} + /> + + - {/* Manage Columns & Records Per Page */} - - - - - Manage Columns - - - {Object.keys(visibleColumns).map((column) => ( - toggleColumn(column)} + {/*Add Icons */} + + <> + {/* Add Icon */} + handleAddItem(true)} + style={{ + cursor: "pointer", + fontSize: "1.5rem", + color: "#747264", + marginRight: "20px", + }} + /> + + + + + +
+ + + + {Object.entries(visibleColumns).map(([key, visible]) => + visible ? : null + )} + + + + {slicedMenus.length === 0 ? ( + + + + ) : ( + slicedMenus.map((item, index) => ( + + {Object.entries(visibleColumns).map(([key, visible]) => + visible ? ( + + ) : null + )} + + )) + )} + +
{key.charAt(0).toUpperCase() + key.slice(1)}
visibleColumns[key]) + .length + } + className="text-center" + > + No items found. Please add new items. +
+ {key === "actions" ? ( + <> + openModal(item)} + style={{ + cursor: "pointer", + fontSize: "1rem", + color: "green", + marginRight: "15px", + }} + /> + handleDelete(item.menuId)} + style={{ + cursor: "pointer", + fontSize: "1rem", + color: "#dc3545", + }} + /> + + ) : ["view", "create", "edit", "delete", "query", "export"].includes(key) ? ( + + // handleInputChange({ + // target: { + // name: key, + // value: e.target.checked, + // }, + // }) + onChange={(e) => handleInputChange(e, item.menuId)} + disabled={false} + /> + ) : key === "isActive" ? ( + + {item.isActive ? "Active" : "Inactive"} + + ) : ( + item[key] + )} +
+
+ + {/* Manage Columns & Records Per Page */} + + + + - - - ))} - - - + Manage Columns + + + {Object.keys(visibleColumns).map((column) => ( + toggleColumn(column)} + > + + + ))} + + + - - - - - - - {[1, 5, 10, 20, 50].map((number) => ( - handleRecordsPerPageChange(number)} - className="text-dark d-flex justify-content-between align-items-center" + + + - {number} - - - ))} - - - - + + + + {[1, 5, 10, 20, 50].map((number) => ( + handleRecordsPerPageChange(number)} + className="text-dark d-flex justify-content-between align-items-center" + > + {number} + + + ))} + + + + - - - handlePageChange(currentPage - 1)} /> - - {[...Array(totalPages)].map((_, index) => ( - - handlePageChange(index + 1)} style={{ color: '#0b6592' }}> - {index + 1} - - - ))} - - handlePageChange(currentPage + 1)} /> - - + + + handlePageChange(currentPage - 1)} /> + + {[...Array(totalPages)].map((_, index) => ( + + handlePageChange(index + 1)} style={{ color: '#0b6592' }}> + {index + 1} + + + ))} + + handlePageChange(currentPage + 1)} /> + + - {/* Add/Edit Model */} + {/* Add/Edit Model */} - {/* setShowAddEditModal(false)}> + {/* setShowAddEditModal(false)}> {isEditing ? "Edit Menu Access" : "Add Menu Access"} { */} - setShowAddEditModal(false)}> - - {isEditing ? "Edit Menu Access" : "Add Menu Access"} - - - -
- {/* Menu Name Input */} - - Menu Items Name - - + setShowAddEditModal(false)}> + + {isEditing ? "Edit Menu Access" : "Add Menu Access"} + + + + + {/* Menu Name Input */} + + Menu Items Name + + - {/* Select Menu Item */} - - - idselected(e.target.value)} - > - {menus.map((sub) => ( - - ))} - - + {/* Select Menu Item */} + + + idselected(e.target.value)} + > + {menus.map((sub) => ( + + ))} + + - {/* Active Checkbox */} - - - + {/* Active Checkbox */} + + + - {/* Modal Footer with buttons */} - - - - - - -
+ {/* Modal Footer with buttons */} + + + + + +
+
-
+ )} ); diff --git a/src/components/Dashboard/MenuMaintenance.js b/src/components/Dashboard/MenuMaintenance.js index 79ff9d6..702d046 100644 --- a/src/components/Dashboard/MenuMaintenance.js +++ b/src/components/Dashboard/MenuMaintenance.js @@ -559,7 +559,7 @@ function MenuMaintenance() { console.log("sliced menu", slicedMenus); // Verify the data in slicedMenus return ( -
+
{loading ? ( ) : ( @@ -852,7 +852,7 @@ function MenuMaintenance() {
- + {/* Manage Columns & Records Per Page */} diff --git a/src/components/Dashboard/SetupView.js b/src/components/Dashboard/SetupView.js index 75eb8c4..8045ede 100644 --- a/src/components/Dashboard/SetupView.js +++ b/src/components/Dashboard/SetupView.js @@ -1,4 +1,4 @@ -import React,{useState,useEffect} from "react"; +import React, { useState, useEffect } from "react"; import "../Dashboard/CSS/CSS/SetupView.css"; // Assuming you have a CSS file for styling import { useNavigate } from "react-router-dom"; import Spinner from '../../UIComponants/Spinner'; @@ -38,75 +38,75 @@ function SetupView({ // Display the spinner while loading ) : (
-
-
{ - console.log("User Maintenance card clicked"); - console.log("Navigating to:", "/admin/user-maintenance"); +
+
{ + console.log("User Maintenance card clicked"); + console.log("Navigating to:", "/admin/user-maintenance"); - navigate("/admin/user-maintenance"); - }} - // onClick={onUserMaintenanceClick} - > - -

User Maintenance

-

Content for Card 1

-
-
{ - navigate("/admin/menu-access-control"); - // navigate("/admin/menu-access-control2") - }} - > - -

Menu Access Control

-

Content for Card 2

-
-
{ - navigate("/admin/user-Group-Maintenance"); - }}> - -

User Group Maintenance

-

Content for Card 3

-
-
{ - navigate("/admin/system-parameter"); - }}> - -

System Parameter

-

Content for Card 4

-
-
{ - navigate("/admin/menu-maintenance"); - }}> - -

Menu Maintenance

-

Content for Card 5

-
-
{ - navigate("/admin/access-type"); - }}> - -

Access Type

-

Content for Card 6

-
-
{ - navigate("/admin/api-registry") - }}> - -

API Registry

-

Content for Card 7

-
-
{ - navigate("/admin/token-registry") - }}> - -

Token Registry

-

Content for Card 8

-
- {/*
{ + navigate("/admin/user-maintenance"); + }} + // onClick={onUserMaintenanceClick} + > + +

User Maintenance

+

Content for Card 1

+
+
{ + navigate("/admin/menu-access-control"); + // navigate("/admin/menu-access-control2") + }} + > + +

Menu Access Control

+

Content for Card 2

+
+
{ + navigate("/admin/user-Group-Maintenance"); + }}> + +

User Group Maintenance

+

Content for Card 3

+
+
{ + navigate("/admin/system-parameter"); + }}> + +

System Parameter

+

Content for Card 4

+
+
{ + navigate("/admin/menu-maintenance"); + }}> + +

Menu Maintenance

+

Content for Card 5

+
+
{ + navigate("/admin/access-type"); + }}> + +

Access Type

+

Content for Card 6

+
+
{ + navigate("/admin/api-registry") + }}> + +

API Registry

+

Content for Card 7

+
+
{ + navigate("/admin/token-registry") + }}> + +

Token Registry

+

Content for Card 8

+
+ {/*
{ navigate("/admin/datatype-1") }}> @@ -176,27 +176,27 @@ function SetupView({

Premium Datatypes

Content for Card 18

*/} -
{ - navigate("/admin/user-report") - }}> - -

Reports

-

Report Description

-
-
{ - navigate("/admin/dynamic-form") - }}> - -

DynamicForm

-

Content for Card 16

-
+
{ + navigate("/admin/user-report") + }}> + +

Reports

+

Report Description

+
+
{ + navigate("/admin/dynamic-form") + }}> + +

DynamicForm

+

Content for Card 16

+
-
-
+
+
)}
- + ); } diff --git a/src/components/Dashboard/SystemParameter.js b/src/components/Dashboard/SystemParameter.js index c162409..c50f886 100644 --- a/src/components/Dashboard/SystemParameter.js +++ b/src/components/Dashboard/SystemParameter.js @@ -154,32 +154,32 @@ import {getSysParameter,addSysParameter} from "../../APIServices/Systemparameter const SystemParameterForm = () => { const [formData, setFormData] = useState({ - schedulerTimer: "", + schedulerTime: "", leaseTaxCode: "", - vesselConfirmationProcessLimit: "", + vesselConfProcessLimit: "", rowToDisplay: "", linkToDisplay: "", rowToAdd: "", lovRowToDisplay: "", lovLinkToDisplay: "", - oldServerName: "", - oldBase: "", - oldAdminUser: "", - oldServerPort: "", + oidserverName: "", + oidBase: "", + oidAdminUser: "", + oidServerPort: "", userDefaultGroup: "", defaultDepartment: "", defaultPosition: "", singleCharge: "", - firstDayOfWeek: "", + firstDayOftheWeek: "", hourPerShift: "", cnBillingFrequency: "", billingDepartmentCode: "", basePriceList: "", - nonContainerServiceOrderAutoApprovalDeptCode: "", - ediMAESchedulerOnOff: "", - ediSchedulerOnOff: "", - logo: null, - companyDisplayName: "", + nonContainerServiceOrder: "", + ediMaeSchedulerONOFF: "", + ediSchedulerONOFF: "", + upload_Logo: null, + company_Display_Name: "", }); const [loading, setLoading] = useState(true); @@ -216,6 +216,7 @@ const SystemParameterForm = () => { event.preventDefault(); try { + console.log("Form Data:", formData); const sysParamData = await addSysParameter(formData); console.log("API Response:", sysParamData); @@ -290,7 +291,7 @@ const SystemParameterForm = () => { {Object.keys(formData).map((key, index) => - key !== "logo" ? ( + key !== "upload_Logo" ? ( diff --git a/src/components/Dashboard/UserMaintenanceView.js b/src/components/Dashboard/UserMaintenanceView.js index 325c6aa..ba674a9 100644 --- a/src/components/Dashboard/UserMaintenanceView.js +++ b/src/components/Dashboard/UserMaintenanceView.js @@ -579,23 +579,23 @@ function UserMaintenanceView() { .slice((currentPage - 1) * recordsPerPage, currentPage * recordsPerPage); return ( -
+
{loading ? ( ):(
{/* Header */} -
+

User Maintenance

- + {/* Left: Search Bar */} { + const[currentUser,setCurrentUser]=useState(); + useEffect(() => { + const user = getCurrentUser(); + console.log(user); + setCurrentUser(user); + console.log(currentUser); + if (!user) { + navigate("/login"); + } + }, []); + + console.log(brandText); const navigate = useNavigate(); const handleLogout = () => { + removeCurrentUser(); // localStorage.removeItem("authToken"); // Uncomment if needed navigate("/login"); }; @@ -55,7 +72,7 @@ const AdminNavbar = ({ brandText }) => { {/* Search and Profile */}
- + {/* @@ -64,7 +81,7 @@ const AdminNavbar = ({ brandText }) => { - + */}