@@ -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