import React from 'react'; import { BusinessController as BusinessSingleCard, useUtils, useOrder, useLanguage, } from 'ordering-components/native'; import { OIcon, OText } from '../shared'; import { StyleSheet, View } from 'react-native'; import { BusinessControllerParams } from '../../types'; import { convertHoursToMinutes } from '../../utils'; import { Card, BusinessHero, BusinessContent, BusinessCategory, BusinessInfo, Metadata, BusinessState, BusinessLogo, Reviews, } from './styles'; import { useTheme } from 'styled-components/native'; import FontAwesomeIcon from 'react-native-vector-icons/FontAwesome5'; export const BusinessControllerUI = (props: BusinessControllerParams) => { const { business, handleClick } = props; const [{ parsePrice, parseDistance, parseNumber, optimizeImage }] = useUtils(); const [orderState] = useOrder(); const [, t] = useLanguage(); const theme = useTheme() const styles = StyleSheet.create({ headerStyle: { borderTopLeftRadius: 7.6, borderTopRightRadius: 7.6, }, businessLogo: { backgroundColor: 'white', width: 62, height: 62, borderRadius: 7.6, justifyContent: 'center', alignItems: 'center', marginTop: -32, shadowColor: '#000000', shadowOffset: { width: 0, height: 1 }, shadowOpacity: 0.1, shadowRadius: 1 }, businessStateView: { backgroundColor: '#DEE2E6', borderRadius: 50, height: 20, alignItems: 'center', justifyContent: 'center', paddingHorizontal: 8, }, businessStateText: { textAlign: 'center', }, starIcon: { marginHorizontal: 2, marginTop: -2, }, featured: { position: 'absolute', padding: 8, backgroundColor: theme.colors.backgroundDark, opacity: 0.8, borderRadius: 10, left: 20, top: 10, }, closed: { }, bullet: { flexDirection: 'row', alignItems: 'center', justifyContent: 'flex-start', }, }); const types = ['food', 'laundry', 'alcohol', 'groceries']; const getBusinessType = () => { if (Object.keys(business).length <= 0) return t('GENERAL', 'General'); const _types: any = []; types.forEach((type) => { if (business[type]) { _types.push(t(type.toUpperCase(), type)); } }); return _types.join(', '); }; return ( handleClick(business)}> {business?.featured && ( )} {!business?.open && ( {t('PREORDER', 'PREORDER')} )} {business?.reviews?.total > 0 && ( {parseNumber(business?.reviews?.total, { separator: '.' })} )} {business?.name} {business?.address} {/* {getBusinessType()} */} {!business?.open ? ( {t('CLOSED', 'Closed')} ) : ( {`${t('DELIVERY_FEE', 'Delivery fee')} ${parsePrice(business?.delivery_price) + ' \u2022 '}`} {`${convertHoursToMinutes( orderState?.options?.type === 1 ? business?.delivery_time : business?.pickup_time, )} \u2022 `} {parseDistance(business?.distance)} )} ); }; export const BusinessController = (props: BusinessControllerParams) => { const BusinessControllerProps = { ...props, UIComponent: BusinessControllerUI, }; return ; };