fix
This commit is contained in:
@@ -5,13 +5,17 @@ import {
|
||||
ForbiddenException,
|
||||
BadRequestException,
|
||||
} from '@nestjs/common';
|
||||
import { EventEmitter2 } from '@nestjs/event-emitter';
|
||||
import { PrismaService } from '../prisma/prisma.service';
|
||||
import { ConnectionStatus } from '@prisma/client';
|
||||
import { CreateConnectionRequestDto, RespondConnectionRequestDto } from './dto';
|
||||
|
||||
@Injectable()
|
||||
export class ConnectionRequestsService {
|
||||
constructor(private prisma: PrismaService) {}
|
||||
constructor(
|
||||
private prisma: PrismaService,
|
||||
private eventEmitter: EventEmitter2,
|
||||
) {}
|
||||
|
||||
/**
|
||||
* Create a new connection request from user to agent
|
||||
@@ -66,7 +70,7 @@ export class ConnectionRequestsService {
|
||||
}
|
||||
if (existingRequest.status === ConnectionStatus.REJECTED) {
|
||||
// Allow re-requesting after rejection by updating the existing request
|
||||
return this.prisma.connectionRequest.update({
|
||||
const updated = await this.prisma.connectionRequest.update({
|
||||
where: { id: existingRequest.id },
|
||||
data: {
|
||||
status: ConnectionStatus.PENDING,
|
||||
@@ -85,11 +89,28 @@ export class ConnectionRequestsService {
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
// Get sender name for notification
|
||||
const userProfile = await this.prisma.userProfile.findUnique({
|
||||
where: { userId },
|
||||
select: { firstName: true, lastName: true },
|
||||
});
|
||||
const senderName = userProfile
|
||||
? `${userProfile.firstName || ''} ${userProfile.lastName || ''}`.trim()
|
||||
: 'A user';
|
||||
|
||||
this.eventEmitter.emit('notification.connection_request', {
|
||||
recipientUserId: agentProfile.userId,
|
||||
senderName,
|
||||
connectionRequestId: updated.id,
|
||||
});
|
||||
|
||||
return updated;
|
||||
}
|
||||
}
|
||||
|
||||
// Create new connection request
|
||||
return this.prisma.connectionRequest.create({
|
||||
const request = await this.prisma.connectionRequest.create({
|
||||
data: {
|
||||
userId,
|
||||
agentProfileId: dto.agentProfileId,
|
||||
@@ -105,8 +126,30 @@ export class ConnectionRequestsService {
|
||||
avatar: true,
|
||||
},
|
||||
},
|
||||
user: {
|
||||
select: {
|
||||
userProfile: {
|
||||
select: { firstName: true, lastName: true },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
// Emit push notification event for the agent
|
||||
const senderName = request.user?.userProfile
|
||||
? `${request.user.userProfile.firstName || ''} ${request.user.userProfile.lastName || ''}`.trim()
|
||||
: 'A user';
|
||||
|
||||
this.eventEmitter.emit('notification.connection_request', {
|
||||
recipientUserId: agentProfile.userId,
|
||||
senderName,
|
||||
connectionRequestId: request.id,
|
||||
});
|
||||
|
||||
// Remove user data from response (not needed by caller)
|
||||
const { user: _user, ...result } = request;
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user