Skip to content
Snippets Groups Projects
MeetingInfoForm.js 4.55 KiB
Newer Older
import { useState } from "react";
import Input from "../components/Input";
import Button from "../components/Button";
import Calendar from "../components/Calendar";
import TimeInput from "./TimeInput";
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 [startTime, setStartTime] = useState();
    const [endTime, setEndTime] = 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 handleStartTimeChange = (selectedHour, selectedMinute) => {
        setStartTime(`${selectedHour}:${selectedMinute}`);
    };
    const handleEndTimeChange = (selectedHour, selectedMinute) => {
        setEndTime(`${selectedHour}:${selectedMinute}`);
    };
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,
                    availableVotingStartTime : startTime,
                    availableVotingEndTime : endTime,
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">
                    투표 가능 시간
                    <TimeInput onTimeChange={handleStartTimeChange}/>
                    ~
                    <TimeInput onTimeChange={handleEndTimeChange}/>
                <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;