Skip to content

Commit 3b36d17

Browse files
committed
Fix : 교육 페이지 추가 생성 시 알림 등록
1 parent 7a61a9e commit 3b36d17

File tree

2 files changed

+38
-1
lines changed

2 files changed

+38
-1
lines changed

src/controllers/stores-edu.controller.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ export const createEducation = async (req: Request, res: Response) => {
4343
if (result.numInsertedOrUpdatedRows === BigInt(0)) {
4444
throw new Error("Failed to create education");
4545
}
46+
await services.createEduNoti(req.params.storeId);
4647

4748
res.status(201).json({ message: "강의 자료가 생성되었습니다." });
4849
};
@@ -57,7 +58,7 @@ export const updateEducation = async (req: Request, res: Response) => {
5758
if (result.numUpdatedRows === BigInt(0)) {
5859
throw new HttpException(404, "강의 자료가 존재하지 않습니다.");
5960
}
60-
61+
await services.updateEduNoti(req.params.storeId);
6162
res.status(200).json({ message: "강의 자료가 수정되었습니다." });
6263
};
6364

src/services/stores-edu.service.ts

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import { nanoid } from "nanoid";
44
import { db } from "@/db";
55
import { CreateEducationPayload } from "@/interfaces/edu.interface";
66

7+
import { createNotification, getStoreNameById } from "./notifications.service";
8+
79
export const isStoreMember = async (storeId: string, userId: string) => {
810
return db
911
.selectFrom("storeMember")
@@ -51,3 +53,37 @@ export const getEducationById = async (storeId: string, eduId: string) => {
5153
.where("storeId", "=", storeId)
5254
.executeTakeFirst();
5355
};
56+
57+
const getStoreMembers = async (storeId: string) => {
58+
return db.selectFrom("storeMember").select("userId").where("storeId", "=", storeId).execute();
59+
};
60+
61+
export const createEduNoti = async (storeId: string) => {
62+
const members = await getStoreMembers(storeId);
63+
const notiTitle = await getStoreNameById(storeId);
64+
const owner = await db.selectFrom("store").select("ownerId").where("id", "=", storeId).executeTakeFirst();
65+
for (let i = 0; i < members.length; i++) {
66+
if (members[i].userId == owner?.ownerId) continue;
67+
await createNotification({
68+
content: `게시물이 생성 됐습니다.`,
69+
target: "/edupost/staff",
70+
title: notiTitle ?? "알 수 없는 가게",
71+
userId: members[i].userId,
72+
});
73+
}
74+
};
75+
76+
export const updateEduNoti = async (storeId: string) => {
77+
const members = await getStoreMembers(storeId);
78+
const title = await getStoreNameById(storeId);
79+
const owner = await db.selectFrom("store").select("ownerId").where("id", "=", storeId).executeTakeFirst();
80+
for (let i = 0; i < members.length; i++) {
81+
if (members[i].userId == owner?.ownerId) continue;
82+
await createNotification({
83+
content: `게시물이 수정 됐습니다.`,
84+
target: `/edupost/staff`,
85+
title: title ?? "알 수 없는 가게",
86+
userId: members[i].userId,
87+
});
88+
}
89+
};

0 commit comments

Comments
 (0)