From 1af47fd0e8bdba0e5312f7fec21fd9d9601e699e Mon Sep 17 00:00:00 2001 From: Nabilsenko <96882497+Nabilsenko@users.noreply.github.com> Date: Tue, 7 Mar 2023 10:42:52 +0100 Subject: [PATCH] feat: delete student from groups, and delete its files --- src/groups/dao/groups.dao.ts | 10 ++++++++++ src/groups/groups.service.ts | 4 ++++ src/people/dao/people.dao.ts | 8 +++++++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/groups/dao/groups.dao.ts b/src/groups/dao/groups.dao.ts index 52e31cc..d846377 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 59b939e..608e968 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 bb03a1d..9a15964 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(); }); }); -- GitLab