init
This commit is contained in:
@@ -0,0 +1,160 @@
|
||||
/**
|
||||
* 알림 생성 예제 유틸리티
|
||||
* 다양한 상황에서 알림을 생성하는 예제 함수들을 제공합니다.
|
||||
*/
|
||||
|
||||
const notificationController = require('../controllers/notificationController');
|
||||
|
||||
/**
|
||||
* 새 회원 가입 알림 생성
|
||||
* @param {Object} clubOwner 클럽 소유자 정보
|
||||
* @param {Object} newMember 새로 가입한 회원 정보
|
||||
*/
|
||||
exports.newMemberJoinNotification = async (clubOwner, newMember) => {
|
||||
await notificationController.createSystemNotification(
|
||||
clubOwner.id,
|
||||
'새 회원 가입',
|
||||
`${newMember.name}님이 클럽에 가입했습니다.`,
|
||||
{
|
||||
icon: 'pi pi-users',
|
||||
type: 'success',
|
||||
link: `/club/members/${newMember.id}`
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* 모임 생성 알림 생성
|
||||
* @param {Array} members 알림을 받을 회원 목록
|
||||
* @param {Object} meeting 생성된 모임 정보
|
||||
*/
|
||||
exports.newMeetingNotification = async (members, meeting) => {
|
||||
for (const member of members) {
|
||||
await notificationController.createSystemNotification(
|
||||
member.id,
|
||||
'새 모임 생성',
|
||||
`새로운 모임 "${meeting.title}"이(가) 생성되었습니다. (${meeting.date})`,
|
||||
{
|
||||
icon: 'pi pi-calendar',
|
||||
type: 'info',
|
||||
link: `/meetings/${meeting.id}`
|
||||
}
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 점수 등록 알림 생성
|
||||
* @param {Object} member 점수를 등록한 회원
|
||||
* @param {Object} score 등록된 점수 정보
|
||||
*/
|
||||
exports.scoreRegisteredNotification = async (member, score) => {
|
||||
await notificationController.createSystemNotification(
|
||||
member.id,
|
||||
'점수 등록 완료',
|
||||
`게임 점수 ${score.score}점이 등록되었습니다.`,
|
||||
{
|
||||
icon: 'pi pi-chart-bar',
|
||||
type: 'success',
|
||||
link: `/scores/${score.id}`
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* 구독 만료 예정 알림 생성
|
||||
* @param {Object} clubOwner 클럽 소유자 정보
|
||||
* @param {Object} subscription 구독 정보
|
||||
* @param {Number} daysLeft 만료까지 남은 일수
|
||||
*/
|
||||
exports.subscriptionExpiryNotification = async (clubOwner, subscription, daysLeft) => {
|
||||
await notificationController.createSystemNotification(
|
||||
clubOwner.id,
|
||||
'구독 만료 예정',
|
||||
`클럽 구독이 ${daysLeft}일 후에 만료됩니다. 갱신하시려면 결제를 진행해주세요.`,
|
||||
{
|
||||
icon: 'pi pi-clock',
|
||||
type: 'warning',
|
||||
link: '/subscription'
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* 시스템 유지보수 알림 생성
|
||||
* @param {Array} users 알림을 받을 사용자 목록
|
||||
* @param {String} maintenanceDate 유지보수 일자
|
||||
* @param {String} maintenanceTime 유지보수 시간
|
||||
*/
|
||||
exports.systemMaintenanceNotification = async (users, maintenanceDate, maintenanceTime) => {
|
||||
for (const user of users) {
|
||||
await notificationController.createSystemNotification(
|
||||
user.id,
|
||||
'시스템 유지보수 안내',
|
||||
`${maintenanceDate} ${maintenanceTime}에 시스템 유지보수가 예정되어 있습니다. 서비스 이용에 참고해주세요.`,
|
||||
{
|
||||
icon: 'pi pi-info-circle',
|
||||
type: 'info'
|
||||
}
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 결제 완료 알림 생성
|
||||
* @param {Object} user 결제한 사용자 정보
|
||||
* @param {Object} payment 결제 정보
|
||||
*/
|
||||
exports.paymentCompletedNotification = async (user, payment) => {
|
||||
await notificationController.createSystemNotification(
|
||||
user.id,
|
||||
'결제 완료',
|
||||
`${payment.amount.toLocaleString()}원 결제가 완료되었습니다.`,
|
||||
{
|
||||
icon: 'pi pi-credit-card',
|
||||
type: 'success',
|
||||
link: '/payments/history'
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* 대회 일정 알림 생성
|
||||
* @param {Array} participants 대회 참가자 목록
|
||||
* @param {Object} tournament 대회 정보
|
||||
*/
|
||||
exports.tournamentReminderNotification = async (participants, tournament) => {
|
||||
for (const participant of participants) {
|
||||
await notificationController.createSystemNotification(
|
||||
participant.id,
|
||||
'대회 일정 안내',
|
||||
`내일 "${tournament.title}" 대회가 ${tournament.location}에서 개최됩니다.`,
|
||||
{
|
||||
icon: 'pi pi-flag',
|
||||
type: 'warning',
|
||||
link: `/tournaments/${tournament.id}`
|
||||
}
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 오류 발생 알림 생성 (관리자용)
|
||||
* @param {Array} admins 알림을 받을 관리자 목록
|
||||
* @param {String} errorMessage 오류 메시지
|
||||
* @param {String} errorLocation 오류 발생 위치
|
||||
*/
|
||||
exports.systemErrorNotification = async (admins, errorMessage, errorLocation) => {
|
||||
for (const admin of admins) {
|
||||
await notificationController.createSystemNotification(
|
||||
admin.id,
|
||||
'시스템 오류 발생',
|
||||
`위치: ${errorLocation}\n오류: ${errorMessage}`,
|
||||
{
|
||||
icon: 'pi pi-exclamation-triangle',
|
||||
type: 'error',
|
||||
link: '/admin/logs'
|
||||
}
|
||||
);
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user