1
- import { useContext } from 'react' ;
2
- import Header from '../../components/Header' ;
3
- import { BackGroundField } from '../../components/CommonStyled' ;
4
- import MainTitle from '../../components/MainTitle' ;
5
- import { CompanyContext , JobContext , ReviewContext } from '../../App' ;
1
+ import { useContext , useEffect , useState } from 'react' ;
6
2
import { useParams } from 'react-router-dom' ;
3
+ import { CompanyContext } from '../../App' ;
4
+ import { canAddReview } from '../../apis/review' ;
5
+ import MainTitle from '../../components/MainTitle' ;
7
6
import BasicInfo from './components/BasicInfo' ;
8
- import { Swiper , SwiperSlide } from 'swiper/react' ;
9
7
import JobPreview from './components/JobPreview' ;
10
8
import ReviewAverage from './components/ReviewAverage' ;
11
9
import ReviewList from './components/ReviewList' ;
10
+ import ReviewAddContainer from './components/ReviewAddContainer' ;
11
+ import { BackGroundField } from '../../components/CommonStyled' ;
12
+
12
13
const CompanyDetails = ( ) => {
13
14
const params = useParams ( ) ;
14
15
const companyContext = useContext ( CompanyContext ) ;
15
-
16
+ const [ canAdd , setCanAdd ] = useState ( false ) ;
17
+ const [ write , setWrite ] = useState ( false ) ;
18
+ const [ reviewAdd , setReviewAdd ] = useState ( {
19
+ userId : '' ,
20
+ enterpriseId : '' ,
21
+ title : '' ,
22
+ rating : 0 ,
23
+ promotionRating : 0 ,
24
+ salaryRating : 0 ,
25
+ balanceRating : 0 ,
26
+ cultureRating : 0 ,
27
+ managementRating : 0 ,
28
+ pros : '' ,
29
+ cons : '' ,
30
+ } ) ;
31
+ const [ complteAdd , setComplteAdd ] = useState ( false ) ;
16
32
// 기업 데이터 변수 처리
17
33
const EnterpriseData = companyContext . find (
18
34
( company ) => String ( company . enterprise_id ) === String ( params . enterprise_id )
19
35
) ;
36
+ const fetchCanAddReview = async ( ) => {
37
+ const sessionType = await window . sessionStorage . getItem ( 'userType' ) ;
38
+ const sessionName = await window . sessionStorage . getItem ( 'username' ) ;
39
+
40
+ if ( EnterpriseData ) {
41
+ // EnterpriseData가 존재할 때만 setReviewAdd 실행
42
+ setReviewAdd ( ( pre ) => ( {
43
+ ...pre ,
44
+ userId : sessionName ,
45
+ enterpriseId : EnterpriseData . enterprise_id , // enterpriseId 설정
46
+ } ) ) ;
47
+ }
20
48
21
- // EnterpriseData가 없는 경우에 대비한 조건문 추가
49
+ if ( sessionType && sessionName ) {
50
+ const result = await canAddReview ( {
51
+ type : sessionType ,
52
+ name : sessionName ,
53
+ } ) ;
54
+
55
+ setCanAdd ( result ) ;
56
+ }
57
+ } ;
58
+
59
+ useEffect ( ( ) => {
60
+ if ( EnterpriseData ) {
61
+ fetchCanAddReview ( ) ; // EnterpriseData가 있을 때만 실행
62
+ }
63
+ } , [ EnterpriseData , complteAdd ] ) ; // EnterpriseData가 변경될 때만 실행
64
+ useEffect ( ( ) => {
65
+ fetchCanAddReview ( ) ;
66
+ // console.log('변경됐잖아!!!!!!!!!');
67
+ } , [ complteAdd ] ) ; // EnterpriseData가 변경될 때만 실행
68
+
69
+ const addReview = ( ) => {
70
+ setWrite ( ! write ) ;
71
+ if ( ! write ) {
72
+ setReviewAdd ( ( pre ) => ( {
73
+ ...pre ,
74
+ enterpriseId : EnterpriseData . enterprise_id , // enterpriseId 다시 설정
75
+ title : '' ,
76
+ rating : 0 ,
77
+ promotionRating : 0 ,
78
+ salaryRating : 0 ,
79
+ balanceRating : 0 ,
80
+ cultureRating : 0 ,
81
+ managementRating : 0 ,
82
+ pros : '' ,
83
+ cons : '' ,
84
+ } ) ) ;
85
+ }
86
+ } ;
22
87
if ( ! EnterpriseData ) {
23
88
return < div > Loading...</ div > ; // 로딩 상태 표시
24
89
}
90
+
25
91
const EnterpriseImg = EnterpriseData . imageName
26
92
? `${ import . meta. env . VITE_SERVER_URL } :8080/static/images/` +
27
93
EnterpriseData . imageName
28
94
: 'https://cdn-icons-png.flaticon.com/512/4091/4091968.png' ;
29
95
30
96
const EnterpriseType = EnterpriseData . type || '기업 분류를 작성해주세요!' ;
31
-
32
- const EnterpriseDescripton =
97
+ const EnterpriseDescription =
33
98
EnterpriseData . description || '기업 설명을 작성해주세요!' ;
34
99
35
100
return (
@@ -43,13 +108,27 @@ const CompanyDetails = () => {
43
108
address3 = { EnterpriseData . address3 }
44
109
phone_number = { EnterpriseData . phone_number }
45
110
type = { EnterpriseType }
46
- description = { EnterpriseDescripton }
111
+ description = { EnterpriseDescription }
47
112
/>
48
113
< MainTitle text = { `${ EnterpriseData . name } 채용 공고` } />
49
114
< JobPreview />
50
115
< MainTitle text = { `${ EnterpriseData . name } 전체 리뷰 통계` } />
51
116
< ReviewAverage />
52
- < MainTitle text = { `${ EnterpriseData . name } 리뷰` } />
117
+ < MainTitle
118
+ text = { `${ EnterpriseData . name } 리뷰` }
119
+ isReview = { true }
120
+ isWrite = { write }
121
+ addReview = { addReview }
122
+ isLogin = { canAdd } // canAdd 상태를 사용
123
+ />
124
+ { write && (
125
+ < ReviewAddContainer
126
+ reviewAdd = { reviewAdd }
127
+ setReviewAdd = { setReviewAdd }
128
+ setWrite = { setWrite }
129
+ setComplteAdd = { setComplteAdd }
130
+ />
131
+ ) }
53
132
< ReviewList />
54
133
</ BackGroundField >
55
134
) ;
0 commit comments