From 8a4d7247dd4163050f95055f13391b709bb29e66 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Sat, 10 Aug 2024 13:22:42 +0700 Subject: add feature tracking order --- src/lib/tracking-order/component/TrackingOrder.jsx | 94 ++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 src/lib/tracking-order/component/TrackingOrder.jsx (limited to 'src/lib/tracking-order') diff --git a/src/lib/tracking-order/component/TrackingOrder.jsx b/src/lib/tracking-order/component/TrackingOrder.jsx new file mode 100644 index 00000000..476e6507 --- /dev/null +++ b/src/lib/tracking-order/component/TrackingOrder.jsx @@ -0,0 +1,94 @@ +import odooApi from '@/core/api/odooApi' +import HookFormSelect from '@/core/components/elements/Select/HookFormSelect' +import cityApi from '@/lib/address/api/cityApi' +import { yupResolver } from '@hookform/resolvers/yup' +import React, { useEffect, useRef, useState } from 'react' +import ReCAPTCHA from 'react-google-recaptcha' +import { Controller, useForm } from 'react-hook-form' +import { toast } from 'react-hot-toast' +import * as Yup from 'yup' +import { useRouter } from 'next/router' +import Manifest from '@/lib/treckingAwb/component/Manifest' +const TrackingOrder = () => { + const [idAWB, setIdAWB] = useState(null) + const closePopup = () => { + setIdAWB(null) + } + const { + register, + handleSubmit, + formState: { errors }, + control, + reset + } = useForm({ + resolver: yupResolver(validationSchema), + defaultValues + }) + + const onSubmitHandler = async (values) => { + console.log('values',values) + // setIdAWB(shipment.id) + // setIdAWB(20623) + setIdAWB(25085) + } + return ( +
+

Tracking Order

+
+ Untuk melacak pesanan Anda, masukkan ID Pesanan Anda di kotak di bawah ini dan tekan tombol "Lacak". ID ini diberikan kepada Anda pada tanda terima dan dalam email konfirmasi yang seharusnya Anda terima. +
+
+
+
+
+ + + {console.log("errors",errors)} +
{errors.id?.message}
+
+
+ + +
{errors.email?.message}
+
+
+
+ + +
+
+ +
+
+ ) +} + +const validationSchema = Yup.object().shape({ + email: Yup.string().email('Format harus seperti contoh@email.com'), + id: Yup.string().required('Harus di-isi'), + }) + + const defaultValues = { + email: '', + id: '' + } + + +export default TrackingOrder -- cgit v1.2.3 From 9ee852f139aed0f1034798b6a22b76eb9bd03aa4 Mon Sep 17 00:00:00 2001 From: it-fixcomart Date: Mon, 12 Aug 2024 16:35:23 +0700 Subject: update tracking order --- src/lib/tracking-order/api/trackingOrder.js | 8 + src/lib/tracking-order/component/TrackingOrder.jsx | 164 +++++++++++++-------- 2 files changed, 107 insertions(+), 65 deletions(-) create mode 100644 src/lib/tracking-order/api/trackingOrder.js (limited to 'src/lib/tracking-order') diff --git a/src/lib/tracking-order/api/trackingOrder.js b/src/lib/tracking-order/api/trackingOrder.js new file mode 100644 index 00000000..cc48c40c --- /dev/null +++ b/src/lib/tracking-order/api/trackingOrder.js @@ -0,0 +1,8 @@ +import odooApi from "@/core/api/odooApi"; + +export const trackingOrder = async ({query}) => { + const params = new URLSearchParams(query).toString(); + const list = await odooApi('GET', `/api/v1/tracking_order?${params}`) + + return list; +} diff --git a/src/lib/tracking-order/component/TrackingOrder.jsx b/src/lib/tracking-order/component/TrackingOrder.jsx index 476e6507..c9f739b3 100644 --- a/src/lib/tracking-order/component/TrackingOrder.jsx +++ b/src/lib/tracking-order/component/TrackingOrder.jsx @@ -1,94 +1,128 @@ -import odooApi from '@/core/api/odooApi' -import HookFormSelect from '@/core/components/elements/Select/HookFormSelect' -import cityApi from '@/lib/address/api/cityApi' import { yupResolver } from '@hookform/resolvers/yup' -import React, { useEffect, useRef, useState } from 'react' -import ReCAPTCHA from 'react-google-recaptcha' -import { Controller, useForm } from 'react-hook-form' -import { toast } from 'react-hot-toast' +import React, { useEffect, useState } from 'react' +import { useForm } from 'react-hook-form' import * as Yup from 'yup' -import { useRouter } from 'next/router' import Manifest from '@/lib/treckingAwb/component/Manifest' +import { trackingOrder } from '../api/trackingOrder' +import { useQuery } from 'react-query' +import { Spinner } from '@chakra-ui/react'; +import { Search } from 'lucide-react'; +import odooApi from '@/core/api/odooApi' + const TrackingOrder = () => { const [idAWB, setIdAWB] = useState(null) + const [inputQuery, setInputQuery] = useState(null) + const [buttonClick, setButtonClick] = useState(false) + const [apiError, setApiError] = useState(null) // State to store API error message + const closePopup = () => { setIdAWB(null) - } + setButtonClick(false) + setInputQuery(null) + setApiError(null) // Reset error message on close + } + const { register, handleSubmit, formState: { errors }, control, reset - } = useForm({ + } = useForm({ resolver: yupResolver(validationSchema), defaultValues - }) + }) + + const query = { + email: inputQuery?.email, + so: inputQuery?.id + } + + const { data: tracking, isLoading, isError, error } = useQuery( + ['tracking', query], + () => trackingOrder({ query: query }), + { + enabled: !!query.email && !!query.so, + onSuccess: (data) => { + if (buttonClick) { + if (data?.code === 403 || data?.code === 400 || data?.code === 404) { + setApiError(data?.description); + } else if (data?.pickings?.length > 0) { + setIdAWB(data.pickings[0]?.id); + } else { + setApiError('No pickings data available'); + } + setButtonClick(false); + setInputQuery(null); + } + }, + } + ); const onSubmitHandler = async (values) => { - console.log('values',values) - // setIdAWB(shipment.id) - // setIdAWB(20623) - setIdAWB(25085) - } - return ( -
-

Tracking Order

-
- Untuk melacak pesanan Anda, masukkan ID Pesanan Anda di kotak di bawah ini dan tekan tombol "Lacak". ID ini diberikan kepada Anda pada tanda terima dan dalam email konfirmasi yang seharusnya Anda terima. -
-
-
-
-
- - +

Tracking Order

+
+ Untuk melacak pesanan Anda, masukkan ID Pesanan Anda di kotak di bawah ini dan tekan tombol "Lacak". ID ini diberikan kepada Anda pada tanda terima dan dalam email konfirmasi yang seharusnya Anda terima. +
+
+ +
+
+ + - {console.log("errors",errors)} -
{errors.id?.message}
+
{errors.id?.message}
+
+
+ + +
{errors.email?.message}
+
-
- - -
{errors.email?.message}
+
+
-
-
- - -
- - + + {/* Display the API error message */} + {apiError &&
{apiError}
} + +
-
- ) + ) } const validationSchema = Yup.object().shape({ - email: Yup.string().email('Format harus seperti contoh@email.com'), + email: Yup.string().email('Format harus seperti contoh@email.com').required('Harus di-isi'), id: Yup.string().required('Harus di-isi'), - }) - - const defaultValues = { +}) + +const defaultValues = { email: '', id: '' - } - +} export default TrackingOrder -- cgit v1.2.3