diff --git a/src/groups/dao/groups.dao.ts b/src/groups/dao/groups.dao.ts index 52e31cc1ce8fa5428157a2d8cf4ad1f8a68052a3..d8463779759d6c51b2cc7a4b85313792b02c1fd5 100644 --- a/src/groups/dao/groups.dao.ts +++ b/src/groups/dao/groups.dao.ts @@ -161,6 +161,16 @@ export class GroupsDao { resolve(); }); }); + + findByStudentIdAndRemove = (id: string): Promise<Group | void> => + new Promise((resolve, reject) => { + this._groupModel.updateMany({ students: id }, { $pull: { students: id } }, (err) => { + if (err) { + return reject(err.message); + } + resolve(); + }); + }); findByParentAndRemove = (parent: string): Promise<Group | void> => new Promise((resolve, reject) => { diff --git a/src/groups/groups.module.ts b/src/groups/groups.module.ts index 3614a8348c3d1d6cae399c3279c4bfb7f581ebfc..6a975ff922352ee1c060a2704fa3b75b8e863f97 100644 --- a/src/groups/groups.module.ts +++ b/src/groups/groups.module.ts @@ -1,5 +1,6 @@ import { Module, Logger } from '@nestjs/common'; import { MongooseModule } from '@nestjs/mongoose'; +import { InternshipsModule } from 'src/internships/internships.module'; import { PeopleDao } from 'src/people/dao/people.dao'; import { PeopleService } from 'src/people/people.service'; import { People, PeopleSchema } from 'src/people/schemas/people.schema'; @@ -12,8 +13,11 @@ import { Group, GroupSchema } from './schemas/group.schema'; imports: [ MongooseModule.forFeature([{ name: Group.name, schema: GroupSchema }]), MongooseModule.forFeature([{ name: People.name, schema: PeopleSchema }]), + InternshipsModule, + GroupsModule ], controllers: [GroupsController], providers: [GroupsService, GroupsDao, Logger, PeopleService, PeopleDao], + exports: [GroupsService], }) export class GroupsModule {} diff --git a/src/groups/groups.service.ts b/src/groups/groups.service.ts index 59b939eb984677467a322216b9e21a2182a053c9..608e968e32eaad7384901003b05a6f6bd4383bc6 100644 --- a/src/groups/groups.service.ts +++ b/src/groups/groups.service.ts @@ -45,4 +45,8 @@ export class GroupsService { } }); } + + deleteStudentFromGroups = (id: string): Promise<GroupEntity | void> => + this._groupsDao.findByStudentIdAndRemove(id); + } diff --git a/src/internships/internships.module.ts b/src/internships/internships.module.ts index 50a8cd3c8c49446f6fc31ba9563e30912593ef72..1d06942b463a61006300514d373d16897600c0a8 100644 --- a/src/internships/internships.module.ts +++ b/src/internships/internships.module.ts @@ -1,17 +1,18 @@ -import { Module, Logger } from '@nestjs/common'; -import { MongooseModule } from '@nestjs/mongoose'; -import { InternshipDao } from './dao/internships.dao'; -import { InternshipsController } from './internships.controller'; -import { InternshipService } from './internships.service'; -import { Internship, InternshipSchema } from './schemas/internship.schema'; - -@Module({ - imports: [ - MongooseModule.forFeature([ - { name: Internship.name, schema: InternshipSchema }, - ]), - ], - controllers: [InternshipsController], - providers: [InternshipService, InternshipDao, Logger], -}) -export class InternshipsModule {} +import { Module, Logger } from '@nestjs/common'; +import { MongooseModule } from '@nestjs/mongoose'; +import { InternshipDao } from './dao/internships.dao'; +import { InternshipsController } from './internships.controller'; +import { InternshipService } from './internships.service'; +import { Internship, InternshipSchema } from './schemas/internship.schema'; + +@Module({ + imports: [ + MongooseModule.forFeature([ + { name: Internship.name, schema: InternshipSchema }, + ]), + ], + controllers: [InternshipsController], + providers: [InternshipService, InternshipDao, Logger], + exports: [InternshipService], +}) +export class InternshipsModule {} diff --git a/src/people/dao/people.dao.ts b/src/people/dao/people.dao.ts index b12089f02ebbaaae90163e855923bac595353e0c..3c556ac5764c5e94a0d3ece13c76bb50f22092c3 100644 --- a/src/people/dao/people.dao.ts +++ b/src/people/dao/people.dao.ts @@ -14,6 +14,8 @@ import config from 'src/config'; import * as bcrypt from 'bcrypt'; import { PeopleEntity } from '../entities/people.entity'; import { CONFLICT } from 'src/shared/HttpError'; +import { InternshipService } from 'src/internships/internships.service'; +import { GroupsService } from 'src/groups/groups.service'; @Injectable() export class PeopleDao { @@ -25,6 +27,8 @@ export class PeopleDao { constructor( @InjectModel(People.name) private readonly _peopleModel: Model<People>, + private _internshipService: InternshipService, + private _groupService: GroupsService ) {} login = (email: string, password: string): Promise<People | void> => @@ -141,8 +145,10 @@ export class PeopleDao { findByIdAndRemove = (id: string): Promise<People | void> => new Promise((resolve, reject) => { - this._peopleModel.deleteOne({ id: id }, {}, (err) => { + this._peopleModel.deleteOne({ _id: id }, {}, (err) => { if (err) reject(err.message); + this._internshipService.delete(id); + this._groupService.deleteStudentFromGroups(id); resolve(); }); }); diff --git a/src/people/people.module.ts b/src/people/people.module.ts index 78b11e07eadc091633ad3dc99eb8d305de564742..d9686bfe4a9f6de5a7f6e7f682667209f4c7e642 100644 --- a/src/people/people.module.ts +++ b/src/people/people.module.ts @@ -1,16 +1,24 @@ -import { Logger, Module } from '@nestjs/common'; -import { MongooseModule } from '@nestjs/mongoose'; -import { PeopleDao } from './dao/people.dao'; -import { PeopleController } from './people.controller'; -import { PeopleService } from './people.service'; -import { People, PeopleSchema } from './schemas/people.schema'; - -@Module({ - imports: [ - MongooseModule.forFeature([{ name: People.name, schema: PeopleSchema }]), - ], - controllers: [PeopleController], - providers: [PeopleService, PeopleDao, Logger], - exports: [PeopleService], -}) -export class PeopleModule {} +import { Logger, Module } from '@nestjs/common'; +import { MongooseModule } from '@nestjs/mongoose'; +import { GroupsDao } from 'src/groups/dao/groups.dao'; +import { GroupsService } from 'src/groups/groups.service'; +import { Group, GroupSchema } from 'src/groups/schemas/group.schema'; +import { InternshipDao } from 'src/internships/dao/internships.dao'; +import { InternshipService } from 'src/internships/internships.service'; +import { Internship, InternshipSchema } from 'src/internships/schemas/internship.schema'; +import { PeopleDao } from './dao/people.dao'; +import { PeopleController } from './people.controller'; +import { PeopleService } from './people.service'; +import { People, PeopleSchema } from './schemas/people.schema'; + +@Module({ + imports: [ + MongooseModule.forFeature([{ name: People.name, schema: PeopleSchema }]), + MongooseModule.forFeature([{ name: Internship.name, schema: InternshipSchema }]), + MongooseModule.forFeature([{ name: Group.name, schema: GroupSchema }]), + ], + controllers: [PeopleController], + providers: [PeopleService, PeopleDao, Logger, InternshipService, GroupsService, InternshipDao, GroupsDao], + exports: [PeopleService], +}) +export class PeopleModule {}