Skip to content
Snippets Groups Projects
MeetingInfoForm.js 4.57 KiB
Newer Older
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://43.200.79.42:3000/meetings", {
                    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;