Skip to content

Commit

Permalink
[Feat] 알림 미리보기 #1388
Browse files Browse the repository at this point in the history
  • Loading branch information
Sangmin Park authored and Sangmin Park committed Apr 15, 2024
1 parent 50c2c68 commit 42c09f4
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 15 deletions.
7 changes: 0 additions & 7 deletions components/admin/recruitments/RecruitmentsHistoryList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -146,13 +146,6 @@ function RecruitmentsHistoryList({
const todaydate = new Date(todaystring);
const endDate = new Date(recruit.endDate);
const startDate = new Date(recruit.startDate);
console.log(
startDate,
endDate,
todaystring,
startDate < todaydate,
endDate > todaydate
);
return (
<div>
{recruit.isFinish
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ function NotificationResults({ recruitId }: { recruitId: number }) {
const [currentPage, setCurrentPage] = useState<number>(1);
const [alignment, setAlignment] = useState<Record<number, string | null>>({});
const setSnackBar = useSetRecoilState(toastState);
const [startDate, setStartDate] = useState<Date | null>(new Date());
const [startDate, setStartDate] = useState<Record<number, Date | null>>({});
const setModal = useSetRecoilState(modalState);

const onEditTemplate = () => {
Expand Down Expand Up @@ -98,6 +98,10 @@ function NotificationResults({ recruitId }: { recruitId: number }) {
setAlignment((prev) => ({ ...prev, [id]: newAlignment }));
};

const handleDate = (newDate: Date | null, id: number) => {
setStartDate((prev) => ({ ...prev, [id]: newDate }));
};

const getRecruitNotiHandler = useCallback(async () => {
try {
// const res = await instanceInManage.get(
Expand Down Expand Up @@ -153,8 +157,12 @@ function NotificationResults({ recruitId }: { recruitId: number }) {
return (
<div className={styles.interview}>
<DatePicker
selected={startDate}
onChange={(date) => setStartDate(date)}
selected={startDate[recruit.applicationId]}
showTimeSelect
timeFormat='HH:mm'
dateFormat='yyyy-MM-dd HH:mm'
timeIntervals={60}
onChange={(newDate) => handleDate(newDate, recruit.applicationId)}
/>
&nbsp;
<Button
Expand All @@ -164,7 +172,7 @@ function NotificationResults({ recruitId }: { recruitId: number }) {
recruitId,
recruit.applicationId,
'PROGRESS_INTERVIEW',
startDate
startDate[recruit.applicationId]
);
}}
>
Expand All @@ -177,7 +185,7 @@ function NotificationResults({ recruitId }: { recruitId: number }) {
recruitId,
recruit.applicationId,
'FAIL',
startDate
startDate[recruit.applicationId]
);
}}
>
Expand Down
54 changes: 52 additions & 2 deletions components/modal/admin/AdminRecruitResultModal.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
import React, { useState, useEffect } from 'react';
import { useSetRecoilState } from 'recoil';
import { instanceInManage } from 'utils/axios';
import { instanceInManage, instance } from 'utils/axios';
import { dateToStringShort } from 'utils/handleTime';
import { toastState } from 'utils/recoil/toast';
import styles from 'styles/admin/modal/AdminRecruitMessageTemplateModal.module.scss';

interface notiMessageType {
messageId: number;
messageType: string;
isUse: boolean;
message: string;
}

function AdminRecruitResultModal({
recruitId,
applicationId,
Expand All @@ -14,6 +23,9 @@ function AdminRecruitResultModal({
status: 'PROGRESS_INTERVIEW' | 'FAIL' | 'PASS';
interviewDate: Date | null;
}) {
const [passMessage, setPassMessage] = useState<notiMessageType>();
const [failMessage, setFailMessage] = useState<notiMessageType>();
const [interviewMessage, setInterviewMessage] = useState<string>();
const setSnackbar = useSetRecoilState(toastState);
const sendInterviewResult = async () => {
try {
Expand Down Expand Up @@ -65,16 +77,54 @@ function AdminRecruitResultModal({
});
}
};

const messagesResult = async () => {
try {
const res = await instance.get(`/admin/recruitments/result/message`);
res.data.messages?.map((message: notiMessageType) => {
if (message.messageType === 'INTERVIEW' && message.isUse) {
if (!interviewDate) return;
const interviewDateMessage = message.message.replace(
'${선택날짜}',
dateToStringShort(interviewDate)
);
if (!interviewDateMessage) return;
setInterviewMessage(interviewDateMessage);
} else if (message.messageType === 'PASS' && message.isUse) {
setPassMessage(message);
} else if (message.messageType === 'FAIL' && message.isUse) {
setFailMessage(message);
}
});
} catch (e: any) {
setSnackbar({
toastName: 'get notification',
severity: 'error',
message: `API 요청에 문제가 발생했습니다.`,
clicked: true,
});
}
};

useEffect(() => {
messagesResult();
}, []);

if (status === 'PROGRESS_INTERVIEW' && interviewDate) {
return (
<div className={styles.container}>
<div>{interviewMessage}</div>
<button onClick={sendInterviewResult}>면접 결과 등록</button>
</div>
);
}

return (
<div className={styles.container}>
{status === 'PASS' ? (
<div>{passMessage?.message}</div>
) : (
<div>{failMessage?.message}</div>
)}
<button onClick={sendFinalResult}>최종 결과 등록</button>
</div>
);
Expand Down
1 change: 0 additions & 1 deletion hooks/recruitments/useRecruitmentUserFilter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ const useRecruitmentUserFilter = (recruitId: number) => {
}
);
// FIXME: 페이지네이션 x (페이지네이션이 없는 api?) 임시로 1페이지로 고정
console.log(res.data);
setRecruitUserData({
applicationResults: res.data.applicationResults,
totalPage: 1,
Expand Down

0 comments on commit 42c09f4

Please sign in to comment.