Allow users to edit others

This commit is contained in:
Tiago Ribeiro
2024-09-02 12:30:23 +01:00
parent 4e3c947d2a
commit b6c3754b40

View File

@@ -1,5 +1,5 @@
import useFilterRecordsByUser from "@/hooks/useFilterRecordsByUser"; import useFilterRecordsByUser from "@/hooks/useFilterRecordsByUser";
import {CorporateInformation, CorporateUser, EMPLOYMENT_STATUS, User, Type, Stat} from "@/interfaces/user"; import {CorporateInformation, CorporateUser, EMPLOYMENT_STATUS, User, Type, Stat, Gender} from "@/interfaces/user";
import {groupBySession, averageScore} from "@/utils/stats"; import {groupBySession, averageScore} from "@/utils/stats";
import {RadioGroup} from "@headlessui/react"; import {RadioGroup} from "@headlessui/react";
import axios from "axios"; import axios from "axios";
@@ -92,6 +92,9 @@ const UserCard = ({
user.type === "corporate" || user.type === "mastercorporate" ? user.demographicInformation?.position : undefined, user.type === "corporate" || user.type === "mastercorporate" ? user.demographicInformation?.position : undefined,
); );
const [studentID, setStudentID] = useState<string | undefined>(user.type === "student" ? user.studentID : undefined); const [studentID, setStudentID] = useState<string | undefined>(user.type === "student" ? user.studentID : undefined);
const [name, setName] = useState<string>(user.name);
const [phone, setPhone] = useState<string | undefined>(user.demographicInformation?.phone);
const [gender, setGender] = useState<Gender | undefined>(user.demographicInformation?.gender);
const [referralAgent, setReferralAgent] = useState( const [referralAgent, setReferralAgent] = useState(
user.type === "corporate" || user.type === "mastercorporate" ? user.corporateInformation?.referralAgent : undefined, user.type === "corporate" || user.type === "mastercorporate" ? user.corporateInformation?.referralAgent : undefined,
@@ -152,6 +155,11 @@ const UserCard = ({
studentID, studentID,
type, type,
status, status,
name,
demographicInformation: {
...(!!user.demographicInformation ? user.demographicInformation : {}),
phone,
},
agentInformation: agentInformation:
type === "agent" type === "agent"
? { ? {
@@ -429,10 +437,10 @@ const UserCard = ({
label="Name" label="Name"
type="text" type="text"
name="name" name="name"
onChange={() => null} onChange={setName}
placeholder="Enter your name" placeholder="Enter your name"
defaultValue={user.name} defaultValue={name}
disabled disabled={disabled}
/> />
<Input <Input
label="E-mail Address" label="E-mail Address"
@@ -454,10 +462,10 @@ const UserCard = ({
type="tel" type="tel"
name="phone" name="phone"
label="Phone number" label="Phone number"
onChange={() => null} onChange={setPhone}
placeholder="Enter phone number" placeholder="Enter phone number"
defaultValue={user.demographicInformation?.phone} defaultValue={phone}
disabled disabled={disabled}
/> />
</div> </div>
@@ -528,7 +536,8 @@ const UserCard = ({
<div className="relative flex flex-col gap-3 w-full"> <div className="relative flex flex-col gap-3 w-full">
<label className="font-normal text-base text-mti-gray-dim">Gender</label> <label className="font-normal text-base text-mti-gray-dim">Gender</label>
<RadioGroup <RadioGroup
value={user.demographicInformation?.gender} value={gender}
onChange={(e) => setGender(e)}
className="flex flex-row gap-4 justify-between" className="flex flex-row gap-4 justify-between"
disabled={disabled}> disabled={disabled}>
<RadioGroup.Option value="male"> <RadioGroup.Option value="male">
@@ -582,7 +591,9 @@ const UserCard = ({
isChecked={!!expiryDate} isChecked={!!expiryDate}
onChange={(checked) => setExpiryDate(checked ? user.subscriptionExpirationDate || new Date() : null)} onChange={(checked) => setExpiryDate(checked ? user.subscriptionExpirationDate || new Date() : null)}
disabled={ disabled={
disabled || (!["admin", "developer"].includes(loggedInUser.type) && !!loggedInUser.subscriptionExpirationDate) disabled ||
(!["admin", "developer", "mastercorporate", "corporate"].includes(loggedInUser.type) &&
!!loggedInUser.subscriptionExpirationDate)
}> }>
Enabled Enabled
</Checkbox> </Checkbox>