diff --git a/src/components/Navbar.tsx b/src/components/Navbar.tsx index b2ef13df..6f6f5edf 100644 --- a/src/components/Navbar.tsx +++ b/src/components/Navbar.tsx @@ -9,6 +9,7 @@ import moment from "moment"; import MobileMenu from "./MobileMenu"; import {useState} from "react"; import {Type} from "@/interfaces/user"; +import {USER_TYPE_LABELS} from "@/resources/user"; interface Props { user: User; @@ -43,8 +44,6 @@ export default function Navbar({user, path, navDisabled = false, focusMode = fal return today.add(7, "days").isAfter(momentDate); }; - const uppercaseFirstLetter = (string: Type) => string.charAt(0).toUpperCase() + string.slice(1); - return ( <> {user && setIsMenuOpen(false)} user={user} />} @@ -72,7 +71,9 @@ export default function Navbar({user, path, navDisabled = false, focusMode = fal )} {user.name} - {user.name} | {uppercaseFirstLetter(user.type)} + + {user.name} | {USER_TYPE_LABELS[user.type]} +
setIsMenuOpen(true)}> diff --git a/src/components/UserCard.tsx b/src/components/UserCard.tsx index c703d99c..f72591aa 100644 --- a/src/components/UserCard.tsx +++ b/src/components/UserCard.tsx @@ -90,7 +90,7 @@ const UserCard = ({user, loggedInUser, onClose, onViewStudents, onViewTeachers, agentInformation: type === "agent" ? { - companyName, + name: companyName, commercialRegistration, } : undefined, @@ -100,13 +100,13 @@ const UserCard = ({user, loggedInUser, onClose, onViewStudents, onViewTeachers, referralAgent, monthlyDuration, companyInformation: { - companyName, + name: companyName, userAmount, }, payment: { value: paymentValue, currency: paymentCurrency, - ...referralAgent === '' ? {} : { commission: commissionValue } + ...(referralAgent === "" ? {} : {commission: commissionValue}), }, } : undefined, @@ -219,54 +219,56 @@ const UserCard = ({user, loggedInUser, onClose, onViewStudents, onViewTeachers,
-
- - {referralAgentLabel && ( - u.type === "agent").map((x) => ({value: x.id, label: `${x.name} - ${x.email}`})), + ]} + defaultValue={{ + value: referralAgent, + label: referralAgentLabel, + }} + onChange={(value) => setReferralAgent(value?.value)} + styles={{ + control: (styles) => ({ + ...styles, + paddingLeft: "4px", + border: "none", + outline: "none", + ":focus": { outline: "none", - ":focus": { - outline: "none", - }, - }), - option: (styles, state) => ({ - ...styles, - backgroundColor: state.isFocused ? "#D5D9F0" : state.isSelected ? "#7872BF" : "white", - color: state.isFocused ? "black" : styles.color, - }), - }} - /> - )} -
-
- {referralAgent !== '' ? ( - <> - - setCommission(e ? parseInt(e) : undefined)} - type="number" - defaultValue={commissionValue || 0} - className="col-span-3" - /> - - ) :
} -
+ }, + }), + option: (styles, state) => ({ + ...styles, + backgroundColor: state.isFocused ? "#D5D9F0" : state.isSelected ? "#7872BF" : "white", + color: state.isFocused ? "black" : styles.color, + }), + }} + /> + )}
+
+ {referralAgent !== "" ? ( + <> + + setCommission(e ? parseInt(e) : undefined)} + type="number" + defaultValue={commissionValue || 0} + className="col-span-3" + /> + + ) : ( +
+ )} +
+
)} diff --git a/src/dashboards/Agent.tsx b/src/dashboards/Agent.tsx index f37054b4..dbfb56cc 100644 --- a/src/dashboards/Agent.tsx +++ b/src/dashboards/Agent.tsx @@ -7,11 +7,7 @@ import UserList from "@/pages/(admin)/Lists/UserList"; import {dateSorter} from "@/utils"; import moment from "moment"; import {useEffect, useState} from "react"; -import { - BsArrowLeft, - BsPersonFill, - BsBank -} from "react-icons/bs"; +import {BsArrowLeft, BsPersonFill, BsBank} from "react-icons/bs"; import UserCard from "@/components/UserCard"; import useGroups from "@/hooks/useGroups"; import {calculateAverageLevel, calculateBandScore} from "@/utils/score"; @@ -41,7 +37,8 @@ export default function AgentDashboard({user}: Props) { const corporateFilter = (user: User) => user.type === "corporate"; const referredCorporateFilter = (x: User) => x.type === "corporate" && !!x.corporateInformation && x.corporateInformation.referralAgent === user.id; - const inactiveReferredCorporateFilter = (x: User) => referredCorporateFilter(x) && (x.status === "disabled" || moment().isAfter(x.subscriptionExpirationDate)); + const inactiveReferredCorporateFilter = (x: User) => + referredCorporateFilter(x) && (x.status === "disabled" || moment().isAfter(x.subscriptionExpirationDate)); const UserDisplay = (displayUser: User) => (
{ const user = req.session.user; @@ -59,7 +59,7 @@ export const getServerSideProps = withIronSessionSsr(({req, res}) => { const columnHelper = createColumnHelper(); -const PaymentCreator = ({onClose, reload}: {onClose: () => void; reload: () => void}) => { +const PaymentCreator = ({onClose, reload, showComission = false}: {onClose: () => void; reload: () => void; showComission: boolean}) => { const [corporate, setCorporate] = useState(); const [price, setPrice] = useState(0); const [currency, setCurrency] = useState("EUR"); @@ -175,24 +175,25 @@ const PaymentCreator = ({onClose, reload}: {onClose: () => void; reload: () => v />
- -
-
- - setCommission(e ? parseInt(e) : 0)} type="number" defaultValue={0} /> + {showComission && ( +
+
+ + setCommission(e ? parseInt(e) : 0)} type="number" defaultValue={0} /> +
+
+ + c.currency === currency)?.label}`} + onChange={() => null} + type="text" + defaultValue={0} + disabled + /> +
-
- - c.currency === currency)?.label}`} - onChange={() => null} - type="text" - defaultValue={0} - disabled - /> -
-
+ )}
@@ -244,8 +245,13 @@ export default function PaymentRecord() { const [agent, setAgent] = useState(); const {user} = useUser({redirectTo: "/login"}); - const {users} = useUsers(); - const {payments, reload} = usePayments(); + const {users, reload: reloadUsers} = useUsers(); + const {payments, reload: reloadPayment} = usePayments(); + + const reload = () => { + reloadUsers(); + reloadPayment(); + }; useEffect(() => { setDisplayPayments( @@ -415,14 +421,18 @@ export default function PaymentRecord() { }), columnHelper.accessor("corporate", { header: "Corporate", - cell: (info) => ( -
setSelectedUser(users.find((x) => x.id === info.row.original.corporate))}> - {(users.find((x) => x.id === info.row.original.corporate) as CorporateUser)?.corporateInformation.companyInformation.name || - (users.find((x) => x.id === info.row.original.corporate) as CorporateUser)?.name} -
- ), + cell: (info) => { + const user = users.find((x) => x.id === info.row.original.corporate) as CorporateUser; + return ( +
setSelectedUser(user)}> + {user?.corporateInformation.companyInformation.name || user?.name} +
+ ); + }, }), columnHelper.accessor("date", { header: "Date", @@ -524,7 +534,11 @@ export default function PaymentRecord() { setIsCreatingPayment(false)}> - setIsCreatingPayment(false)} reload={reload} /> + setIsCreatingPayment(false)} + reload={reload} + showComission={user.type === "developer" || user.type === "admin"} + />
diff --git a/src/pages/profile.tsx b/src/pages/profile.tsx index 54ff55cc..53a565aa 100644 --- a/src/pages/profile.tsx +++ b/src/pages/profile.tsx @@ -64,6 +64,8 @@ export default function Home() { const [gender, setGender] = useState(); const [employment, setEmployment] = useState(); const [position, setPosition] = useState(); + const [companyName, setCompanyName] = useState(""); + const [commercialRegistration, setCommercialRegistration] = useState(""); const profilePictureInput = useRef(null); @@ -89,6 +91,10 @@ export default function Home() { setGender(user.demographicInformation?.gender); setEmployment(user.type === "corporate" ? undefined : user.demographicInformation?.employment); setPosition(user.type === "corporate" ? user.demographicInformation?.position : undefined); + if(user.type === 'agent') { + setCompanyName(user.agentInformation?.companyName) + setCommercialRegistration(user.agentInformation?.commercialRegistration) + } } }, [user]); @@ -219,7 +225,7 @@ export default function Home() { name="companyName" onChange={() => null} placeholder="Enter corporate name" - defaultValue={user.agentInformation.companyName} + defaultValue={companyName} disabled /> null} placeholder="Enter commercial registration" - defaultValue={user.agentInformation.commercialRegistration} + defaultValue={commercialRegistration} disabled />