Commit 05ae28b3 authored by jang dong hyeok's avatar jang dong hyeok
Browse files

설문응답완료후 홈페이지로 이동

parent afb55513
import React, { FormEvent, useEffect, useState } from "react"; import React, { FormEvent, useEffect, useState } from "react";
import { useParams } from "react-router-dom"; import { useParams, useNavigate } from "react-router-dom";
import { answerApi, surveyApi } from "../apis"; import { answerApi, surveyApi } from "../apis";
import { catchErrors } from "../helpers"; import { catchErrors } from "../helpers";
import { SpinnerIcon } from "../icons"; import { SpinnerIcon } from "../icons";
...@@ -12,6 +12,7 @@ export const AnswerSurvey = () => { ...@@ -12,6 +12,7 @@ export const AnswerSurvey = () => {
const [survey, setSurvey] = useState<ISurvey>(); const [survey, setSurvey] = useState<ISurvey>();
const [answers, setAnswers] = useState<IAnswer[]>([]); const [answers, setAnswers] = useState<IAnswer[]>([]);
const [error, setError] = useState(""); const [error, setError] = useState("");
const navigate = useNavigate();
useEffect(() => { useEffect(() => {
surveyId && getSurvey(surveyId); surveyId && getSurvey(surveyId);
...@@ -30,52 +31,57 @@ export const AnswerSurvey = () => { ...@@ -30,52 +31,57 @@ export const AnswerSurvey = () => {
if (!survey) { if (!survey) {
return; return;
} }
try { if (confirm("제출하시겠습니까?")) {
const fileAnswers = answers.filter( try {
(answer) => answer.question.type === "file" const fileAnswers = answers.filter(
); (answer) => answer.question.type === "file"
const otherAnswers = answers.filter( );
(answer) => answer.question.type !== "file" const otherAnswers = answers.filter(
); (answer) => answer.question.type !== "file"
);
console.log("file answers:", fileAnswers); console.log("file answers:", fileAnswers);
console.log("other answers:", otherAnswers); console.log("other answers:", otherAnswers);
const forms = fileAnswers.map((answer) => { const forms = fileAnswers.map((answer) => {
const formData = new FormData(); const formData = new FormData();
formData.append("surveyId", survey._id!); formData.append("surveyId", survey._id!);
formData.append("questionId", answer.question._id!); formData.append("questionId", answer.question._id!);
formData.append("guestId", "guest"); formData.append("guestId", "guest");
const files: FileList = answer.content; const files: FileList = answer.content;
files && files &&
[...files].map((f) => { [...files].map((f) => {
console.log("파일 없음", f); console.log("파일 없음", f);
formData.append("uploadFiles", f); formData.append("uploadFiles", f);
}); });
return formData; return formData;
}); });
console.log("forms", forms); console.log("forms", forms);
setError(""); setError("");
const results = await answerApi.save( const results = await answerApi.save(
otherAnswers.map((answer) => ({ otherAnswers.map((answer) => ({
questionId: answer.question._id!, questionId: answer.question._id!,
surveyId: survey._id!, surveyId: survey._id!,
guestId: "guest", guestId: "guest",
content: answer.content, content: answer.content,
})) }))
); );
console.log("results:", results); console.log("results:", results);
const result = await Promise.all( const result = await Promise.all(
forms.map(async (form) => await answerApi.saveForm(form)) forms.map(async (form) => await answerApi.saveForm(form))
); );
console.log("result:", result); console.log("result:", result);
} catch (error) { navigate("/");
catchErrors(error, setError); } catch (error) {
} finally { catchErrors(error, setError);
// setLoading(false); } finally {
// setLoading(false);
}
} else {
return;
} }
}; };
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment