11import { ArrowLeft , Plus } from "lucide-react" ;
2- import { useLocation , useNavigate } from "react-router-dom" ;
2+ import { useLocation , useNavigate , useParams } from "react-router-dom" ;
33import { createRecruitment } from "@/api/recruitment" ;
44import { convertFormDataToApiRequest } from "@/api/formDataConverter" ;
55import { useContext } from "react" ;
66import { FormEditContext } from "@/widget/formEdit/context/FormEditContext" ;
7+ import { toast } from "sonner" ;
78
89const Header = ( ) => {
910 const location = useLocation ( ) ;
1011 const navigate = useNavigate ( ) ;
12+ const { councilId } = useParams < { councilId : string } > ( ) ;
1113
1214 // FormEditContext가 존재하는지 확인
1315 const formEditContext = useContext ( FormEditContext ) ;
14- const { formName, endDate, endTime, questions } = formEditContext || {
15- formName : "" ,
16- endDate : null ,
17- endTime : "00:00" ,
18- questions : [ ] ,
19- } ;
2016
21- const isFormEditPage = location . pathname === "/applicationform/edit" ;
17+ const isFormEditPage =
18+ location . pathname === "/applicationform/edit" ||
19+ location . pathname . includes ( "/applicationform/edit" ) ;
2220
2321 const handleBack = ( ) => {
2422 navigate ( - 1 ) ;
@@ -31,41 +29,54 @@ const Header = () => {
3129 return ;
3230 }
3331
32+ // formEditContext에서 최신 값 가져오기
33+ const currentName = formEditContext . name ;
34+ const currentEndDate = formEditContext . endDate ;
35+ const currentEndTime = formEditContext . endTime ;
36+ const currentQuestions = formEditContext . questions ;
37+
3438 // 유효성 검사
35- if ( ! formName . trim ( ) ) {
39+ if ( ! currentName || ! currentName . trim ( ) ) {
3640 alert ( "지원서 제목을 입력해주세요." ) ;
3741 return ;
3842 }
3943
40- if ( ! endDate ) {
44+ if ( ! currentEndDate ) {
4145 alert ( "지원 기간 종료일을 선택해주세요." ) ;
4246 return ;
4347 }
4448
45- if ( ! endTime ) {
49+ if ( ! currentEndTime ) {
4650 alert ( "지원 기간 종료 시간을 선택해주세요." ) ;
4751 return ;
4852 }
4953
50- if ( questions . length === 0 ) {
54+ if ( currentQuestions . length === 0 ) {
5155 alert ( "최소 1개 이상의 질문을 추가해주세요." ) ;
5256 return ;
5357 }
5458
5559 try {
5660 // 폼 데이터를 API 형식으로 변환
5761 const recruitmentData = convertFormDataToApiRequest (
58- formName . trim ( ) ,
59- endDate ,
60- endTime ,
61- questions
62+ currentName . trim ( ) ,
63+ currentEndDate ,
64+ currentEndTime ,
65+ currentQuestions
6266 ) ;
6367
6468 // API 호출
6569 await createRecruitment ( recruitmentData ) ;
6670
71+ // 성공 토스트 표시
72+ toast . success ( "모집 지원서 생성이 완료되었습니다." ) ;
73+
6774 // 성공 시 페이지 이동
68- navigate ( "/applicationform" ) ;
75+ if ( councilId ) {
76+ navigate ( `/${ councilId } /recruit` ) ;
77+ } else {
78+ navigate ( "/applicationform" ) ;
79+ }
6980 } catch ( error ) {
7081 console . error ( "지원서 양식 생성 실패:" , error ) ;
7182
@@ -102,7 +113,7 @@ const Header = () => {
102113 className = "flex items-center gap-2 rounded-xl bg-primary px-5 py-2 text-title-14-semibold text-white transition hover:opacity-90"
103114 >
104115 < Plus className = "h-4 w-4" />
105- < span > 지원서 양식 생성 </ span >
116+ < span > 모집 생성하기 </ span >
106117 </ button >
107118 </ div >
108119 ) }
0 commit comments