feat: Implement connection request response notifications and emit them upon status update.

This commit is contained in:
pradeepkumar
2026-03-20 02:45:27 +05:30
parent 7736917c96
commit 2914e74947
2 changed files with 49 additions and 1 deletions

View File

@@ -241,7 +241,7 @@ export class ConnectionRequestsService {
throw new BadRequestException('This request has already been responded to'); throw new BadRequestException('This request has already been responded to');
} }
return this.prisma.connectionRequest.update({ const updated = await this.prisma.connectionRequest.update({
where: { id: requestId }, where: { id: requestId },
data: { data: {
status: dto.status as ConnectionStatus, status: dto.status as ConnectionStatus,
@@ -257,6 +257,25 @@ export class ConnectionRequestsService {
}, },
}, },
}); });
// Get agent name for notification
const agentProfile = await this.prisma.agentProfile.findUnique({
where: { id: agentProfileId },
select: { firstName: true, lastName: true },
});
const agentName = agentProfile
? `${agentProfile.firstName || ''} ${agentProfile.lastName || ''}`.trim()
: 'An agent';
// Notify the user about the accept/reject
this.eventEmitter.emit('notification.connection_response', {
recipientUserId: request.userId,
agentName,
status: dto.status,
connectionRequestId: requestId,
});
return updated;
} }
/** /**

View File

@@ -444,4 +444,33 @@ export class NotificationsService implements OnModuleInit {
}, },
); );
} }
@OnEvent('notification.connection_response')
async handleConnectionResponseNotification(event: {
recipientUserId: string;
agentName: string;
status: string;
connectionRequestId: string;
}) {
const isAccepted = event.status === 'ACCEPTED';
const prefix = await this.getRoutePrefix(event.recipientUserId);
const actionUrl = isAccepted ? `${prefix}/message` : `${prefix}/profiles`;
await this.createAndSendNotification(
event.recipientUserId,
'connection',
isAccepted ? 'Connection Accepted' : 'Connection Declined',
isAccepted
? `${event.agentName} accepted your connection request. You can now send messages.`
: `${event.agentName} declined your connection request.`,
'new_lead_alerts',
actionUrl,
{
type: 'connection_response',
status: event.status,
connectionRequestId: event.connectionRequestId,
link: actionUrl,
},
);
}
} }