import { useState } from "react"; import Input from "../components/Input"; import Button from "../components/Button"; import Calendar from "../components/Calendar"; import TimeInput from "./TimeInput"; import "../styles/MeetingInfo.css"; import { useNavigate, useLocation } from "react-router-dom"; import axios from "axios"; function MeetingInfoForm() { const [meetingPurpose, setMeetingPurpose] = useState(""); const [number, setNumber] = useState(); const [endVote, setEndVote] = useState(""); const [startTime, setStartTime] = useState(); const [endTime, setEndTime] = useState(); const navigate = useNavigate(); const location = useLocation(); const { title, password } = location.state; const [usingDate, setUsingDate] = useState({}); const handleOnChange = (event) => { setMeetingPurpose(event.target.value); }; const handleNumber = (event) => { const inputValue = event.target.value; if (inputValue >= 0) { setNumber(inputValue); } else { alert("양수만을 입력하세요"); setNumber(""); } }; const handleVoteEnd = (event) => { setEndVote(event.target.value); }; const handleStartTimeChange = (selectedHour, selectedMinute) => { setStartTime(`${selectedHour}:${selectedMinute}:00`); }; const handleEndTimeChange = (selectedHour, selectedMinute) => { setEndTime(`${selectedHour}:${selectedMinute}:00`); }; const handleSubmit = async (event) => { event.preventDefault(); if (meetingPurpose === "" || meetingPurpose === "선택") { alert("목적을 선택하세요"); } else { let transformedPurpose = meetingPurpose; // 기본값은 그대로 유지 if (meetingPurpose === "스터디") { transformedPurpose = "STUDY"; } else if (meetingPurpose === "회의") { transformedPurpose = "MEETING"; } else if (meetingPurpose === "놀기") { transformedPurpose = "PLAYING"; } else if (meetingPurpose === "식사") { transformedPurpose = "FOOD"; } else if (meetingPurpose === "기타") { transformedPurpose = "ETC"; } try { console.log(startTime); console.log(endTime); console.log(usingDate); const response = await axios.post("/meetings", { title: title, adminPassword: password, purpose: transformedPurpose, startDate: usingDate.startDate, endDate: usingDate.endDate, availableVotingStartTime: startTime, availableVotingEndTime: endTime, maxParticipants: number, voteExpiresAt: endVote, }); const id = response.data.id; navigate("LinkPage", { state: { id } }); } catch (error) { console.error("Error sending data to the backEnd", error); } console.log(meetingPurpose); } }; return ( <form onSubmit={handleSubmit}> <div className="center-container2"> <h1>약속 일정 만들기</h1> <div className="purpose"> <h2 className="not-enter">약속 목적 </h2> <select className="purpose-selector" value={meetingPurpose} onChange={handleOnChange}> <option value="선택">선택</option> <option value="스터디">스터디</option> <option value="회의">회의</option> <option value="놀기">놀기</option> <option value="식사">식사</option> <option value="기타">기타</option> </select> </div> <div className="calendar-month"> <Calendar usingDate={usingDate} setUsingDate={setUsingDate} /> </div> <div className="form-input"> <h2>추가 설정</h2> <div className="num-of-people"> <h2>투표 인원수</h2> <Input classname="voteNumber" type="number" value={number} onChange={handleNumber} placeholder="인원수" /> </div> <div className="timeStartEnd"> <h2>투표 가능 시간</h2> <TimeInput onTimeChange={handleStartTimeChange} /> ~ <TimeInput onTimeChange={handleEndTimeChange} /> </div> <div className="end-time"> <h2 className="not-enter">투표 종료 시간</h2> <Input classname= "vote-end" type="datetime-local" value={endVote} onChange={handleVoteEnd} /> </div> </div> <Button type="submit" text="시작하기" /> </div> </form> ); } export default MeetingInfoForm;