diff --git a/frontend/src/AgroRentAI/RentAdminDashboard.jsx b/frontend/src/AgroRentAI/RentAdminDashboard.jsx index 430760d8..fae94657 100644 --- a/frontend/src/AgroRentAI/RentAdminDashboard.jsx +++ b/frontend/src/AgroRentAI/RentAdminDashboard.jsx @@ -256,7 +256,7 @@ const RentAdminDashboard = () => { case "Order Management": return ; case "User Management": - return ; + return ; case "Analytics & Reporting": return ; case "Sales & Revenue Analytics": diff --git a/frontend/src/AgroRentAI/components/AdminUserManagement.jsx b/frontend/src/AgroRentAI/components/AdminUserManagement.jsx index afbf97ba..58243319 100644 --- a/frontend/src/AgroRentAI/components/AdminUserManagement.jsx +++ b/frontend/src/AgroRentAI/components/AdminUserManagement.jsx @@ -1,91 +1,268 @@ -import React from "react"; -import { Edit, UserPlus, Lock, Eye } from "lucide-react"; - -const UserManagement = ({ users, onEditUser, onSuspendUser, onViewDetails }) => ( -
-

- User Management -

- - {/* Search and Filter */} -
- - -
+import React, { useState } from "react"; +import { Edit, Lock, Eye } from "lucide-react"; + +const UserManagement = () => { + // Dummy data for users + const [users, setUsers] = useState([ + { + id: 1, + name: "Alice Johnson", + email: "alice@example.com", + role: "admin", + feedback: "Great service!", + accountStatus: "active", + createdAt: "2022-01-15", + lastLogin: "2023-10-01", + }, + { + id: 2, + name: "Bob Smith", + email: "bob@example.com", + role: "customer", + feedback: "Needs improvement.", + accountStatus: "suspended", + createdAt: "2021-11-03", + lastLogin: "2023-09-29", + }, + { + id: 3, + name: "Charlie Brown", + email: "charlie@example.com", + role: "vendor", + feedback: "Satisfied with the platform.", + accountStatus: "active", + createdAt: "2020-06-21", + lastLogin: "2023-10-02", + }, + ]); + + const [searchQuery, setSearchQuery] = useState(""); + const [roleFilter, setRoleFilter] = useState("all"); + const [statusFilter, setStatusFilter] = useState("all"); + + // Modal states + const [isViewModalOpen, setIsViewModalOpen] = useState(false); + const [isEditModalOpen, setIsEditModalOpen] = useState(false); + const [isSuspendModalOpen, setIsSuspendModalOpen] = useState(false); + const [selectedUser, setSelectedUser] = useState(null); + + // Filter users based on search query, role, and status + const filteredUsers = users.filter((user) => { + const matchesSearch = + user.name.toLowerCase().includes(searchQuery.toLowerCase()) || + user.email.toLowerCase().includes(searchQuery.toLowerCase()); + + const matchesRole = roleFilter === "all" || user.role === roleFilter; + const matchesStatus = statusFilter === "all" || user.accountStatus === statusFilter; + + return matchesSearch && matchesRole && matchesStatus; + }); + + // Handle viewing user details + const onViewDetails = (userId) => { + const user = users.find((u) => u.id === userId); + setSelectedUser(user); + setIsViewModalOpen(true); + }; + + // Handle editing user details + const onEditUser = (userId) => { + const user = users.find((u) => u.id === userId); + setSelectedUser(user); + setIsEditModalOpen(true); + }; + + // Handle suspending user + const onSuspendUser = (userId) => { + const user = users.find((u) => u.id === userId); + setSelectedUser(user); + setIsSuspendModalOpen(true); + }; + + // Confirm suspension of user + const confirmSuspendUser = () => { + if (selectedUser) { + setUsers((prevUsers) => + prevUsers.map((user) => + user.id === selectedUser.id + ? { ...user, accountStatus: "suspended" } + : user + ) + ); + setIsSuspendModalOpen(false); + } + }; + + const closeModals = () => { + setIsViewModalOpen(false); + setIsEditModalOpen(false); + setIsSuspendModalOpen(false); + setSelectedUser(null); + }; -
- {users.map((user) => ( -
+

+ User Management +

+ + {/* Search and Filter */} +
+ setSearchQuery(e.target.value)} + /> + + +
+ +
+ {filteredUsers.map((user) => ( +
+ {/* User Info */} +
+
+

{user.name}

+

{user.email}

+

Role: {user.role}

+

+ Feedback: {user.feedback || "No feedback available"} +

+

+ Status: {user.accountStatus} +

+
+ + {/* Action Buttons */} +
+ + + {user.accountStatus === "suspended" ? ( + + ) : ( + + )} +
+
+ + {/* More User Info */} +
+

+ Account Created: {user.createdAt}

-

- Status: {user.accountStatus} +

+ Last Login: {user.lastLogin}

+
+ ))} +
- {/* Action Buttons */} -
- - - -
+ {/* View Modal */} + {isViewModalOpen && selectedUser && ( +
+
+

User Details

+

Name: {selectedUser.name}

+

Email: {selectedUser.email}

+

Role: {selectedUser.role}

+

Feedback: {selectedUser.feedback}

+ +
+
+ )} + + {/* Edit Modal */} + {isEditModalOpen && selectedUser && ( +
+
+

Edit User

+ setSelectedUser({ ...selectedUser, name: e.target.value })} + className="border rounded-md p-2 mb-4 w-full" + placeholder="User name" + /> + setSelectedUser({ ...selectedUser, email: e.target.value })} + className="border rounded-md p-2 mb-4 w-full" + placeholder="User email" + /> +
+
+ )} - {/* More User Info */} -
-

- Account Created: {user.createdAt} -

-

- Last Login: {user.lastLogin} -

+ {/* Suspend Modal */} + {isSuspendModalOpen && selectedUser && ( +
+
+

Suspend User

+

Are you sure you want to suspend {selectedUser.name}?

+ +
- ))} + )}
-
-); + ); +}; export default UserManagement;