@@ -14,6 +14,7 @@ import { MoreHorizontal, Trash2 } from "lucide-react";
1414import {
1515 Dialog ,
1616 DialogContent ,
17+ DialogDescription ,
1718 DialogHeader ,
1819 DialogFooter ,
1920 DialogTitle ,
@@ -43,6 +44,12 @@ interface MemberCardProps {
4344 users : User [ ] ;
4445}
4546
47+ interface Member {
48+ id : Id ;
49+ first_name : string ;
50+ last_name : string ;
51+ }
52+
4653export function MemberCard ( {
4754 firstName,
4855 lastName,
@@ -82,38 +89,50 @@ export function MemberCard({
8289 onRefresh ( ) ;
8390 } ;
8491
92+ const handleAssignMember = ( val : string ) => {
93+ const user = users . find ( ( m ) => m . id === val ) ;
94+ if ( ! user ) return ;
95+ const member : Member = {
96+ id : user . id ,
97+ first_name : user . first_name ,
98+ last_name : user . last_name ,
99+ } ;
100+ setAssignedMember ( member ) ;
101+ } ;
102+
85103 // Placeholder – actual UI flows will be implemented later
86104 const [ assignDialogOpen , setAssignDialogOpen ] = useState ( false ) ;
87105 const [ assignMode , setAssignMode ] = useState < "coach" | "coachee" > ( "coach" ) ;
88- const [ selectedMemberId , setSelectedMemberId ] = useState < Id | null > ( null ) ;
89- const [ assignedMemberId , setAssignedMemberId ] = useState < Id | null > ( null ) ;
106+ const [ selectedMember , setSelectedMember ] = useState < Member | null > ( null ) ;
107+ const [ assignedMember , setAssignedMember ] = useState < Member | null > ( null ) ;
90108
91109 const handleCreateCoachingRelationship = ( ) => {
92- if ( ! selectedMemberId || ! assignedMemberId ) return ;
110+ if ( ! selectedMember || ! assignedMember ) return ;
93111
94112 if ( assignMode === "coach" ) {
95- console . log ( "Assign" , selectedMemberId , "as coach for" , userId ) ;
113+ console . log ( "Assign" , selectedMember . id , "as coach for" , userId ) ;
96114 createRelationship ( currentOrganizationId , {
97- coach_id : assignedMemberId ,
98- coachee_id : selectedMemberId ,
115+ coach_id : assignedMember . id ,
116+ coachee_id : selectedMember . id ,
99117 } ) ;
100118 } else {
101- console . log ( "Assign" , selectedMemberId , "as coachee for" , userId ) ;
119+ console . log ( "Assign" , selectedMember . id , "as coachee for" , userId ) ;
102120 createRelationship ( currentOrganizationId , {
103- coach_id : selectedMemberId ,
104- coachee_id : assignedMemberId ,
121+ coach_id : selectedMember . id ,
122+ coachee_id : assignedMember . id ,
105123 } ) ;
106124 }
107125
108126 if ( createError ) {
109- toast . error ( " Error creating Coaching Relationship" ) ;
127+ toast . error ( ` Error assigning ${ assignMode } ` ) ;
110128 return ;
111129 }
112130
113- toast . success ( "Coaching Relationship created successfully" ) ;
131+ toast . success ( `Successfully assigned ${ assignedMember . first_name } ${ assignedMember . last_name } as ${ assignMode } for ${ selectedMember . first_name } ${ selectedMember . last_name } ` ) ;
114132 onRefresh ( ) ;
115133 setAssignDialogOpen ( false ) ;
116- setSelectedMemberId ( null ) ;
134+ setSelectedMember ( null ) ;
135+ setAssignedMember ( null ) ;
117136 } ;
118137
119138 return (
@@ -137,7 +156,7 @@ export function MemberCard({
137156 onClick = { ( ) => {
138157 setAssignMode ( "coach" ) ;
139158 setAssignDialogOpen ( true ) ;
140- setSelectedMemberId ( userId ) ;
159+ setSelectedMember ( { id : userId , first_name : firstName , last_name : lastName } ) ;
141160 } }
142161 >
143162 Assign Coach
@@ -146,7 +165,7 @@ export function MemberCard({
146165 onClick = { ( ) => {
147166 setAssignMode ( "coachee" ) ;
148167 setAssignDialogOpen ( true ) ;
149- setSelectedMemberId ( userId ) ;
168+ setSelectedMember ( { id : userId , first_name : firstName , last_name : lastName } ) ;
150169 } }
151170 >
152171 Assign Coachee
@@ -174,10 +193,13 @@ export function MemberCard({
174193 < DialogTitle >
175194 { assignMode === "coach" ? "Assign Coach" : "Assign Coachee" }
176195 </ DialogTitle >
196+ < DialogDescription >
197+ Select a member to be their { assignMode === "coach" ? "coach" : "coachee" }
198+ </ DialogDescription >
177199 </ DialogHeader >
178200 < Select
179- onValueChange = { ( val ) => setAssignedMemberId ( val as Id ) }
180- value = { assignedMemberId ?? undefined }
201+ onValueChange = { ( val ) => handleAssignMember ( val ) }
202+ value = { assignedMember ?. id ?. toString ( ) }
181203 >
182204 < SelectTrigger className = "w-full" >
183205 < SelectValue placeholder = "Select a member" />
0 commit comments