diff --git a/src/components/recruit/vote.js b/src/components/recruit/vote.js index ea9ddd83780f4062e668e0aff8ef20305b81d37a..1d0c8fba042416df40bf83fe23adc5309dd3f220 100644 --- a/src/components/recruit/vote.js +++ b/src/components/recruit/vote.js @@ -2,19 +2,23 @@ import React, { useState, useEffect, useContext } from "react"; import voteStyles from './vote.module.css' import { AuthContext } from "../../App"; -function VoteItem({ data, setCheckVote }){ +function VoteItem({ data, setCheckVote, setAddSchedule }){ const [isChecked, setIsChecked] = useState(false); const onChangeCheck = () => { if (!isChecked) { setCheckVote((prev) => [...prev, data.id]); + setAddSchedule((prev) => [...prev, data.id]); setIsChecked((prev) => !prev); } else { setCheckVote((prev) => prev.filter((vote) => ( - vote.date !== data.date || - vote.startTime !== data.startTime || - vote.endTime !== data.endTime + vote !== data.id + )) + ); + setAddSchedule((prev) => + prev.filter((vote) => ( + vote !== data.id )) ); setIsChecked((prev) => !prev); @@ -41,6 +45,7 @@ function Vote({ isOpen, onClose, data }) { const [votedata, setVotedata] = useState([]); const [checkVote, setCheckVote] = useState([]); const [count, setCount] = useState(0); + const [addSchedule, setAddSchedule] = useState([]); const{ userData } = useContext(AuthContext); @@ -52,7 +57,7 @@ function Vote({ isOpen, onClose, data }) { if(response.ok){ if(jsonData.length > 0) { const components = jsonData.map((data) => ( - <VoteItem data={data} setCheckVote={setCheckVote}/> + <VoteItem data={data} setCheckVote={setCheckVote} setAddSchedule={setAddSchedule}/> )); setVotedata(components); @@ -61,7 +66,7 @@ function Vote({ isOpen, onClose, data }) { setVotedata(components); } }else{ - alert("투표 조회 실패"); + alert("투표 조회를 실패하였습니다."); } } catch(error){ @@ -83,7 +88,7 @@ function Vote({ isOpen, onClose, data }) { alert("투표되었습니다."); setCount((prev) => (prev + 1)); }else{ - throw new Error('Data loading error'); + alert("투표를 실패하였습니다."); } } catch(error){ console.log('Error during fetch:', error); @@ -93,17 +98,18 @@ function Vote({ isOpen, onClose, data }) { const endVote = async ()=>{ try{ const response = await fetch(`/api/recruits/${data.id}/times/vote`,{ - method: 'PUT', + method: 'POST', headers: { 'Content-Type': 'application/json', }, + body: JSON.stringify({"idList" : addSchedule}), }); if (response.ok){ - alert("투표가 마감되었습니다."); + alert("투표 마감 후 스케줄이 성공적으로 추가되었습니다."); window.location.reload(); }else{ - throw new Error('Data loading error'); + alert('스케줄이 중복된 모집원이 존재합니다.'); } } catch(error){ console.log('Error during fetch:', error);