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