Skip to content
Snippets Groups Projects
MeetingInfoForm.js 4.56 KiB
Newer Older
  • Learn to ignore specific revisions
  • import { useState } from "react";
    import Input from "../components/Input";
    import Button from "../components/Button";
    import Calendar from "../components/Calendar";
    
    Min Dong Hyeun's avatar
    Min Dong Hyeun committed
    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 [start, setStart] = useState();
        const [end, setEnd] = useState();
    
        const navigate = useNavigate();
    
    Min Dong Hyeun's avatar
    Min Dong Hyeun committed
        const location = useLocation();
        const { title, password } = location.state;
    
    Min Dong Hyeun's avatar
    Min Dong Hyeun committed
        const [usingDate, setUsingDate] = useState({});
    
        const handleOnChange = (event) => {
            setMeetingPurpose(event.target.value);
        }
    
        const handleNumber = (event) => {
            setNumber(event.target.value);
        }
    
    
        const handleVoteEnd = (event) => {
            setEndVote(event.target.value);
        }
    
        const handleStart = (event) => {
            setStart(event.target.value);
        }
    
    
        const handleEnd = (event) => {
    
            setEnd(event.target.value);
    
    Min Dong Hyeun's avatar
    Min Dong Hyeun committed
        const handleSubmit = async (event) => {
    
            event.preventDefault();
    
    Min Dong Hyeun's avatar
    Min Dong Hyeun committed
    
            if (meetingPurpose === "" || meetingPurpose === "선택") {
                alert("목적을 선택하세요");
    
    Min Dong Hyeun's avatar
    Min Dong Hyeun committed
            }
            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';
                }
    
    Min Dong Hyeun's avatar
    Min Dong Hyeun committed
                try {
    
                    const response = await axios.post("http://localhost:3000/meetings", {
    
    Min Dong Hyeun's avatar
    Min Dong Hyeun committed
                        title: title,
                        adminPassword: password,
    
    Min Dong Hyeun's avatar
    Min Dong Hyeun committed
                        purpose: transformedPurpose,
                        startDate: usingDate.startDate,
                        endDate: usingDate.endDate,
    
    Min Dong Hyeun's avatar
    Min Dong Hyeun committed
                        maxParticipants: number,
                        voteExpiresAt: endVote
                    });
                    const id = response.data.id;
    
    Min Dong Hyeun's avatar
    Min Dong Hyeun committed
                    navigate("LinkPage", { state: { id } });
    
    Min Dong Hyeun's avatar
    Min Dong Hyeun committed
                } catch (error) {
                    console.error("Error sending data to the backEnd", error);
                }
    
    Min Dong Hyeun's avatar
    Min Dong Hyeun committed
                console.log(meetingPurpose);
    
    Min Dong Hyeun's avatar
    Min Dong Hyeun committed
            }
        };
    
        return (
            <form onSubmit={handleSubmit}>
                <div>
    
                    <div className="purpose-selector">
                        <h1>약속 일정 만들기</h1>
                        <label>
                            목적:
                            <select value={meetingPurpose} onChange={handleOnChange}>
    
    Min Dong Hyeun's avatar
    Min Dong Hyeun committed
                                <option value="선택">선택</option>
                                <option value="스터디">스터디</option>
                                <option value="회의">회의</option>
                                <option value="놀기">놀기</option>
                                <option value="식사">식사</option>
                                <option value="기타">기타</option>
    
                            </select>
                        </label>
                    </div>
    
    
    Min Dong Hyeun's avatar
    Min Dong Hyeun committed
                    <Calendar usingDate={usingDate} setUsingDate={setUsingDate} />
    
                    <div className="timeStartEnd">
                        시작:
                        <Input
    
    Min Dong Hyeun's avatar
    Min Dong Hyeun committed
                            type="time"
    
                            value={start}
                            onChange={handleStart}
                            placeholder="시작"
                        />
                        종료:
                        <Input
    
    Min Dong Hyeun's avatar
    Min Dong Hyeun committed
                            type="time"
    
                            value={end}
                            onChange={handleEnd}
                            placeholder="종료"
                        />
    
                    </div>
    
                    <Input
                        type="number"
                        value={number}
                        onChange={handleNumber}
                        placeholder="예상 투표 인원(선택)"
                    />
                    <Input
                        type="datetime-local"
    
                        value={endVote}
                        onChange={handleVoteEnd}
    
                    />
                    <Button
                        type="submit"
                        text="시작하기"
                    />
                </div>
            </form>
        );
    }
    
    export default MeetingInfoForm;