@@ -9,23 +9,19 @@ import IconArrow from 'public/assets/icons/icon-arrow.svg';
99import { cn } from '@/lib/utils' ;
1010import { adminDashboardGet , adminRentalPatch } from '@/services/dashboard' ;
1111import { DashboardProps } from '@/types/dashboardType' ;
12+ import { RentalStatusText } from '@/constants/rentalStatus' ;
1213import DashboardItem from './_components/DashboardItem' ;
1314
1415type DashboardType = DashboardProps ;
1516
1617interface RentalRequestProps {
1718 rentalHistoryId : number ;
19+ itemName : string ;
20+ renterName : string ;
1821 status : string ;
1922}
2023
2124export default function Dashboard ( ) {
22- const RentalFilterText : Record < string , string > = {
23- ALL : '전체' ,
24- PENDING : '대여 신청' ,
25- RETURN_PENDING : '반납 신청' ,
26- RETURN_CONFIRMED : '반납 대기' ,
27- } ;
28-
2925 const [ dashboardDetail , setDashboardDetail ] = useState < DashboardType [ ] > ( [ ] ) ;
3026 const [ filter , setFilter ] = useState ( 'ALL' ) ;
3127 const [ refreshTrigger , setRefreshTrigger ] = useState ( false ) ;
@@ -47,9 +43,10 @@ export default function Dashboard() {
4743
4844 const dropdownActions = [
4945 { title : '전체' , func : ( ) => handleFilter ( 'ALL' ) } ,
50- { title : '대여 신청' , func : ( ) => handleFilter ( 'PENDING' ) } ,
51- { title : '반납 신청' , func : ( ) => handleFilter ( 'RETURN_PENDING' ) } ,
52- { title : '반납 대기' , func : ( ) => handleFilter ( 'RETURN_CONFIRMED' ) } ,
46+ { title : '대여 요청' , func : ( ) => handleFilter ( 'PENDING' ) } ,
47+ { title : '대여 승인' , func : ( ) => handleFilter ( 'CONFIRMED' ) } ,
48+ { title : '반납 요청' , func : ( ) => handleFilter ( 'RETURN_PENDING' ) } ,
49+ { title : '반납 승인' , func : ( ) => handleFilter ( 'RETURN_CONFIRMED' ) } ,
5350 ] ;
5451
5552 useEffect ( ( ) => {
@@ -65,26 +62,43 @@ export default function Dashboard() {
6562
6663 const handleApproveBtnClick = async ( {
6764 rentalHistoryId,
65+ itemName,
66+ renterName,
6867 status,
6968 } : RentalRequestProps ) => {
7069 const statusMap : Record < string , string > = {
7170 PENDING : 'CONFIRMED' ,
71+ CONFIRMED : 'RENTAL' ,
7272 RETURN_PENDING : 'RETURN_CONFIRMED' ,
7373 RETURN_CONFIRMED : 'RETURNED' ,
7474 } ;
7575
76- const newStatus = statusMap [ status ] ?? status ;
76+ const newStatus = statusMap [ status ! ] ?? status ;
7777
7878 const data = { rentalHistoryId, rentalStatus : newStatus } ;
7979 await adminRentalPatch ( data ) ;
80+
81+ alert (
82+ `${ renterName } 님의 ${ itemName } ${ RentalStatusText [ status ] } 요청이 처리되었습니다.` ,
83+ ) ;
84+
8085 // TODO : 현재 임시로 상태로 관리 -> 추후 refetch로 변경
8186 setRefreshTrigger ( ( prev ) => ! prev ) ;
8287 } ;
8388
84- const handleCancelBtnClick = async ( rentalHistoryId : number ) => {
89+ const handleCancelBtnClick = async ( {
90+ rentalHistoryId,
91+ itemName,
92+ renterName,
93+ status,
94+ } : RentalRequestProps ) => {
8595 const data = { rentalHistoryId, rentalStatus : 'CANCEL' } ;
8696 await adminRentalPatch ( data ) ;
8797
98+ alert (
99+ `${ renterName } 님의 ${ itemName } ${ RentalStatusText [ status ] } 요청이 처리되었습니다.` ,
100+ ) ;
101+
88102 // TODO : 현재 임시로 상태로 관리 -> 추후 refetch로 변경
89103 setRefreshTrigger ( ( prev ) => ! prev ) ;
90104 } ;
@@ -103,7 +117,7 @@ export default function Dashboard() {
103117 className = { `flex items-center gap-2.5 ${ isDropdownVisible && 'pointer-events-none' } ` }
104118 >
105119 < div className = "flex text-sm font-semibold" >
106- { RentalFilterText [ filter ] }
120+ { filter === 'ALL' ? '전체' : RentalStatusText [ filter ] }
107121 </ div >
108122 < IconArrow
109123 className = {
@@ -130,13 +144,20 @@ export default function Dashboard() {
130144 if ( item . rentalHistoryId !== undefined ) {
131145 handleApproveBtnClick ( {
132146 rentalHistoryId : item . rentalHistoryId ,
147+ itemName : item . itemName ,
148+ renterName : item . renterName ,
133149 status : item . status ,
134150 } ) ;
135151 }
136152 } }
137153 handleCancelBtnClick = { ( ) => {
138154 if ( item . rentalHistoryId !== undefined ) {
139- handleCancelBtnClick ( item . rentalHistoryId ) ;
155+ handleCancelBtnClick ( {
156+ rentalHistoryId : item . rentalHistoryId ,
157+ itemName : item . itemName ,
158+ renterName : item . renterName ,
159+ status : item . status ,
160+ } ) ;
140161 }
141162 } }
142163 />
0 commit comments