Commit 695c4393 authored by Wahyu Adjie Prasetyo's avatar Wahyu Adjie Prasetyo

change menu selection

parent 6e3f99c0
...@@ -3,19 +3,14 @@ import { View, Text, StyleSheet, ScrollView, TouchableOpacity, Image, TextInput ...@@ -3,19 +3,14 @@ import { View, Text, StyleSheet, ScrollView, TouchableOpacity, Image, TextInput
import { connect } from 'react-redux'; import { connect } from 'react-redux';
class ItemShoping extends React.Component { class ItemShoping extends React.Component {
render() { render() {
const { item } = this.props const { item } = this.props
console.log("ini id itemnya "+item.id)
return ( return (
<View style={{ flex: 1, margin: 10 }} key={item.id} ref={this.props._scrollView}> <View style={{ flex: 1, margin: 10 }} key={item.id}>
<ScrollView ref={view => this._scrollView = view}> {/* <Text style={{ fontSize: 20, color: '#c9af6d' }}>{item.name}</Text> */}
{item.code == 'CATEGORY' ? ( <View style={{ flexDirection: 'row' }}>
<Text style={{ fontSize: 20, color: '#c9af6d' }}>{item.name}</Text>
): (
<View style={{ flexDirection: 'row' }}>
<View > <View >
<Image source={{ uri: item.image }} style={{ height: 100, width: 100, borderRadius: 5, top: 5 }}></Image> <Image source={{ uri: item.image }} style={{ height: 100, width: 100, borderRadius: 5, top: 5 }}></Image>
</View> </View>
...@@ -31,7 +26,7 @@ class ItemShoping extends React.Component { ...@@ -31,7 +26,7 @@ class ItemShoping extends React.Component {
<TextInput <TextInput
style={{ height: 25, padding: 2, textAlign: 'center', margin: 2 }} style={{ height: 25, padding: 2, textAlign: 'center', margin: 2 }}
autoCapitalize="none"> autoCapitalize="none">
{item.qty} {item.quantity}
</TextInput> </TextInput>
<TouchableOpacity onPress={() => this.props.handleAdd()}> <TouchableOpacity onPress={() => this.props.handleAdd()}>
<Text style={{ fontSize: 20, margin: 2 }}> + </Text> <Text style={{ fontSize: 20, margin: 2 }}> + </Text>
...@@ -40,9 +35,6 @@ class ItemShoping extends React.Component { ...@@ -40,9 +35,6 @@ class ItemShoping extends React.Component {
</View> </View>
</View> </View>
</View> </View>
)}
</ScrollView>
</View> </View>
) )
} }
...@@ -111,4 +103,4 @@ const mapStateToProps = (state) => { ...@@ -111,4 +103,4 @@ const mapStateToProps = (state) => {
} }
} }
export default connect(mapStateToProps)(Item) export default connect(mapStateToProps)(ItemShoping)
...@@ -5,9 +5,6 @@ import Item from './Item'; ...@@ -5,9 +5,6 @@ import Item from './Item';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import ActionType from '../redux/globalActionType'; import ActionType from '../redux/globalActionType';
import CurrencyFormat from 'react-currency-format'; import CurrencyFormat from 'react-currency-format';
import Constants from "expo-constants";
import { Ionicons, MaterialCommunityIcons, MaterialIcons, AntDesign } from '@expo/vector-icons';
// import { range } from 'lodash';
import _ from 'lodash'; import _ from 'lodash';
class MenuSelection extends React.Component { class MenuSelection extends React.Component {
...@@ -26,9 +23,6 @@ class MenuSelection extends React.Component { ...@@ -26,9 +23,6 @@ class MenuSelection extends React.Component {
} }
componentDidMount() { componentDidMount() {
this.getMenuList() this.getMenuList()
// console.log("INI TOTAL ORDER : " + this.props.orders)
// console.log("INI TOTAL QTY :" + this.props.quantity)
console.log("INI OETLET :" + JSON.stringify(this.props.outlet_id))
} }
getMenuList() { getMenuList() {
...@@ -44,11 +38,9 @@ class MenuSelection extends React.Component { ...@@ -44,11 +38,9 @@ class MenuSelection extends React.Component {
listMenu: data.menu listMenu: data.menu
}) })
let last_category = '' let last_category = ''
let list_menu = [] let list_menu = []
for (let i = 0; i < data.menu.length; i++) { for (let i = 0; i < data.menu.length; i++) {
const row = data.menu[i]; const row = data.menu[i];
...@@ -74,11 +66,6 @@ class MenuSelection extends React.Component { ...@@ -74,11 +66,6 @@ class MenuSelection extends React.Component {
list_menu.push(row) list_menu.push(row)
} }
} }
// this.state.listMenu.map((i => {
// i.qty = 0
// }))
console.log('After : ' + JSON.stringify(list_menu))
this.setState({ this.setState({
listMenu: list_menu listMenu: list_menu
}) })
...@@ -116,47 +103,35 @@ class MenuSelection extends React.Component { ...@@ -116,47 +103,35 @@ class MenuSelection extends React.Component {
// } // }
scrollToItem = () => { scrollToItem = () => {
// let newData = []
// newData.push(this.state.listMenu)
// console.log("DATA " + JSON.stringify(newData))
// newData.map((item => {
// let abc = item[0].category
// }))
this.props._scrollView.scrollTo({ y: 1 * 100 }); this.props._scrollView.scrollTo({ y: 1 * 100 });
} }
handleAdd(item, index) { handleAdd(item, index) {
console.log('TAMPILIN NIH')
const order_item = { const order_item = {
id: item.id, id: item.id,
code:item.code,
name: item.name, name: item.name,
description: item.description,
note:'jangan garing',
price: item.price, price: item.price,
image: item.image image: item.image
} }
this.props.addToChart(order_item) this.props.addToChart(order_item)
// console.log("ORDER ITEM " + this.props.order_item)
const list_order_item = this.props.order_item; const list_order_item = this.props.order_item;
let is_xist = list_order_item.find(row => row.id == item.id) let is_xist = list_order_item.find(row => row.id == item.id)
let quantity = 0 let quantity = 0
// for (let i = 0; i < list_order_item.length; i++) {
// const row = list_order_item[i];
// if (row.id == item.id) {
// quantity = row.quantity
// }
// }
if (is_xist) { if (is_xist) {
quantity = is_xist.quantity quantity = is_xist.quantity
} }
const listMenu = [...this.state.listMenu] const listMenu = [...this.state.listMenu]
// console.log("INI COY YYYY QUANTITY " + quantity)
listMenu[index].qty = quantity listMenu[index].qty = quantity
this.setState({ this.setState({
listMenu listMenu
...@@ -173,7 +148,6 @@ class MenuSelection extends React.Component { ...@@ -173,7 +148,6 @@ class MenuSelection extends React.Component {
id: item.id, id: item.id,
name: item.name, name: item.name,
price: item.price, price: item.price,
} }
this.props.reduceQuantityItem(order_item) this.props.reduceQuantityItem(order_item)
} }
...@@ -280,7 +254,7 @@ const styles = StyleSheet.create({ ...@@ -280,7 +254,7 @@ const styles = StyleSheet.create({
}) })
const mapStateToProps = (state) => { const mapStateToProps = (state) => {
console.log(state)
return { return {
session_id: state.session_id, session_id: state.session_id,
outlet_id: state.outlet_id, outlet_id: state.outlet_id,
......
...@@ -7,7 +7,11 @@ import { Card } from 'react-native-shadow-cards' ...@@ -7,7 +7,11 @@ import { Card } from 'react-native-shadow-cards'
import { Entypo, Ionicons, MaterialCommunityIcons, MaterialIcons, AntDesign, FontAwesome } from '@expo/vector-icons' import { Entypo, Ionicons, MaterialCommunityIcons, MaterialIcons, AntDesign, FontAwesome } from '@expo/vector-icons'
import i18n from 'i18n-js'; import i18n from 'i18n-js';
import CurrencyFormat from 'react-currency-format'; import CurrencyFormat from 'react-currency-format';
import ItemShoping from './ItemShopingCart';
import Axios from 'axios' import Axios from 'axios'
import ActionType from '../redux/globalActionType';
import { YellowBox } from 'react-native';
YellowBox.ignoreWarnings(['VirtualizedLists should never be nested']);
class ShoppingCart extends React.Component { class ShoppingCart extends React.Component {
constructor(props) { constructor(props) {
...@@ -23,39 +27,13 @@ class ShoppingCart extends React.Component { ...@@ -23,39 +27,13 @@ class ShoppingCart extends React.Component {
ongkir: 0, ongkir: 0,
diskon: 0, diskon: 0,
isDelivery: false, isDelivery: false,
isPickUp: false isPickUp: false,
order_item: this.props.order_item
// dummyBalance : 155000, // dummyBalance : 155000,
// dummyPoint : 20000 // dummyPoint : 20000
} }
} }
minusQty(item, index) {
const listMenu = [...this.state.listMenu]
let hasil = [];
if (listMenu[index].qty !== 0) {
listMenu[index].qty -= 1
this.setState({
listMenu
})
// hasil.push(listMenu[index].qty);
// console.log("INI HASILNYA : " + JSON.stringify(hasil))
}
}
plusQty(item, index) {
this.setState({
shopingCart: item
})
const listMenu = [...this.state.listMenu]
listMenu[index].qty += 1
this.setState({
listMenu,
})
}
checkChangeTrans(val) { checkChangeTrans(val) {
console.log('hai lg di sini') console.log('hai lg di sini')
...@@ -74,23 +52,67 @@ class ShoppingCart extends React.Component { ...@@ -74,23 +52,67 @@ class ShoppingCart extends React.Component {
console.log('ini pickup') console.log('ini pickup')
} }
} }
handleMin(item, index) {
const list_order_item = this.props.order_item;
let is_xist = list_order_item.find(row => row.id == item.id)
if (is_xist) {
if (is_xist.quantity != 0) {
const order_item = {
id: item.id,
name: item.name,
price: item.price,
}
this.props.reduceQuantityItem(order_item)
let quantity = 0
for (let i = 0; i < list_order_item.length; i++) {
const row = list_order_item[i];
const qty = list_order_item[i];
if (row.id == item.id) {
quantity = row.quantity
}
const listMenu = [...this.state.listMenu]
listMenu[index].qty = quantity
this.setState({
listMenu
})
}
} else if (is_xist.quantity == 0) {
const order_item = {
id: item.id,
name: item.name,
price: item.price,
}
this.props.removeFromChart(order_item)
}
}
}
handleAdd(item, index) { handleAdd(item, index) {
const order_item = { const order_item = {
id: item.id, id: item.id,
code:item.code,
name: item.name, name: item.name,
description: item.description,
note:'jangan garing',
price: item.price, price: item.price,
image: item.image image: item.image
} }
this.props.addToChart(order_item) this.props.addToChart(order_item)
const list_order_item = this.props.order_item; const list_order_item = this.props.order_item;
let is_xist = list_order_item.find(row => row.id == item.id)
let quantity = 0 let quantity = 0
for (let i = 0; i < list_order_item.length; i++) { if (is_xist) {
const row = list_order_item[i]; quantity = is_xist.quantity
if (row.id == item.id) {
quantity = row.quantity
}
} }
const listMenu = [...this.state.listMenu] const listMenu = [...this.state.listMenu]
...@@ -99,33 +121,6 @@ class ShoppingCart extends React.Component { ...@@ -99,33 +121,6 @@ class ShoppingCart extends React.Component {
listMenu listMenu
}) })
} }
handleMin(item, index) {
const order_item = {
id: item.id,
name: item.name,
price: item.price,
}
this.props.reduceQuantityItem(order_item)
const list_order_item = this.props.order_item;
let quantity = 0
if (quantity != 0) {
quantity = quantity - 1
for (let i = 0; i < list_order_item.length; i++) {
const row = list_order_item[i];
if (row.id == item.id) {
quantity = row.quantity
}
}
const listMenu = [...this.state.listMenu]
listMenu[index].qty = quantity
this.setState({
listMenu
})
}
}
checkedSelection(val) { checkedSelection(val) {
// console.log(val) // console.log(val)
...@@ -171,7 +166,80 @@ class ShoppingCart extends React.Component { ...@@ -171,7 +166,80 @@ class ShoppingCart extends React.Component {
} }
componentDidMount() { componentDidMount() {
this.getMenuList()
this.getBalance() this.getBalance()
// this.getRate()
console.log(" INI RESPONNYA : " +JSON.stringify(this.props.order_item))
}
getMenuList() {
let params = {
outlet_id: "dec1abbb-95d0-46ae-a6cd-2bf306590f15"
}
Axios.post('https://excelsocrm.ravintoladev.com/crm/v2/menu/get_list', params).then(res => {
let data = res.data.data
this.setState({
listCategory: data.category,
listMenu: data.menu
})
let last_category = ''
let list_menu = []
for (let i = 0; i < data.menu.length; i++) {
const row = data.menu[i];
// cari sudah ada belum di redux
let is_xist = this.props.order_item.find(item => row.id == item.id)
if (is_xist) {
row['qty'] = is_xist.quantity
} else {
row['qty'] = 0
}
if (last_category != row.category.name) {
let category = {
"id": row.category.id,
"name": row.category.name,
"code": "CATEGORY"
}
list_menu.push(category)
list_menu.push(row)
last_category = row.category.name
} else {
list_menu.push(row)
}
}
this.setState({
listMenu: list_menu
})
})
}
getRate() {
let params = {
session_id: this.props.session_id,
outlet_id: '0cb81ffe0c8242bea42d39c9b92ccaac',
address_id: 'bf06f7e939134f058887b312f8f93435',
order_item: this.props.order_item
}
console.log("INI PARAMETER : " + params);
Axios.post('https://excelsocrm.ravintoladev.com/crm/v2/delivery/rate', params).then(res => {
console.log("INI : " + res.data)
}).catch(error => {
console.log('ini error ' + error)
})
} }
getBalance() { getBalance() {
...@@ -213,8 +281,6 @@ class ShoppingCart extends React.Component { ...@@ -213,8 +281,6 @@ class ShoppingCart extends React.Component {
<Text style={{ textAlign: 'center' }}>{this.props.address}</Text> <Text style={{ textAlign: 'center' }}>{this.props.address}</Text>
</Card> </Card>
) : ( ) : (
<Card style={{ margin: 5, padding: 10 }}> <Card style={{ margin: 5, padding: 10 }}>
<Text style={{ textAlign: 'center' }}> Pesanan kamu dikirim ke</Text> <Text style={{ textAlign: 'center' }}> Pesanan kamu dikirim ke</Text>
...@@ -230,40 +296,17 @@ class ShoppingCart extends React.Component { ...@@ -230,40 +296,17 @@ class ShoppingCart extends React.Component {
</TouchableOpacity> </TouchableOpacity>
</View> </View>
<View style={styles.order}> <View style={styles.order}>
<FlatList
{this.props.order_item.map((item, index) => { data={this.state.order_item}
return ( renderItem={({ item, index }) => (
<View style={{ flex: 1, margin: 10 }} key={index}> <ItemShoping navigation={this.props.navigation}
<View style={{ flexDirection: 'row' }}> item={item}
<View > handleAdd={() => this.handleAdd(item, index)}
<Image source={{ uri: item.image }} style={{ height: 100, width: 100, borderRadius: 5, top: 5 }}></Image> handleMin={() => this.handleMin(item, index)}
</View> />
<View > )}
<Text style={{ fontSize: 20, margin: 5, marginRight: 10, fontWeight: 'bold' }}>{item.name}</Text> keyExtractor={item => item.id}
<Text style={{ fontSize: 15, margin: 5, marginRight: 10 }}>Rp. {item.price}</Text> />
<View style={{ flexDirection: 'row', flex: 1 }}>
<View style={styles.shadowEdit}></View>
<View style={styles.shadowAdd}>
<TouchableOpacity onPress={() => this.props.handleMin(item,index)}>
<Text style={{ fontSize: 20, margin: 2 }}> - </Text>
</TouchableOpacity>
<TextInput
style={{ height: 25, padding: 2, textAlign: 'center', margin: 2 }}
autoCapitalize="none">
{item.quantity}
</TextInput>
<TouchableOpacity onPress={() => this.props.handleAdd(item,index)}>
<Text style={{ fontSize: 20, margin: 2 }}> + </Text>
</TouchableOpacity>
</View>
</View>
</View>
</View>
</View>
)
})}
</View> </View>
<View style={styles.voucher}> <View style={styles.voucher}>
<TouchableOpacity> <TouchableOpacity>
...@@ -460,7 +503,7 @@ class ShoppingCart extends React.Component { ...@@ -460,7 +503,7 @@ class ShoppingCart extends React.Component {
</View> </View>
</View> </View>
<View style={{ margin: 20, }}> <View style={{ margin: 20, }}>
<Button title='Checkout' color='#ccb46c' onPress={() => this.props.navigation.navigate('Confirm Your Order', {balanceUsed: this.state.balanceused, pointused : this.state.pointsused})} /> <Button title='Checkout' color='#ccb46c' onPress={() => this.getRate()} />
</View> </View>
</View> </View>
</ScrollView> </ScrollView>
...@@ -602,18 +645,30 @@ const styles = StyleSheet.create({ ...@@ -602,18 +645,30 @@ const styles = StyleSheet.create({
const mapDispatchToProps = (dispacth) => { const mapDispatchToProps = (dispacth) => {
return { return {
//REDUCE QUANTITY ITEM
reduceQuantityItem: (item) => dispacth({ addToChart: (item) => dispacth({
type: ActionType.REDUCE_QUANTITY_ITEM, type: ActionType.ADD_TO_CHART,
data: { data: {
item: item item: item
} }
}), }),
//REDUCE QUANTITY ITEM
reduceQuantityItem: (item) => dispacth({
type: ActionType.REDUCE_QUANTITY_ITEM,
data: {
item: item
}
}),
removeFromChart: (item) => dispacth({
type: ActionType.REMOVE_FROM_CHART,
data: {
item: item
}
}),
} }
} }
const mapStateToProps = (state) => { const mapStateToProps = (state) => {
console.log(state)
return { return {
session_id: state.session_id, session_id: state.session_id,
outlet_id: state.outlet_id, outlet_id: state.outlet_id,
...@@ -621,9 +676,10 @@ const mapStateToProps = (state) => { ...@@ -621,9 +676,10 @@ const mapStateToProps = (state) => {
order_total: state.order_total, order_total: state.order_total,
order_item: state.order_item, order_item: state.order_item,
quantity: state.quantity, quantity: state.quantity,
address: state.address address: state.address,
addressId: state.addressId
} }
} }
export default connect(mapStateToProps,mapDispatchToProps)(ShoppingCart) export default connect(mapStateToProps, mapDispatchToProps)(ShoppingCart)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment