"use client"; 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 type { DeniedReasonType } from "@/components/widget/transfer-request-card-detail/transfer-request-card-detail"; import TransferRequestCardDetail from "@/components/widget/transfer-request-card-detail/transfer-request-card-detail"; import BookingRequestDetailSkeleton from "@/features/demand/components/demand-detail/components/booking-request-skeleton"; import type { ITransferBookingRequest } from "@/models/booking-request.model"; import { useBookingRequestDetailQuery } 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 { IPassengerInformation } from "@/services/eva-display/demand/passenger-information/passenger-information"; import type { ITransferBookedProduct } from "@/services/eva-display/demand/transfer-booked-product/transfer-booked-product"; import type { ITransferReservationData } from "@/services/eva-display/demand/transfer-reservation-data/transfer-reservation-data"; interface DemandDetailProps { id: number; } const TransferRequestDetail = ({ id }: DemandDetailProps) => { const bookingRequestDetailQuery = useBookingRequestDetailQuery({ RequestId: id, }); const { closeModal, openModal, modalOpen } = useModal({ open: false, }); const bookingRequestStatusMutation = useBookingRequestStatusMutation(); const { isLoading, isSuccess, isError, data, refetch } = bookingRequestDetailQuery; const detailData = data as unknown as ITransferBookingRequest; const handleAccept = async () => { if (!detailData) { return; } const resp = await bookingRequestStatusMutation.mutateAsync({ CorpBaseRequest: { CorpRequestStatus: CorpRequestStatusEnum.Approved, RequestId: detailData.id, }, }); if (resp.data?.result?.serviceResponse?.errors) { openModal(); } else { await 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 refetch(); } }; const handleDenied = async (reason?: DeniedReasonType) => { if (!detailData || !reason) { return; } const resp = await bookingRequestStatusMutation.mutateAsync({ CorpBaseRequest: { CorpRequestStatus: CorpRequestStatusEnum.Denied, RequestId: detailData.id, DenyReasonId: +reason.value, StatusChangeDescription: reason.name, }, }); if (resp.data?.result?.serviceResponse?.errors) { openModal(); } else { await refetch(); } }; return (
{isError && (

Detay bilgileri alinirken bir sorun ile karsilasildi.

)} {isLoading && } {detailData && isSuccess && ( handleDenied(reason)} bookingRequestStatusMutation={ bookingRequestStatusMutation as ReactQueryReturnProps } /> )}
{bookingRequestStatusMutation.data?.data?.result?.serviceResponse ?.errors && ( <>
{bookingRequestStatusMutation.data?.data?.result ?.serviceResponse?.errors[0].message === "Strategy access denied" ? ( Bu işlem için gerekli yetkiniz bulunmamaktadır. ) : ( { bookingRequestStatusMutation.data?.data?.result ?.serviceResponse?.errors[0].message } )}
)}
); }; export default TransferRequestDetail;