Skip to content

Commit 9573452

Browse files
committed
fixing update team info
1 parent 9d93b8f commit 9573452

File tree

2 files changed

+151
-40
lines changed

2 files changed

+151
-40
lines changed

src/containers/admin-dashBoard/Teams.tsx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ export interface Team {
3434
name: string;
3535
cohort: Cohort;
3636
ttl: any;
37+
manager:any;
38+
phase:any;
39+
program:any;
3740
}
3841

3942
export const getAllTeam = gql`
@@ -96,6 +99,15 @@ export const getAllTeam = gql`
9699
role
97100
organizations
98101
}
102+
getAllPrograms(orgToken:$orgToken){
103+
id
104+
name
105+
}
106+
getAllPhases(orgToken:$orgToken){
107+
id
108+
name
109+
description
110+
}
99111
}
100112
`;
101113

src/containers/admin-dashBoard/UpdateTeamModal.tsx

Lines changed: 139 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,19 @@ export const UpdateTeam = gql`
1414
$cohort: String
1515
$TTL: String
1616
$orgToken: String
17+
$manager: String
18+
$phase: String
19+
$program: String
1720
) {
1821
updateTeam(
1922
id: $updateTeamId
2023
orgToken: $orgToken
2124
name: $name
2225
cohort: $cohort
2326
TTL: $TTL
27+
manager: $manager
28+
phase: $phase
29+
program: $program
2430
) {
2531
name
2632
}
@@ -37,6 +43,8 @@ export default function UpdateTeamModal({
3743
data?: {
3844
getAllTeams: Team[];
3945
getAllCohorts: Cohort[];
46+
getAllPrograms?: any[];
47+
getAllPhases?: any[];
4048
getAllUsers: any;
4149
};
4250
updateTeamModal: boolean;
@@ -47,7 +55,6 @@ export default function UpdateTeamModal({
4755
const { t } = useTranslation();
4856
const {
4957
handleSubmit,
50-
watch,
5158
formState: { errors },
5259
reset,
5360
register,
@@ -69,10 +76,16 @@ export default function UpdateTeamModal({
6976
async function updateTeam(data: any) {
7077
const newData: any = { ...data };
7178

79+
// Process the select fields
80+
newData.manager && (newData.manager = newData.manager.value);
81+
newData.program && (newData.program = newData.program.value);
82+
newData.phase && (newData.phase = newData.phase.value);
83+
7284
newData.coordinatorEmail &&
7385
(newData.coordinatorEmail = newData.coordinatorEmail.value);
7486
newData.programName && (newData.programName = newData.programName.value);
7587

88+
// Clean up empty fields
7689
Object.keys(newData).forEach((field) => {
7790
if (!newData[field] || newData[field] === '') {
7891
delete newData[field];
@@ -88,6 +101,7 @@ export default function UpdateTeamModal({
88101
}
89102

90103
useEffect(() => {
104+
// Set form values when the modal opens
91105
setValue('name', currentTeam?.name);
92106
setValue('TTL', {
93107
value: currentTeam?.ttl?.email,
@@ -97,6 +111,19 @@ export default function UpdateTeamModal({
97111
value: currentTeam?.cohort?.name,
98112
label: currentTeam?.cohort?.name || 'no cohort assigned',
99113
});
114+
setValue('manager', {
115+
value: currentTeam?.manager?.email,
116+
label: currentTeam?.manager?.email || 'no manager assigned',
117+
});
118+
// setValue('phase', {
119+
// value: currentTeam?.phase?.name,
120+
// label: currentTeam?.phase?.name || 'no phase assigned',
121+
// });
122+
setValue('phase', currentTeam?.phase)
123+
setValue('program', {
124+
value: currentTeam?.program?.name,
125+
label: currentTeam?.program?.name || 'no program assigned',
126+
});
100127
}, [currentTeam, updateTeamModal]);
101128

102129
return (
@@ -111,54 +138,52 @@ export default function UpdateTeamModal({
111138
<h3 className="w-11/12 text-sm font-bold text-center uppercase dark:text-white">
112139
{t('Update Team')}
113140
</h3>
114-
<hr className="w-full my-3 border-b bg-primary" />
141+
<hr className="w-full my-3 border-b bg-primary" />
115142
</div>
116143
<div className="card-body">
117144
<form className="px-8 py-3 ">
118-
<div className="my-5 input h-9 ">
119-
<div className="flex items-center w-full h-full rounded-md grouped-input">
120-
<input
121-
type="text"
122-
className="w-full px-5 py-2 font-sans text-xs border rounded outline-none border-primary dark:bg-dark-frame-bg dark:text-white"
123-
placeholder={t('name')}
124-
{...register('name')}
125-
/>
126-
</div>
145+
{/* Team Name */}
146+
<div className="my-5 input h-9">
147+
<input
148+
type="text"
149+
className="w-full px-5 py-2 font-sans text-xs border rounded outline-none border-primary dark:bg-dark-frame-bg dark:text-white"
150+
placeholder={t('name')}
151+
{...register('name')}
152+
/>
127153
{errors?.name && (
128154
<p className="font-thin text-[12px] text-red-300">
129155
{errors?.name?.message?.toString()}
130156
</p>
131157
)}
132158
</div>
159+
160+
{/* TTL Email */}
133161
<div className="my-5 input h-9">
134-
<div className="flex items-center w-full h-full rounded-md grouped-input">
135-
<ControlledSelect
136-
placeholder={t('email')}
137-
register={{
138-
control,
139-
name: 'TTL',
140-
rules: {
141-
required: `${t('The ttl email is required')}`,
142-
},
143-
}}
144-
options={
145-
data?.getAllUsers
146-
?.filter((user: any) => user.role === 'ttl')
147-
?.map((user: any) => ({
148-
value: user.email,
149-
label: user.email,
150-
})) ?? []
151-
}
152-
/>
153-
</div>
154-
{errors?.ttlEmail && (
162+
<ControlledSelect
163+
placeholder={t('email')}
164+
register={{
165+
control,
166+
name: 'TTL',
167+
rules: { required: `${t('The ttl email is required')}` },
168+
}}
169+
options={
170+
data?.getAllUsers
171+
?.filter((user: any) => user.role === 'ttl')
172+
?.map((user: any) => ({
173+
value: user.email,
174+
label: user.email,
175+
})) ?? []
176+
}
177+
/>
178+
{errors?.TTL && (
155179
<p className="font-thin text-[12px] text-red-300">
156-
{errors?.ttlEmail?.message?.toString()}
180+
{errors?.TTL?.message?.toString()}
157181
</p>
158182
)}
159183
</div>
160184

161-
<div className="my-5 input h-9 ">
185+
{/* Cohort */}
186+
<div className="my-5 input h-9">
162187
<ControlledSelect
163188
placeholder={t('Choose a Cohort')}
164189
register={{
@@ -171,9 +196,84 @@ export default function UpdateTeamModal({
171196
label: name,
172197
}))}
173198
/>
174-
{errors?.programName && (
199+
{errors?.cohort && (
200+
<p className="font-thin text-[12px] text-red-300">
201+
{errors?.cohort?.message?.toString()}
202+
</p>
203+
)}
204+
</div>
205+
206+
{/* Manager */}
207+
<div className="my-5 input h-9">
208+
<ControlledSelect
209+
placeholder={t('Manager')}
210+
register={{
211+
control,
212+
name: 'manager',
213+
rules: { required: `${t('Manager is required')}` },
214+
}}
215+
options={
216+
data?.getAllUsers
217+
?.filter((user: any) => user.role === 'manager')
218+
?.map((user: any) => ({
219+
value: user.email,
220+
label: user.email,
221+
})) ?? []
222+
}
223+
/>
224+
{errors?.manager && (
225+
<p className="font-thin text-[12px] text-red-300">
226+
{errors?.manager?.message?.toString()}
227+
</p>
228+
)}
229+
</div>
230+
231+
{/* Phase */}
232+
<div className="my-5 input h-9">
233+
<input
234+
type="text"
235+
className="w-full px-5 py-2 font-sans text-xs border rounded outline-none border-primary dark:bg-dark-frame-bg dark:text-white"
236+
placeholder={t('Phase')}
237+
{...register('phase', { required: `${t('Phase is required')}` })}
238+
/>
239+
{errors?.phase && (
240+
<p className="font-thin text-[12px] text-red-300">
241+
{errors?.phase?.message?.toString()}
242+
</p>
243+
)}
244+
</div>
245+
{/* <div className="my-5 input h-9">
246+
<ControlledSelect
247+
placeholder={t('Phases')}
248+
register={{
249+
control,
250+
name: 'phase', // Ensure this matches your backend mutation variable
251+
rules: { required: `${t('Phase is required')}` },
252+
}}
253+
options={data?.getAllPhases?.map(({ id,name }) => ({
254+
value: id,
255+
label: name,
256+
}))}
257+
/>
258+
</div> */}
259+
260+
{/* Program */}
261+
<div className="my-5 input h-9">
262+
<ControlledSelect
263+
placeholder={t('Program')}
264+
register={{
265+
control,
266+
name: 'program',
267+
rules: { required: `${t('Program is required')}` },
268+
}}
269+
options={data?.getAllPrograms?.map(({ name }) => ({
270+
value: name,
271+
label: name,
272+
}))}
273+
/>
274+
{errors?.program && (
175275
<p className="font-thin text-[12px] text-red-300">
176-
{errors?.programName?.message?.toString()}
276+
{errors?.program?.message?.toString()}
177277
</p>
178278
)}
179279
</div>
@@ -190,18 +290,17 @@ export default function UpdateTeamModal({
190290
}}
191291
disabled={loading}
192292
>
193-
{' '}
194293
{t('Cancel')}
195294
</Button>
196295
<Button
197296
variant="primary"
198297
size="sm"
199-
style="w-[30%] md:w-1/4 text-sm font-sans p-0"
298+
style="w-[30%] md:w-1/4 text-sm font-sans"
299+
data-testid="updateTeam"
200300
onClick={handleSubmit(updateTeam)}
201301
loading={loading}
202-
data-testid="confirmUpdateBtn"
302+
disabled={loading}
203303
>
204-
{' '}
205304
{t('Save')}
206305
</Button>
207306
</div>

0 commit comments

Comments
 (0)