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.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/people/dao/people.dao.ts b/src/people/dao/people.dao.ts index bb03a1deee6989170a1cfd947e8a83900ca97cec..9a15964cd34347a3f92e41852a8a663c1fb5712e 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> => @@ -132,8 +136,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(); }); });