Skip to content
Snippets Groups Projects

fix: added and endpoint to post/delete people in the inner groups of a group

Merged GUVEN Kemal requested to merge groups-nested-crud into master
4 files
+ 86
7
Compare changes
  • Side-by-side
  • Inline
Files
4
@@ -2,12 +2,14 @@ import {
@@ -2,12 +2,14 @@ import {
Injectable,
Injectable,
NotFoundException,
NotFoundException,
InternalServerErrorException,
InternalServerErrorException,
 
BadRequestException,
} from '@nestjs/common';
} from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { InjectModel } from '@nestjs/mongoose';
import { Model } from 'mongoose';
import { Model } from 'mongoose';
import { CreateGroupDto } from '../dto/create-group.dto';
import { CreateGroupDto } from '../dto/create-group.dto';
import { UpdateGroupDto } from '../dto/update-group.dto';
import { UpdateGroupDto } from '../dto/update-group.dto';
import { Group } from '../schemas/group.schema';
import { Group } from '../schemas/group.schema';
 
import * as Roles from 'src/shared/Roles';
@Injectable()
@Injectable()
export class GroupsDao {
export class GroupsDao {
@@ -62,6 +64,49 @@ export class GroupsDao {
@@ -62,6 +64,49 @@ export class GroupsDao {
);
);
});
});
 
findByIdAndUpdateRole = (
 
id: string,
 
role: string,
 
personId: string,
 
action: string,
 
): Promise<Group | void> =>
 
new Promise((resolve, reject) => {
 
let query = {};
 
let queryInner = {};
 
switch (role) {
 
case Roles.ROLE_RESPONSIBLE:
 
queryInner = { responsibles: personId };
 
break;
 
case Roles.ROLE_SECRETARY:
 
queryInner = { secretaries: personId };
 
break;
 
case Roles.ROLE_STUDENT:
 
queryInner = { students: personId };
 
break;
 
default:
 
reject(new BadRequestException('Bad role'));
 
}
 
switch (action) {
 
case 'post':
 
query = { $push: queryInner };
 
break;
 
case 'delete':
 
query = { $pull: queryInner };
 
break;
 
default:
 
reject(new BadRequestException('Bad action'));
 
}
 
this._groupModel.findByIdAndUpdate(
 
id,
 
query,
 
{ new: true },
 
(err, value) => {
 
if (err) reject(err.message);
 
resolve(value);
 
},
 
);
 
});
 
findByIdAndRemove = (id: string): Promise<Group | void> =>
findByIdAndRemove = (id: string): Promise<Group | void> =>
new Promise((resolve, reject) => {
new Promise((resolve, reject) => {
this._groupModel.findByIdAndDelete(id, {}, (err) => {
this._groupModel.findByIdAndDelete(id, {}, (err) => {
@@ -72,7 +117,7 @@ export class GroupsDao {
@@ -72,7 +117,7 @@ export class GroupsDao {
findByParentAndRemove = (parent: string): Promise<Group | void> =>
findByParentAndRemove = (parent: string): Promise<Group | void> =>
new Promise((resolve, reject) => {
new Promise((resolve, reject) => {
this._groupModel.remove({parent : {$regex : parent}}, (err) => {
this._groupModel.remove({ parent: { $regex: parent } }, (err) => {
if (err) reject(err.message);
if (err) reject(err.message);
resolve();
resolve();
});
});
Loading