diff --git a/serverless/functions/user.yml b/serverless/functions/user.yml index 93377eb..f7495f7 100644 --- a/serverless/functions/user.yml +++ b/serverless/functions/user.yml @@ -256,7 +256,7 @@ removeConnectionDetails: events: - httpApi: path: /user/connections/remove-connection-details - method: post + method: delete getAllConnectionOfUser: handler: src/modules/user/handlers/connections/getAllConnectionDetailsOfUser.handler diff --git a/src/modules/user/dto/addSchoolCompanyDetail.dto.ts b/src/modules/user/dto/addSchoolCompanyDetail.dto.ts index 97592e6..f0506d7 100644 --- a/src/modules/user/dto/addSchoolCompanyDetail.dto.ts +++ b/src/modules/user/dto/addSchoolCompanyDetail.dto.ts @@ -2,10 +2,12 @@ export class AddSchoolCompanyDetailDTO { schoolCompanyName: string; isSchool: boolean; cityXid: number; + userId: number; - constructor(schoolCompanyName: string, isSchool: boolean, cityXid: number) { + constructor(schoolCompanyName: string, isSchool: boolean, cityXid: number, userId: number) { this.schoolCompanyName = schoolCompanyName; this.isSchool = isSchool; this.cityXid = cityXid; + this.userId = userId; } } diff --git a/src/modules/user/handlers/connections/addSchoolCompanyDetail.ts b/src/modules/user/handlers/connections/addSchoolCompanyDetail.ts index f5287c9..3635e5f 100644 --- a/src/modules/user/handlers/connections/addSchoolCompanyDetail.ts +++ b/src/modules/user/handlers/connections/addSchoolCompanyDetail.ts @@ -86,6 +86,7 @@ export const handler = safeHandler( schoolCompanyName.trim().toLowerCase(), isSchool, cityXid, + userId ); // Call service to add or find school/company @@ -99,11 +100,8 @@ export const handler = safeHandler( }, body: JSON.stringify({ success: true, - message: result.isNew - ? `${isSchool ? 'School' : 'Company'} created successfully` - : `${isSchool ? 'School' : 'Company'} already exists, returning existing record`, - data: result.data, - isNew: result.isNew, + message: 'Connection added successfully', + data: null, }), }; }, diff --git a/src/modules/user/services/user.service.ts b/src/modules/user/services/user.service.ts index 21b96c2..60d32ae 100644 --- a/src/modules/user/services/user.service.ts +++ b/src/modules/user/services/user.service.ts @@ -1943,7 +1943,7 @@ export class UserService { async addOrFindSchoolCompanyDetail(dto: AddSchoolCompanyDetailDTO) { - const { schoolCompanyName, isSchool, cityXid } = dto; + const { schoolCompanyName, isSchool, cityXid, userId } = dto; const normalizedName = normalizeName(schoolCompanyName); @@ -1961,7 +1961,7 @@ export class UserService { } // ✅ 2. Check existing (lowercase match) - const existing = await this.prisma.schoolCompany.findFirst({ + let schoolCompany = await this.prisma.schoolCompany.findFirst({ where: { schoolCompanyName: normalizedName, cityXid, @@ -1971,28 +1971,47 @@ export class UserService { }, }); - if (existing) { - return { - isNew: false, - data: existing, - message: "Already exists", - }; + let isNewSchoolCompany = false; + + if (!schoolCompany) { + schoolCompany = await this.prisma.schoolCompany.create({ + data: { + schoolCompanyName: normalizedName, + isSchool, + cityXid, + }, + }); + + isNewSchoolCompany = true; } - // ✅ 3. Create new (store lowercase) - const created = await this.prisma.schoolCompany.create({ - data: { - schoolCompanyName: normalizedName, - isSchool, - cityXid, + // 4️⃣ Check if user already connected + const existingConnection = await this.prisma.connectDetails.findFirst({ + where: { + userXid: userId, + schoolCompanyXid: schoolCompany.id, + isActive: true, }, }); - return { - isNew: true, - data: created, - message: "Created successfully", - }; + if (existingConnection) { + return { + isNew: false, + data: schoolCompany, + message: "Already connected", + }; + } + + // 5️⃣ Create connectDetails safely + await this.prisma.connectDetails.create({ + data: { + userXid: userId, + schoolCompanyXid: schoolCompany.id, + isActive: true, + }, + }); + + return true; } async getAllActivitiesFromConnectionsUserInterests(