"use client"; import { useState } from "react"; import { Button } from "@/components/ui/button/button"; import { Modal } from "@/components/ui/modal/modal"; import { useModal } from "@/components/ui/modal/modal.hook"; import type { ReactQueryReturnProps } from "@/components/widget/booking-request-card-detail/booking-request-card-detail"; import FlightRequestCardDetail from "@/components/widget/flight-request-card-detail/flight-request-card-detail"; import BookingRequestDetailSkeleton from "@/features/demand/components/demand-detail/components/booking-request-skeleton"; import type { IBookingRequest } from "@/models/booking-request.model"; import { useBookingCancelReasonQuery } from "@/services/eva-display/book-cancel-reason/booking-cancel-reason-service"; import type { CancelReasonItem } from "@/services/eva-display/book-cancel-reason/booking-cancel-reason-service.types"; import { useBookingDetailQuery } from "@/services/eva-display/booking-detail-request/booking-detail-service"; import { useBookingRequestStatusMutation } from "@/services/eva-display/demand/booking-request-status/booking-request-status.services"; import { CorpRequestStatusEnum } from "@/services/eva-display/demand/booking-request-status/booking-request-status-services.types"; import { statusEnumTypes } from "@/services/eva-display/demand/demand-service.types"; import type { ISearchRequest } from "@/services/eva-display/demand/display-information/display-information"; import type { IFlightBookedProduct } from "@/services/eva-display/demand/flight-booked-product/flight-booked-product"; import type { IFlightDisplayInformation } from "@/services/eva-display/demand/flight-display-information/flight-display-information"; import type { IPlaneReservationData } from "@/services/eva-display/demand/flight-reservation-data/flight-reservation-data"; import type { IPassengerInformation } from "@/services/eva-display/demand/passenger-information/passenger-information"; interface DemandDetailProps { id: number; } const FlightRequestDetail = ({ id }: DemandDetailProps) => { const bookingRequestDetailQuery = useBookingDetailQuery({ RequestId: id, }); const bookingCancelReason = useBookingCancelReasonQuery(); const [rejectSelectValue, setRejectSelectValue] = useState({ value: "", name: "", }); const { isLoading, isSuccess, isError, data } = bookingRequestDetailQuery; const { closeModal, openModal, modalOpen } = useModal({ open: false, }); const bookingRequestStatusMutation = useBookingRequestStatusMutation(); const detailData = data as unknown as IBookingRequest; const handleAccept = async () => { if (!detailData) { return; } const resp = await bookingRequestStatusMutation.mutateAsync({ CorpBaseRequest: { CorpRequestStatus: CorpRequestStatusEnum.Approved, RequestId: detailData.id, ApprovePriceChange: false, }, }); if (resp.data?.result?.serviceResponse?.errors) { openModal(); } else { await bookingRequestDetailQuery.refetch(); } }; const handleReject = async () => { if (!detailData) { return; } const resp = await bookingRequestStatusMutation.mutateAsync({ CorpBaseRequest: { CorpRequestStatus: CorpRequestStatusEnum.Cancelled, RequestId: detailData.id, }, }); if (resp.data?.result?.serviceResponse?.errors) { openModal(); } else { await bookingRequestDetailQuery.refetch(); } }; const handleDenied = async () => { if (!detailData) { return; } const resp = await bookingRequestStatusMutation.mutateAsync({ CorpBaseRequest: { CorpRequestStatus: CorpRequestStatusEnum.Denied, RequestId: detailData.id, DenyReasonId: +rejectSelectValue.value, StatusChangeDescription: rejectSelectValue.name, }, }); if (resp.data?.result?.serviceResponse?.errors) { openModal(); } else { await bookingRequestDetailQuery.refetch(); } }; return (