Merge branch 'milestone/ff-admin-unit' into unit/#102-base-management

# Conflicts:
#	src/data-source.ts
This commit is contained in:
Julian Krauser 2025-06-08 07:55:20 +02:00
commit e056db053b
68 changed files with 1807 additions and 1521 deletions

View file

@ -2,12 +2,14 @@ import express, { Request, Response } from "express";
import {
addAwardToMember,
addCommunicationToMember,
addEducationToMember,
addExecutivePositionToMember,
addMembershipToMember,
addQualificationToMember,
createMember,
deleteAwardOfMember,
deleteCommunicationOfMember,
deleteEducationsOfMember,
deleteExecutivePositionOfMember,
deleteMemberById,
deleteMembershipOfMember,
@ -17,6 +19,8 @@ import {
getAwardsByMember,
getCommunicationByMemberAndRecord,
getCommunicationsByMember,
getEducationByMemberAndRecord,
getEducationsByMember,
getExecutivePositionByMemberAndRecord,
getExecutivePositionsByMember,
getMemberById,
@ -26,11 +30,13 @@ import {
getMembershipByMemberAndRecord,
getMembershipsByMember,
getMembershipStatisticsById,
getMembershipTotalStatisticsById,
getMemberStatisticsById,
getQualificationByMemberAndRecord,
getQualificationsByMember,
updateAwardOfMember,
updateCommunicationOfMember,
updateEducationOfMember,
updateExecutivePositionOfMember,
updateMemberById,
updateMembershipOfMember,
@ -72,6 +78,10 @@ router.get("/:memberId/memberships/statistics", async (req: Request, res: Respon
await getMembershipStatisticsById(req, res);
});
router.get("/:memberId/memberships/totalstatistics", async (req: Request, res: Response) => {
await getMembershipTotalStatisticsById(req, res);
});
router.get("/:memberId/membership/:id", async (req: Request, res: Response) => {
await getMembershipByMemberAndRecord(req, res);
});
@ -92,6 +102,14 @@ router.get("/:memberId/qualification/:id", async (req: Request, res: Response) =
await getQualificationByMemberAndRecord(req, res);
});
router.get("/:memberId/educations", async (req: Request, res: Response) => {
await getEducationsByMember(req, res);
});
router.get("/:memberId/education/:id", async (req: Request, res: Response) => {
await getEducationByMemberAndRecord(req, res);
});
router.get("/:memberId/positions", async (req: Request, res: Response) => {
await getExecutivePositionsByMember(req, res);
});
@ -140,6 +158,14 @@ router.post(
}
);
router.post(
"/:memberId/education",
PermissionHelper.passCheckMiddleware("create", "club", "member"),
async (req: Request, res: Response) => {
await addEducationToMember(req, res);
}
);
router.post(
"/:memberId/position",
PermissionHelper.passCheckMiddleware("create", "club", "member"),
@ -188,6 +214,14 @@ router.patch(
}
);
router.patch(
"/:memberId/education/:recordId",
PermissionHelper.passCheckMiddleware("update", "club", "member"),
async (req: Request, res: Response) => {
await updateEducationOfMember(req, res);
}
);
router.patch(
"/:memberId/position/:recordId",
PermissionHelper.passCheckMiddleware("update", "club", "member"),
@ -236,6 +270,14 @@ router.delete(
}
);
router.delete(
"/:memberId/education/:recordId",
PermissionHelper.passCheckMiddleware("delete", "club", "member"),
async (req: Request, res: Response) => {
await deleteEducationsOfMember(req, res);
}
);
router.delete(
"/:memberId/position/:recordId",
PermissionHelper.passCheckMiddleware("delete", "club", "member"),

View file

@ -0,0 +1,45 @@
import express, { Request, Response } from "express";
import {
createEducation,
deleteEducation,
getAllEducations,
getEducationById,
updateEducation,
} from "../../../controller/admin/configuration/educationController";
import PermissionHelper from "../../../helpers/permissionHelper";
var router = express.Router({ mergeParams: true });
router.get("/", async (req: Request, res: Response) => {
await getAllEducations(req, res);
});
router.get("/:id", async (req: Request, res: Response) => {
await getEducationById(req, res);
});
router.post(
"/",
PermissionHelper.passCheckMiddleware("create", "configuration", "education"),
async (req: Request, res: Response) => {
await createEducation(req, res);
}
);
router.patch(
"/:id",
PermissionHelper.passCheckMiddleware("update", "configuration", "education"),
async (req: Request, res: Response) => {
await updateEducation(req, res);
}
);
router.delete(
"/:id",
PermissionHelper.passCheckMiddleware("delete", "configuration", "education"),
async (req: Request, res: Response) => {
await deleteEducation(req, res);
}
);
export default router;

View file

@ -8,6 +8,7 @@ import communicationType from "./configuration/communicationType";
import executivePosition from "./configuration/executivePosition";
import membershipStatus from "./configuration/membershipStatus";
import qualification from "./configuration/qualification";
import education from "./configuration/education";
import salutation from "./configuration/salutation";
import calendarType from "./configuration/calendarType";
import queryStore from "./configuration/queryStore";
@ -85,6 +86,14 @@ router.use(
]),
qualification
);
router.use(
"/education",
PermissionHelper.passCheckSomeMiddleware([
{ requiredPermission: "read", section: "configuration", module: "education" },
{ requiredPermission: "read", section: "club", module: "member" },
]),
education
);
router.use(
"/salutation",
PermissionHelper.passCheckSomeMiddleware([