diff --git a/src/controllers/GroupController.ts b/src/controllers/GroupController.ts index 93d11d7..04dd92c 100644 --- a/src/controllers/GroupController.ts +++ b/src/controllers/GroupController.ts @@ -3,6 +3,7 @@ import express from "express"; import { MembershipBaseController } from "./MembershipBaseController" import { Group } from "../models" import { Permissions } from '../helpers/Permissions' +import { ArrayHelper } from "@churchapps/apihelper"; @controller("/groups") export class GroupController extends MembershipBaseController { @@ -62,7 +63,18 @@ export class GroupController extends MembershipBaseController { public async delete(@requestParam("id") id: string, req: express.Request<{}, {}, null>, res: express.Response): Promise { return this.actionWrapper(req, res, async (au) => { if (!au.checkAccess(Permissions.groups.edit)) return this.json({}, 401); - else await this.repositories.group.delete(au.churchId, id); + else { + const group: Group = await this.repositories.group.load(au.churchId, id); + if (group.tags.indexOf("ministry") > -1) { + const AllTeams = await this.repositories.group.loadByTag(au.churchId, "team"); + const ministryTeams = ArrayHelper.getAll(AllTeams, "categoryName", id); + const ids = ArrayHelper.getIds(ministryTeams, "id"); + await this.repositories.group.delete(au.churchId, id); + await this.repositories.group.deleteByIds(au.churchId, ids); + } else { + await this.repositories.group.delete(au.churchId, id); + } + } }); } diff --git a/src/repositories/GroupRepository.ts b/src/repositories/GroupRepository.ts index 556bd8c..1266c03 100644 --- a/src/repositories/GroupRepository.ts +++ b/src/repositories/GroupRepository.ts @@ -29,6 +29,10 @@ export class GroupRepository { return DB.query("UPDATE `groups` SET removed=1 WHERE id=? AND churchId=?;", [id, churchId]); } + public deleteByIds(churchId: string, ids: string[]) { + return DB.query("UPDATE `groups` SET removed=1 WHERE id IN (?) AND churchId=?;", [ids, churchId]); + } + public load(churchId: string, id: string) { return DB.queryOne("SELECT * FROM `groups` WHERE id=? AND churchId=? AND removed=0;", [id, churchId]); }