import React, { useState, useEffect } from 'react'; import { View } from 'react-native'; import { useTheme } from 'styled-components/native'; import { useLanguage, useConfig } from 'ordering-components/native'; import { AcceptOrRejectOrder as AcceptOrRejectOrderStyle } from './styles'; import { OButton, OModal } from '../shared'; import { OrdersGroupedItem } from './OrdersGroupedItem' import { OrdersList } from './OrderList'; import { AcceptOrRejectOrder } from '../AcceptOrRejectOrder'; import { ReviewCustomer } from '../ReviewCustomer'; import { GoogleMap } from '../GoogleMap'; import { useOfflineActions } from '../../../../../src/context/OfflineActions'; export const PreviousOrders = (props: any) => { const { orders, onNavigationRedirect, getOrderStatus, handleClickOrder, isLogisticOrder, handleClickLogisticOrder, slaSettingTime, currentTabSelected, currentOrdenSelected, handleChangeOrderStatus, handleSendCustomerReview, isBusinessApp } = props; let hash: any = {}; const [, t] = useLanguage(); const theme = useTheme(); const [{ configs }] = useConfig(); const [{ isNetConnected, canSaveChangesOffline }] = useOfflineActions() // const [, setCurrentTime] = useState() const [openModal, setOpenModal] = useState(false) const [openReviewModal, setOpenReviewModal] = useState({ order: null, ids: [], customerId: null }) const [openMapViewModal, setOpenMapViewModal] = useState({ open: false, customerLocation: null, locations: [] }) const [orderUpdateStatus, setOrderUpdateStatus] = useState({ action: '', ids: [], body: {}, order: {} }) const pastOrderStatuses = [1, 2, 5, 6, 10, 11, 12, 16, 17] const viewMapStatus = [9, 18, 19, 23, 26] const deliveryTypes = [1, 7] const deliveryPickupBtn = props.appTitle?.text?.includes('Delivery') && [3, 8, 18] const deliveryStatusCompleteBtn = props.appTitle?.text?.includes('Delivery') && [9, 19, 23, 26] const isHideRejectButtons = configs?.reject_orders_enabled && configs?.reject_orders_enabled?.value !== '1' && !isBusinessApp const isEnabledOrderNotReady = configs?.order_not_ready_enabled?.value === '1' const isEnabledFailedPickupDriver = configs?.failed_pickup_by_driver_enabled?.value === '1' const disabledActionsByInternet = !isNetConnected && canSaveChangesOffline === false const handlePressOrder = (order: any) => { if (order?.locked && isLogisticOrder) return handleClickOrder && handleClickOrder(order) if (props.handleClickEvent) { props.handleClickEvent({ ...order, isLogistic: isLogisticOrder }) } else { if (isLogisticOrder) { onNavigationRedirect && onNavigationRedirect('OrderDetailsLogistic', { order: { ...order, isLogistic: isLogisticOrder }, handleClickLogisticOrder }); } else { onNavigationRedirect && onNavigationRedirect('OrderDetails', { order }); } } }; const ordersGroupAction = (param1 = '', param2 = '', { order, action, body, ids }: any = {}) => { setOrderUpdateStatus({ ...orderUpdateStatus, action, ids, body, order }) if (!param1) setOpenModal(true) if (param1) { setOpenModal(false) handleChangeOrderStatus && handleChangeOrderStatus(param1, orderUpdateStatus.ids, param2) } } const handleOpenMapView = ({ orders }: any) => { const locations: any = [] orders.map((_order: any) => { if (_order?.driver?.location) { locations.push({ ..._order?.driver?.location, title: _order?.driver?.name ?? t('DRIVER', 'Driver'), icon: _order?.driver?.photo || 'https://res.cloudinary.com/demo/image/fetch/c_thumb,g_face,r_max/https://www.freeiconspng.com/thumbs/driver-icon/driver-icon-14.png', level: 4, }) } if (_order?.business?.location) { locations.push({ ..._order?.business?.location, title: _order?.business?.name, address: { addressName: _order?.business?.address, zipcode: _order?.business?.zipcode }, icon: _order?.business?.logo || 'https://res.cloudinary.com/demo/image/fetch/c_thumb,g_face,r_max/https://res.cloudinary.com/ordering2/image/upload/v1654619525/hzegwosnplvrbtjkpfi6.png', level: 2, }) } if (_order?.customer?.location) { locations.push({ ..._order?.customer?.location, title: _order?.customer?.name ?? t('CUSTOMER', 'Customer'), address: { addressName: _order?.customer?.address, zipcode: _order?.customer?.zipcode }, icon: _order?.customer?.photo || 'https://res.cloudinary.com/demo/image/upload/c_thumb,g_face,r_max/d_avatar.png/non_existing_id.png', level: 3, }) } }) setOpenMapViewModal({ ...openMapViewModal, open: true, locations, customerLocation: orders[0]?.customer?.location }) } // useEffect(() => { // const interval = setInterval(() => { // const date: any = Date.now() // setCurrentTime(date) // }, slaSettingTime ?? 6000) // return () => clearInterval(interval) // }, []) return ( <> {orders && orders?.length > 0 && orders.map((_order: any) => { const order = !Array.isArray(_order) && (_order?.isLogistic && !_order?.order_group && isLogisticOrder ? _order?.order : _order) const _ordersGrouped = Array.isArray(_order) && Object.fromEntries(_order) return ( _ordersGrouped ? ( {Object.keys(_ordersGrouped).map((k, idx) => ( {_ordersGrouped[k]?.length > 0 && _ordersGrouped[k] ?.filter((order: any) => hash[order?.id] ? false : (hash[order?.id] = true)) ?.map((_order: any) => { const order_ = _order?.isLogistic && !_order?.order_group && isLogisticOrder ? _order?.order : _order return ( ) } ) } {_ordersGrouped[k][0]?.status === 0 && !disabledActionsByInternet && ( {!isHideRejectButtons && ( onNavigationRedirect('AcceptOrRejectOrder', { action: 'reject', order: _ordersGrouped[k][0], ids: _ordersGrouped[k].map((o: any) => o.id), handleChangeOrderStatus })} /> )} onNavigationRedirect('AcceptOrRejectOrder', { action: 'accept', order: _ordersGrouped[k][0], ids: _ordersGrouped[k].map((o: any) => o.id), handleChangeOrderStatus })} /> )} {_ordersGrouped[k][0]?.status === 7 && !disabledActionsByInternet && ( handleChangeOrderStatus( 4, _ordersGrouped[k].map((o: any) => o.id), )} /> )} {(_ordersGrouped[k][0]?.status === 8 || _ordersGrouped[k][0]?.status === 18) && deliveryTypes?.includes(_ordersGrouped[k][0]?.delivery_type) && !disabledActionsByInternet && ( handleChangeOrderStatus( 3, _ordersGrouped[k].map((o: any) => o.id), )} /> )} {_ordersGrouped[k][0]?.status === 3 && deliveryTypes?.includes(_ordersGrouped[k][0]?.delivery_type) && !isHideRejectButtons && isEnabledOrderNotReady && !disabledActionsByInternet && ( onNavigationRedirect('AcceptOrRejectOrder', { action: 'notReady', order: _ordersGrouped[k][0], ids: _ordersGrouped[k].map((o: any) => o.id), handleChangeOrderStatus })} /> )} {viewMapStatus.includes(_ordersGrouped[k][0]?.status) && props.appTitle?.text?.includes('Business') && ( handleOpenMapView({ orders: _ordersGrouped[k] })} /> )} {_ordersGrouped[k][0]?.status === 4 && ![1].includes(_ordersGrouped[k][0]?.delivery_type) && !disabledActionsByInternet && ( {!isHideRejectButtons && ( handleChangeOrderStatus( 17, _ordersGrouped[k].map((o: any) => o.id), )} /> )} handleChangeOrderStatus( 15, _ordersGrouped[k].map((o: any) => o.id), )} /> )} {!_ordersGrouped[k][0]?.user_review && pastOrderStatuses.includes(_ordersGrouped[k][0]?.status) && !disabledActionsByInternet && ( setOpenReviewModal({ order: _ordersGrouped[k][0], customerId: _ordersGrouped[k][0]?.customer_id, ids: _ordersGrouped[k].map((o: any) => o.id) })} /> )} {!!deliveryPickupBtn && deliveryPickupBtn?.includes(_ordersGrouped[k][0]?.status) && isEnabledFailedPickupDriver && !disabledActionsByInternet && ( {!isHideRejectButtons && isEnabledOrderNotReady && ( onNavigationRedirect('AcceptOrRejectOrder', { action: 'pickupFailed', order: _ordersGrouped[k][0], ids: _ordersGrouped[k].map((o: any) => o.id), handleChangeOrderStatus })} /> )} handleChangeOrderStatus( 9, _ordersGrouped[k].map((o: any) => o.id), )} /> )} {!!deliveryStatusCompleteBtn && deliveryStatusCompleteBtn.includes(_ordersGrouped[k][0]?.status) && !disabledActionsByInternet && ( {!isHideRejectButtons && ( onNavigationRedirect('AcceptOrRejectOrder', { action: 'deliveryFailed', order: _ordersGrouped[k][0], ids: _ordersGrouped[k].map((o: any) => o.id), handleChangeOrderStatus })} /> )} handleChangeOrderStatus( 11, _ordersGrouped[k].map((o: any) => o.id), )} /> )} ))} ) : ( ) ) })} setOpenModal(false)} entireModal customClose > setOpenModal(false)} /> setOpenReviewModal({ order: null, ids: [], customerId: null })} entireModal customClose > setOpenReviewModal({ order: null, ids: [], customerId: null })} onClose={() => setOpenReviewModal({ order: null, ids: [], customerId: null })} handleCustomCustomerReview={(body: any) => handleSendCustomerReview({ onClose: setOpenReviewModal({ order: null, ids: [], customerId: null }), customerId: openReviewModal?.customerId, orderIds: openReviewModal?.ids, body })} /> setOpenMapViewModal({ ...openMapViewModal, open: false })} entireModal customClose > setOpenMapViewModal({ ...openMapViewModal, open: !openMapViewModal })} /> ); }; PreviousOrders.defaultProps = { orders: [] }