import { useState, useEffect } from 'react';
import { useParams, Redirect } from 'react-router-dom';
import { useAuth } from "../../utils/context";
import BtnGroup from "../Buttons/BtnGroup";
import subjectApi from '../../apis/subject.api';
import planApi from '../../apis/plan.api';
import catchErrors from '../../utils/catchErrors';
import styles from "./form.module.scss";
const StudyPlanEditForm = () => {
const { user } = useAuth();
const params = useParams();
const [disabled, setDisabled] = useState(true)
const [error, setError] = useState("");
const [success, setSuccess] = useState(false)
const [studyplan, setStudyplan] = useState({
studyplanTitle: "",
endDate: "",
memo: "",
deadline: "",
selected: ""
})
const [subjectList, setList] = useState([])
useEffect(() => {
let isMounted = true;
const checkInfo = { studyplanTitle: studyplan.studyplanTitle, endDate: studyplan.endDate, selected: studyplan.selected }
if (studyplan.deadline === "on") {
checkInfo.endTime = studyplan.endTime
} else {
delete checkInfo.endTime
}
if (isMounted) {
const isStudyPlan = Object.values(checkInfo).every((el) => Boolean(el));
isStudyPlan ? setDisabled(false) : setDisabled(true);
}
return () => {
isMounted = false;
}
}, [studyplan])
useEffect(() => {
getSubject(user.id)
if (params.subjectId) setStudyplan({...studyplan, selected: params.subjectId })
else if (params.planId) getInfo(params.planId);
}, [])
async function getSubject(id) {
try {
setError("")
const result = await subjectApi.subjectTitle(id)
setList(result)
} catch (error) {
catchErrors(error, setError)
}
}
async function getInfo(planId) {
try {
setError("")
const result = await planApi.getDetail(planId)
setStudyplan({ ...studyplan, ...result })
} catch (error) {
catchErrors(error, setError)
}
}
function handleChange(e) {
const { name, value } = e.target
if (name === "deadline") {
studyplan.deadline !== "on" ? setStudyplan({ ...studyplan, [name]: value }) : setStudyplan({ ...studyplan, [name]: "off" })
} else {
setStudyplan({ ...studyplan, [name]: value })
}
}
async function handleSubmit(e) {
e.preventDefault();
try {
setError("")
if (params.subjectId) {
//등록함수 실행
await planApi.submit(studyplan, params.subjectId)
alert("해당 학업계획이 성공적으로 등록되었습니다.")
} else {
//수정함수 실행
await planApi.edit(studyplan, params.planId)
alert("해당 학업계획이 성공적으로 수정되었습니다.")
}
setSuccess(true)
} catch (error) {
catchErrors(error, setError)
setStudyplan({
studyplanTitle: "",
endDate: "",
deadline: "",
memo: "",
selected: ""
})
}
}
if (success) {
return