@@ -25,11 +25,13 @@ import {
2525 SelectContent ,
2626 SelectItem ,
2727} from "@/components/ui/select" ;
28- import { CoachingRelationshipWithUserNames } from "@/types/coaching_relationship_with_user_names " ;
28+ import { CoachingRelationshipWithUserNames } from "@/types/coaching_relationship " ;
2929import { OrganizationStateStore } from "@/lib/stores/organization-state-store" ;
3030import { AuthStore } from "@/lib/stores/auth-store" ;
3131import { Id } from "@/types/general" ;
3232import { User , Role } from "@/types/user" ;
33+ import { useCoachingRelationshipMutation } from "@/lib/api/coaching-relationships" ;
34+ import { toast } from "sonner" ;
3335
3436interface MemberCardProps {
3537 firstName : string ;
@@ -54,7 +56,8 @@ export function MemberCard({
5456 ( state : OrganizationStateStore ) => state . currentOrganizationId
5557 ) ;
5658 const { userSession } = useAuthStore ( ( state : AuthStore ) => state ) ;
57- const { deleteNested : deleteUser } = useUserMutation ( currentOrganizationId ) ;
59+ const { error : deleteError , deleteNested : deleteUser } = useUserMutation ( currentOrganizationId ) ;
60+ const { error : createError , createNested : createRelationship } = useCoachingRelationshipMutation ( currentOrganizationId ) ;
5861
5962 // Check if current user is a coach in any of this user's relationships
6063 // and make sure we can't delete ourselves. Admins can delete any user.
@@ -66,29 +69,49 @@ export function MemberCard({
6669 if ( ! confirm ( "Are you sure you want to delete this member?" ) ) {
6770 return ;
6871 }
72+ await deleteUser ( currentOrganizationId , userId ) ;
73+ onRefresh ( ) ;
6974
70- try {
71- await deleteUser ( currentOrganizationId , userId ) ;
75+ if ( deleteError ) {
76+ console . error ( "Error deleting member:" , deleteError ) ;
77+ toast . error ( "Error deleting member" ) ;
7278 onRefresh ( ) ;
73- } catch ( error ) {
74- console . error ( "Error deleting user:" , error ) ;
75- // TODO: Show an error toast here once we start using toasts for showing operation results.
79+ return ;
7680 }
81+ toast . success ( "Member deleted successfully" ) ;
82+ onRefresh ( ) ;
7783 } ;
7884
7985 // Placeholder – actual UI flows will be implemented later
8086 const [ assignDialogOpen , setAssignDialogOpen ] = useState ( false ) ;
8187 const [ assignMode , setAssignMode ] = useState < "coach" | "coachee" > ( "coach" ) ;
8288 const [ selectedMemberId , setSelectedMemberId ] = useState < Id | null > ( null ) ;
89+ const [ assignedMemberId , setAssignedMemberId ] = useState < Id | null > ( null ) ;
8390
8491 const handleCreateCoachingRelationship = ( ) => {
85- if ( ! selectedMemberId ) return ;
92+ if ( ! selectedMemberId || ! assignedMemberId ) return ;
93+
8694 if ( assignMode === "coach" ) {
8795 console . log ( "Assign" , selectedMemberId , "as coach for" , userId ) ;
96+ createRelationship ( currentOrganizationId , {
97+ coach_id : assignedMemberId ,
98+ coachee_id : selectedMemberId ,
99+ } ) ;
88100 } else {
89101 console . log ( "Assign" , selectedMemberId , "as coachee for" , userId ) ;
102+ createRelationship ( currentOrganizationId , {
103+ coach_id : selectedMemberId ,
104+ coachee_id : assignedMemberId ,
105+ } ) ;
106+ }
107+
108+ if ( createError ) {
109+ toast . error ( "Error creating Coaching Relationship" ) ;
110+ return ;
90111 }
91- // TODO: call mutation
112+
113+ toast . success ( "Coaching Relationship created successfully" ) ;
114+ onRefresh ( ) ;
92115 setAssignDialogOpen ( false ) ;
93116 setSelectedMemberId ( null ) ;
94117 } ;
@@ -114,6 +137,7 @@ export function MemberCard({
114137 onClick = { ( ) => {
115138 setAssignMode ( "coach" ) ;
116139 setAssignDialogOpen ( true ) ;
140+ setSelectedMemberId ( userId ) ;
117141 } }
118142 >
119143 Assign Coach
@@ -122,6 +146,7 @@ export function MemberCard({
122146 onClick = { ( ) => {
123147 setAssignMode ( "coachee" ) ;
124148 setAssignDialogOpen ( true ) ;
149+ setSelectedMemberId ( userId ) ;
125150 } }
126151 >
127152 Assign Coachee
@@ -151,8 +176,8 @@ export function MemberCard({
151176 </ DialogTitle >
152177 </ DialogHeader >
153178 < Select
154- onValueChange = { ( val ) => setSelectedMemberId ( val as Id ) }
155- value = { selectedMemberId ?? undefined }
179+ onValueChange = { ( val ) => setAssignedMemberId ( val as Id ) }
180+ value = { assignedMemberId ?? undefined }
156181 >
157182 < SelectTrigger className = "w-full" >
158183 < SelectValue placeholder = "Select a member" />
0 commit comments