{"version":3,"sources":["/Users/echk/reactNative/hippo-react-native/src/ShowPayment.js","/Users/echk/reactNative/hippo-react-native/src/PaymentMethod.js","/Users/echk/reactNative/hippo-react-native/src/serverPath.js","/Users/echk/reactNative/hippo-react-native/src/Login.js","/Users/echk/reactNative/hippo-react-native/src/AppChecking.js","/Users/echk/reactNative/hippo-react-native/src/ProductList.js","/Users/echk/reactNative/hippo-react-native/src/ShowProduct.js","/Users/echk/reactNative/hippo-react-native/src/CreateProduct.js","/Users/echk/reactNative/hippo-react-native/src/EditProduct.js","/Users/echk/reactNative/hippo-react-native/src/CreateCategory.js","/Users/echk/reactNative/hippo-react-native/src/Register.js","/Users/echk/reactNative/hippo-react-native/src/StockIn.js","/Users/echk/reactNative/hippo-react-native/src/StockOutList.js","/Users/echk/reactNative/hippo-react-native/src/StockOut.js","/Users/echk/reactNative/hippo-react-native/src/SelectAction.js","/Users/echk/reactNative/hippo-react-native/src/OrderList.js","/Users/echk/reactNative/hippo-react-native/src/OrderDetail.js","/Users/echk/reactNative/hippo-react-native/src/App.js","/Users/echk/reactNative/hippo-react-native/App.js","/Users/echk/reactNative/hippo-react-native/web-build/register-service-worker.js","/Users/echk/reactNative/hippo-react-native/src/image/hippos_banner.png"],"names":["props","state","payment_method","View","to","Text","this","location","payment_method_id","name","created_at","Component","handlePress","payment_methods","history","push","a","async","fetch","path","Accept","JSON","stringify","version","platform","method","headers","_body","value","then","response","json","console","error","data","setState","FlatList","showsVerticalScrollIndicator","renderItem","item","TouchableOpacity","onPress","keyExtractor","PaymentMethod","Login","username","password","uuid","token","logined","event","login","result","Platform","OS","alert","result_message","Alert","text","log","cancelable","user_info","AsyncStorage","setItem","removeItem","getItem","pathname","style","styles","container","Image","image","source","require","login_border","listedItem","TextInput","input","textContentType","placeholder","onChangeText","handleUserNameChange","bind","secureTextEntry","handlePasswordChange","onSubmitEditing","marginTop","large","title","onPressButton","onPressRegisterButton","email","push_key","device","os_version","StyleSheet","create","flex","alignItems","justifyContent","fontSize","margin","borderWidth","borderColor","height","width","borderRadius","padding","alignSelf","resizeMode","maxWidth","loginByToken","AppChecking","app_user_info","userInfo","parse","categories","shops","ProductList","products","handlePagePress","page","getShopProducts","shopId","product","cover","pagination","onPressBack","shopItem","pages","getshops","shop","label","id","i","total_page","horizontal","ActivityIndicator","size","color","flexDirection","marginLeft","marginBottom","onCreateCategory","marginRight","pickerSelectStyles","onValueChange","onSelect","items","itemDimension","list_border","name_en","inventory","price","ItemSeparatorComponent","space","listedPageNum","shop_id","all_langs","textDecorationLine","border","flexGrow","inputIOS","paddingLeft","paddingRight","inputAndroid","ShowProduct","CreateProduct","_onCategorySelect","categoryIDs","RNchecked","_onShopSelect","shopIDs","_handleImage","uri","startIndex","indexOf","b64","substr","byteCharacters","atob","byteNumbers","Array","length","charCodeAt","byteArray","Uint8Array","Blob","type","images","previewImage","forEach","_listEmptyComponent","image_uri","sku","name_zh_TW","name_zh_CN","description_en","description_zh_TW","description_zh_CN","packing_en","packing_zh_TW","packing_zh_CN","short_description_en","short_description_zh_TW","short_description_zh_CN","bar_code","keywords","categoryItems","shopItems","show","textInput","keyword","keyword_withno_space","replace","split","createProduct","category_items","shop_items","index","splice","textStyle","dataSource","itemShowKey","itemCheckedKey","iconSize","formHorizontal","labelHorizontal","onChecked","inputfield","onComplete","extraData","theme","handleRemoveImage","ListEmptyComponent","colors","primary","shop_ids","category_ids","FormData","append","EditProduct","onBack","onStockIn","onStockOut","product_id","remove_image_ids","imageIDs","categiriesArray","categriesIDs","category","categriesID","shopArray","shopID","keywordsArray","keywordNames","imagesArray","imagePaths","previewImages","includes","bannner","CreateCategory","createCategory","getCategory","Register","warning_company_name","warning_email","warning_password","warning_confirm_password","warning_verification_code","warning_country_code","warning_phone","warning_password_not_match","company_name","confirm_password","verification_code","country_code","phone","counting_text","count_time","is_timer","interval","setInterval","prevState","sendVerification","first_name","last_name","register","clearInterval","warning_item","onSendVerification","textAlign","StockIn","product_name","packing","batch_number","cost","qty","product_array","Number","stockIn","StockOutList","stocks","stock","stockHistories","product_cover_image","contentContainerStyle","remaining_qty","list_border_w_color","backgroundColor","StockOut","stock_id","stockOut_qty","remark","description","stockOut","inputArea","multiline","numberOfLines","SelectAction","select","onCreateOrder","onCheckRecord","onLogout","OrderList","order","orders","getOrders","status","listedItemBold","order_number","find","amount","listedItemComplete","listedItemPending","order_id","toString","listedItemCancel","fontWeight","OrderDetail","getOrderDetail","leftlistedItem","rightlistedItem","orderItem","leftorderItem","App","exact","render","paddingTop","navigator","window","addEventListener","serviceWorker","scope","info","catch","module","exports"],"mappings":"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","file":"static/js/app.d5040246.chunk.js","sourcesContent":["import React, { Component } from 'react';\nimport { View, Text, Image } from 'react-native';\nimport { Link } from './routing';\nclass ShowPayment extends Component {\n\n  constructor(props) {\n    super(props);\n    this.state = {\n      payment_method: null\n    };\n  }\n\n  componentDidMount() {\n \n  }\n\n  render() {\n    return (\n      <View >\n        <Link to=\"/\">\n          <Text>Go Back</Text>\n        </Link>\n        <View>\n          <Text>{`#${this.props.location.state.payment_method_id}`}</Text>\n        </View>\n        <View>\n          <Text>{this.props.location.state.name}</Text>\n        </View>\n        <View>\n          <Text>{this.props.location.state.created_at}</Text>\n        </View>\n      </View>\n    );\n  }\n}\n\n\nexport default ShowPayment;","import React, { Component } from 'react';\nimport { View, Text, FlatList, TouchableOpacity } from 'react-native';\nimport ShowPayment from './ShowPayment';\n\nclass PaymentMethod extends Component {\n\n\n  handlePress = payment_methods => {\n    this.props.history.push('/showPayment', payment_methods);\n  };\n\n  constructor(props) {\n    super(props);\n    this.state = {\n      payment_methods: null\n    };\n  }\n\n  componentDidMount() {\n    getAppChecking().then(data => {\n      this.setState({\n        payment_methods: data.data.payment_methods\n      });\n    });\n  }\n\n  render() {\n    return (\n      <View >\n        <FlatList\n          data={this.state.payment_methods}\n          showsVerticalScrollIndicator={false}\n          renderItem={({ item }) =>\n            <TouchableOpacity onPress={() => this.handlePress(item)}>\n              <Text>{item.name}</Text>\n            </TouchableOpacity>\n          }\n          keyExtractor={item => item.name}\n        />\n      </View>\n    );\n  }\n}\n\nasync function getAppChecking() {\n  try {\n    return fetch(path + 'appChecking', {\n      method: 'POST',\n      headers: {\n        Accept: 'application/json',\n        'Content-Type': 'application/json',\n        'Access-Control-Allow-Origin': '*',\n      },\n      _body: JSON.stringify({\n        version: '1',\n        platform: 'ios',\n      }),\n      get body() {\n        return this._body;\n      },\n      set body(value) {\n        this._body = value;\n      },\n    })\n      .then((response) => response.json())\n    // return responseJson.data.payment_methods;\n  }\n  catch (error) {\n    console.error(error);\n  }\n}\n\nexport default PaymentMethod;","//production\nexport default 'https://pos.hippos.systems/api/'\n\n//testing\n//export default 'https://hippos.beuniquewedding.com/api/'","import React, { Component } from 'react';\nimport { Image, StyleSheet, Alert, View, TextInput, Text, Platform } from 'react-native';\nimport { Button } from 'react-native-elements';\nimport Icon from 'react-native-vector-icons/FontAwesome';\nimport { AsyncStorage } from 'react-native';\nimport { Redirect } from 'react-router';\nimport DashedBorder from 'react-native-dashed-border';\nimport path from './serverPath.js'\n\n\nclass Login extends Component {\n\n    //   handlePress = payment_methods => {\n    //     this.props.history.push('/showPayment', payment_methods);\n    //   };\n\n    constructor(props) {\n        super(props);\n        this.state = {\n            username: \"\",\n            password: \"\",\n            uuid: \"\",\n            token: \"\",\n            logined: false,\n        };\n    }\n\n    handleUserNameChange(event = {}) {\n        const username = event;\n        this.setState({\n            username: username\n        });\n    }\n\n    handlePasswordChange(event = {}) {\n        const password = event;\n        this.setState({\n            password: password\n        });\n    }\n\n    onPressRegisterButton() {\n        this.props.history.push('/register');\n    }\n\n    login() {\n        login(this.state.username, this.state.password, this.state.uuid, this.state.token).then(data => {\n            if (data.result == 408) {\n                if (Platform.OS === 'web') {\n                    alert(data.result_message)\n                } else {\n                    Alert.alert(\n                        'Please Try Again',\n                        data.result_message,\n                        [\n                            { text: 'OK', onPress: () => console.log('OK Pressed') },\n                        ],\n                        { cancelable: false }\n                    )\n                }\n            } else {\n                const user_info = JSON.stringify(data.data.user_info)\n                AsyncStorage.setItem('user_info', user_info)\n                AsyncStorage.removeItem(\"app_user_info\");\n                this.setState({\n                    logined: true,\n                })\n            }\n        });\n    }\n\n    onPressButton() {\n        login(this.state.username, this.state.password, this.state.uuid, this.state.token).then(data => {\n\n            if (data.result == 408) {\n                if (Platform.OS === 'web') {\n                    alert(data.result_message)\n                } else {\n                    Alert.alert(\n                        'Please Try Again',\n                        data.result_message,\n                        [\n                            { text: 'OK', onPress: () => console.log('OK Pressed') },\n                        ],\n                        { cancelable: false }\n                    )\n                }\n            } else {\n                const user_info = JSON.stringify(data.data.user_info)\n                AsyncStorage.setItem('user_info', user_info)\n                AsyncStorage.removeItem(\"app_user_info\");\n                this.setState({\n                    logined: true,\n                })\n            }\n        });\n    }\n\n\n    async componentDidMount() {\n        try {\n            this.state.uuid = await AsyncStorage.getItem('uuid')\n            this.state.token = await AsyncStorage.getItem('token')\n        } catch (error) {\n\n        }\n    }\n\n    render() {\n        if (!this.state.logined) {\n            return (\n                <View style={styles.container}>\n                    <Image style={styles.image} source={require('./image/hippos_banner.png')} />\n                    <View style={styles.login_border}>\n                        <Text style={styles.listedItem}>Username</Text>\n                        <TextInput\n                            style={styles.input}\n                            textContentType=\"username\"\n                            placeholder=\"Email\"\n                            onChangeText={this.handleUserNameChange.bind(this)}\n                            value={this.state.username}\n                        />\n                        <Text style={styles.listedItem}>Password</Text>\n                        <TextInput\n                            style={styles.input}\n                            secureTextEntry={true}\n                            textContentType=\"password\"\n                            placeholder=\"Password\"\n                            onChangeText={this.handlePasswordChange.bind(this)}\n                            onSubmitEditing={this.login.bind(this)}\n                            value={this.state.password}\n                        />\n                        <Button\n                            style={{ marginTop: 10 }}\n                            large\n                            title=\"Login\"\n                            onPress={this.onPressButton.bind(this)}\n                        />\n                        <Button\n                            style={{ marginTop: 10 }}\n                            large\n                            title=\"Register\"\n                            onPress={this.onPressRegisterButton.bind(this)}\n                        />\n                    </View>\n\n                </View>\n            );\n        } else {\n            return (\n                <Redirect to={{\n                    pathname: '/',\n                }}\n                />\n            )\n        }\n    }\n}\n\nasync function login(email, password, uuid, token) {\n    try {\n        return fetch(path + 'login', {\n            method: 'POST',\n            headers: {\n                Accept: 'application/json',\n                'Content-Type': 'application/json',\n                'Access-Control-Allow-Origin': '*',\n            },\n            _body: JSON.stringify({\n                email: email,\n                password: password,\n                uuid: uuid,\n                token: token,\n                push_key: \"null\",\n                version: '1',\n                device: 'React Native',\n                os_version: '1',\n                platform: 'ios',\n            }),\n            get body() {\n                return this._body;\n            },\n            set body(value) {\n                this._body = value;\n            },\n        })\n            .then((response) => response.json())\n        // return responseJson.data.payment_methods;\n    }\n    catch (error) {\n        console.error(error);\n    }\n}\n\nconst styles = StyleSheet.create({\n    container: {\n        flex: 1,\n        alignItems: 'center',\n        justifyContent: 'center',\n    },\n    listedItem: {\n        fontSize: 20,\n        margin: 5,\n    },\n    input: {\n        fontSize: 20,\n        margin: 5,\n        borderWidth: 2,  // size/width of the border\n        borderColor: 'lightgrey',  // color of the border\n        height: 30\n    },\n    login_border: {\n        marginTop: 20,\n        width: '40%',\n        borderColor: '#000',\n        borderRadius: 5,\n        borderWidth: 2,\n        padding: 10,\n    },\n    image: {\n        padding: 10, alignSelf: 'center',\n        resizeMode: \"stretch\",\n        flex: 1,\n        width: '50%',\n        maxWidth: '100%',\n        height: 200,\n    }\n});\n\nexport default Login;","import React, { Component } from 'react';\nimport { View, Text, FlatList, TouchableOpacity, TabBarIOS } from 'react-native';\nimport ShowPayment from './ShowPayment';\nimport { Redirect } from 'react-router';\nimport { AsyncStorage } from 'react-native';\nimport path from './serverPath.js'\n\nclass AppChecking extends Component {\n\n    constructor(props) {\n        super(props);\n        this.state = {\n            result_message: \"\",\n            payment_methods: null,\n            logined: \"\",\n        };\n    }\n\n    async componentDidMount() {\n        const uuid = await AsyncStorage.getItem('uuid');\n        const token = await AsyncStorage.getItem('token');\n        const user_info = await AsyncStorage.getItem('user_info');\n        getAppChecking().then(data => {\n            this.setState({\n                result_message: data.result_message,\n                payment_methods: data.data.payment_methods\n            });\n            try {\n                if (uuid == null && token == null || user_info == null || uuid == 'null' && token == 'null' || user_info == 'null') {\n                    checkLoginByToken().then(data => {\n                        if (data.data.app_user_info != null) {\n                            AsyncStorage.setItem('uuid', data.data.app_user_info.uuid);\n                            AsyncStorage.setItem('token', data.data.app_user_info.token);\n                            AsyncStorage.setItem('app_user_info', JSON.stringify(data.data.app_user_info))\n                            this.setState({\n                                logined: \"unlogin\"\n                            })\n                        } else if (data.data.user_info != null) {\n\n                        }\n                    });\n                }\n                else {\n                    const userInfo = JSON.parse(user_info);\n                    loginByToken(uuid, token, userInfo.email).then(data => {\n                        AsyncStorage.setItem('user_info', JSON.stringify(data.data.user_info))\n                        AsyncStorage.setItem('categories', JSON.stringify(data.data.categories))\n                        AsyncStorage.setItem('shops', JSON.stringify(data.data.shops))\n                        this.setState({\n                            logined: \"logined\"\n                        })\n                    });\n                }\n            } catch (error) {\n                // Error retrieving data\n            }\n        });\n    }\n\n    render() {\n        if (this.state.result_message === 'success' && this.state.logined === 'unlogin') {\n            return (\n                <Redirect to={{\n                    pathname: '/login',\n                    state: this.state\n                }}\n                />\n            )\n        } else if (this.state.result_message === 'success' && this.state.logined === 'logined') {\n            // return (\n            //     <View >\n            //         <Text>Auto Login Success!!</Text>\n            //     </View>\n            // )\n            return (\n                <Redirect to={{\n                    // pathname: '/productlist',\n                    pathname: '/selectAction',\n                }}\n                />\n            )\n        } else {\n            return (\n                <View >\n\n                </View>\n            );\n        }\n    }\n}\n\nasync function loginByToken(uuid, token, email) {\n    try {\n        return fetch(path + 'loginByToken', {\n            method: 'POST',\n            headers: {\n                Accept: 'application/json',\n                'Content-Type': 'application/json',\n                'Access-Control-Allow-Origin': '*',\n            },\n            _body: JSON.stringify({\n                version: '1',\n                device: 'React Native',\n                os_version: '1',\n                platform: 'ios',\n                uuid: uuid,\n                token: token,\n                username: email,\n            }),\n            get body() {\n                return this._body;\n            },\n            set body(value) {\n                this._body = value;\n            },\n        })\n            .then((response) => response.json())\n        // return responseJson.data.payment_methods;\n    }\n    catch (error) {\n        console.error(error);\n    }\n}\n\nasync function checkLoginByToken(serverPath) {\n    try {\n        return fetch(path + 'loginByToken', {\n            method: 'POST',\n            headers: {\n                Accept: 'application/json',\n                'Content-Type': 'application/json',\n                'Access-Control-Allow-Origin': '*',\n            },\n            _body: JSON.stringify({\n                version: '1',\n                device: 'React Native',\n                os_version: '1',\n                platform: 'ios',\n            }),\n            get body() {\n                return this._body;\n            },\n            set body(value) {\n                this._body = value;\n            },\n        })\n            .then((response) => response.json())\n        // return responseJson.data.payment_methods;\n    }\n    catch (error) {\n        console.error(error);\n    }\n}\n\nasync function getAppChecking() {\n    try {\n        return fetch(path + 'appChecking', {\n            method: 'POST',\n            headers: {\n                Accept: 'application/json',\n                'Content-Type': 'application/json',\n                'Access-Control-Allow-Origin': '*',\n            },\n            _body: JSON.stringify({\n                version: '1',\n                platform: 'ios',\n            }),\n            get body() {\n                return this._body;\n            },\n            set body(value) {\n                this._body = value;\n            },\n        })\n            .then((response) => response.json())\n        // return responseJson.data.payment_methods;\n    }\n    catch (error) {\n        console.error(error);\n    }\n}\n\nexport default AppChecking;","import React, { Component } from 'react';\nimport { Image, StyleSheet, View, Text, FlatList, TouchableOpacity, ActivityIndicator } from 'react-native';\nimport { ThemeProvider, Button } from 'react-native-elements';\nimport { AsyncStorage } from 'react-native';\nimport RNPickerSelect from 'react-native-picker-select';\nimport path from './serverPath.js'\nimport { FlatGrid } from 'react-native-super-grid';\n\n\nclass ProductList extends Component {\n\n\n  handlePress = products => {\n    this.props.history.push('/editProduct', products);\n  };\n\n  handlePagePress = page => {\n    getShopProducts(this.state.uuid, this.state.token, this.state.username, this.state.shopId, page).then(data => {\n      var products = data.data.products\n\n      for (let product of products) {\n        if (product.cover == \"\" || product.cover == null) {\n          product.cover = 'http://hippos.beuniquewedding.com/img/icon.png'\n        }\n      }\n\n      this.setState({\n        products,\n        pagination: data.data.pagination,\n      });\n    });\n  };\n\n\n  onPressButton() {\n    this.props.history.push('/createProduct');\n  }\n\n  onCreateCategory() {\n    this.props.history.push('/createCategory');\n  }\n\n  constructor(props) {\n    super(props);\n    this.state = {\n      shops: null,\n      shopItem: [],\n      shopId: '',\n      products: null,\n      pagination: null,\n      pages: null,\n      uuid: '',\n      token: '',\n      username: '',\n    };\n  }\n\n  async componentDidMount() {\n\n    const uuid = await AsyncStorage.getItem('uuid');\n    const token = await AsyncStorage.getItem('token');\n    const user_info = await AsyncStorage.getItem('user_info');\n    const userInfo = JSON.parse(user_info);\n\n    this.setState({\n      uuid,\n      token,\n      username: userInfo.email,\n    })\n\n    getshops(uuid, token, userInfo.email).then(data => {\n      const shops = data.data.shops\n      var shopItem = [];\n      for (let shop of shops) {\n        shopItem.push({ label: shop.name, value: shop.id });\n      }\n\n      this.setState({ shops, shopItem, shopId: shops[0].id })\n\n      getShopProducts(uuid, token, userInfo.email, shops[0].id, '1').then(data => {\n        var pages = [];\n        for (var i = 1; i <= data.data.pagination.total_page; i++) {\n          pages.push(i);\n        }\n\n        var products = data.data.products\n        for (let product of products) {\n          if (product.cover == \"\" || product.cover == null) {\n            product.cover = 'http://hippos.beuniquewedding.com/img/icon.png'\n          }\n        }\n\n        this.setState({\n          products,\n          pagination: data.data.pagination,\n          pages,\n        });\n      });\n    })\n\n\n    // getProducts(uuid, token, userInfo.email, '1').then(data => {\n    //   console.log(data);\n\n    //   var pages = [];\n    //   for (var i = 1; i <= data.data.pagination.total_page; i++) {\n    //     pages.push(i);\n    //   }\n\n    //   var products = data.data.products\n    //   for (let product of products) {\n    //     if (product.cover == \"\" || product.cover == null) {\n    //       product.cover = 'http://hippos.beuniquewedding.com/img/icon.png'\n    //     }\n    //   }\n\n    //   console.log(products);\n\n    //   this.setState({\n    //     products,\n    //     pagination: data.data.pagination,\n    //     pages,\n    //     uuid,\n    //     token,\n    //     username: userInfo.email,\n    //   });\n    // });\n  }\n\n  onPressBack = () => {\n    this.props.history.push('/selectAction');\n  }\n\n  onSelect(value) {\n    getShopProducts(this.state.uuid, this.state.token, this.state.username, value, '1').then(data => {\n\n      var pages = [];\n      for (var i = 1; i <= data.data.pagination.total_page; i++) {\n        pages.push(i);\n      }\n\n      var products = data.data.products\n      for (let product of products) {\n        if (product.cover == \"\" || product.cover == null) {\n          product.cover = 'http://hippos.beuniquewedding.com/img/icon.png'\n        }\n      }\n\n      this.setState({\n        products,\n        pagination: data.data.pagination,\n        pages,\n      });\n    });\n\n    this.setState({\n      shopId: value\n    })\n  }\n\n  onLogout() {\n    AsyncStorage.setItem('uuid', null);\n    AsyncStorage.setItem('token', null);\n    AsyncStorage.setItem('user_info', null)\n    this.props.history.push('/');\n  }\n\n  render() {\n    if (this.state.shopId == '' || this.state.products == null) {\n      return (\n        <View style={[styles.container, styles.horizontal]}>\n          <ActivityIndicator size=\"large\" color=\"#0000ff\" />\n        </View>\n      )\n    } else {\n      return (\n        <View >\n          <View style={{ flexDirection: 'row', width: \"100%\" }}>\n            <Image style={styles.image} source={require('./image/hippos_banner.png')} />\n            <View style={{ marginLeft: 20, padding: 10, flexDirection: 'column-reverse' }}>\n              <View style={{\n                // alignItems: \"center\",\n                width: '100%',\n                marginTop: 10,\n                marginBottom: 10\n              }}>\n                <Button\n                  title=\"新增貨品 Create Product\"\n                  onPress={this.onPressButton.bind(this)}\n                />\n              </View>\n              <Button\n                title=\"新增分類 Create Category\"\n                onPress={this.onCreateCategory.bind(this)}\n              />\n            </View>\n            <View style={{ marginLeft: 20, padding: 10, flexDirection: 'column-reverse' }}>\n\n              <View style={{\n                // alignItems: \"center\",\n                width: '100%',\n                marginTop: 10,\n                marginBottom: 10,\n                flexDirection: 'row'\n              }}>\n                <Text style={{ fontSize: 18, marginRight: 5, marginTop: 10 }}>店鋪 Shop : </Text>\n                <RNPickerSelect\n                  value={this.state.shopId}\n                  style={{ ...pickerSelectStyles }}\n                  onValueChange={this.onSelect.bind(this)}\n                  // onValueChange={(value) => console.log(value)}\n                  items={this.state.shopItem}\n                />\n              </View>\n\n\n              <Button\n                style={{ marginTop: 10 }}\n                large\n                title=\"返回 Back\"\n                onPress={this.onPressBack.bind(this)}\n              />\n              {/* <Button\n                title=\"登出 Logout\"\n                onPress={this.onLogout.bind(this)}\n              /> */}\n            </View>\n          </View>\n\n          <View >\n\n\n            <FlatGrid\n              itemDimension={300}\n              items={this.state.products}\n              renderItem={({ item }) =>\n                <TouchableOpacity onPress={() => this.handlePress(item)}>\n                  <View style={styles.list_border}>\n                    <View >\n                      <Image source={item.cover} style={styles.cover} />\n                    </View>\n                    <View>\n                      <Text style={styles.listedItem}>{item.name_en}</Text>\n                      <Text style={styles.listedItem}>{`貨存Inventory : ` + item.inventory}</Text>\n                      <Text style={styles.listedItem}>{`價錢Price : ` + item.price}</Text>\n                    </View>\n                  </View>\n                </TouchableOpacity>\n              }\n              keyExtractor={item => item.id}\n            />\n\n            {/* <FlatList\n              contentContainerStyle={{ flexGrow: 1, justifyContent: 'center' }}\n              data={this.state.products}\n              showsVerticalScrollIndicator={false}\n              renderItem={({ item }) =>\n                <TouchableOpacity onPress={() => this.handlePress(item)}>\n                  <View style={styles.list_border}>\n                    <View >\n                      <Image source={item.cover} style={styles.cover} />\n                    </View>\n                    <View>\n                      <Text style={styles.listedItem}>{`貨品名稱Name : ` + item.name_en}</Text>\n                      <Text style={styles.listedItem}>{`貨存Inventory : ` + item.inventory}</Text>\n                      <Text style={styles.listedItem}>{`價錢Price : ` + item.price}</Text>\n                    </View>\n                  </View>\n                </TouchableOpacity>\n              }\n              keyExtractor={item => item.id}\n            /> */}\n\n            {/* <View style={{\n            // alignItems: \"center\",\n            width: '100%',\n            marginTop: 10,\n            marginBottom: 10\n          }}>\n            <Button\n              title=\"新增貨品Create Product\"\n              onPress={this.onPressButton.bind(this)}\n            />\n          </View> */}\n\n            <View style={{ justifyContent: 'center', flexDirection: 'row' }}>\n              <Text style={{ fontSize: 18, marginRight: 5 }}>分頁Page:</Text>\n              <FlatList\n                data={this.state.pages}\n                ItemSeparatorComponent={this.space}\n                horizontal={true}\n                renderItem={({ item }) =>\n                  <TouchableOpacity onPress={() => this.handlePagePress(item)}>\n                    <Text style={styles.listedPageNum}>{item}</Text>\n                  </TouchableOpacity>\n                }\n              />\n            </View>\n          </View>\n        </View >\n      );\n    }\n  }\n}\n\nasync function getshops(uuid, token, email) {\n  try {\n    return fetch(path + 'inventory/shops', {\n      method: 'POST',\n      headers: {\n        Accept: 'application/json',\n        'Content-Type': 'application/json',\n        'Access-Control-Allow-Origin': '*',\n      },\n      _body: JSON.stringify({\n        version: '1',\n        platform: 'ios',\n        uuid: uuid,\n        token: token,\n        username: email,\n      }),\n      get body() {\n        return this._body;\n      },\n      set body(value) {\n        this._body = value;\n      },\n    })\n      .then((response) => response.json())\n    // return responseJson.data.payment_methods;\n  }\n  catch (error) {\n    console.error(error);\n  }\n}\n\nasync function getShopProducts(uuid, token, email, shop_id, page) {\n  try {\n    return fetch(path + 'inventory/shopProducts', {\n      method: 'POST',\n      headers: {\n        Accept: 'application/json',\n        'Content-Type': 'application/json',\n        'Access-Control-Allow-Origin': '*',\n      },\n      _body: JSON.stringify({\n        version: '1',\n        platform: 'ios',\n        uuid: uuid,\n        token: token,\n        username: email,\n        shop_id: shop_id,\n        page: page,\n        all_langs: 'yes',\n      }),\n      get body() {\n        return this._body;\n      },\n      set body(value) {\n        this._body = value;\n      },\n    })\n      .then((response) => response.json())\n    // return responseJson.data.payment_methods;\n  }\n  catch (error) {\n    console.error(error);\n  }\n}\n\nasync function getProducts(uuid, token, email, page) {\n  try {\n    return fetch(path + 'inventory/products', {\n      method: 'POST',\n      headers: {\n        Accept: 'application/json',\n        'Content-Type': 'application/json',\n        'Access-Control-Allow-Origin': '*',\n      },\n      _body: JSON.stringify({\n        version: '1',\n        platform: 'ios',\n        uuid: uuid,\n        token: token,\n        username: email,\n        page: page,\n        all_langs: 'yes',\n      }),\n      get body() {\n        return this._body;\n      },\n      set body(value) {\n        this._body = value;\n      },\n    })\n      .then((response) => response.json())\n    // return responseJson.data.payment_methods;\n  }\n  catch (error) {\n    console.error(error);\n  }\n}\n\nconst styles = StyleSheet.create({\n  listedItem: {\n    fontSize: 16,\n    // background: '#285b97',\n    borderRadius: 3,\n    padding: 5,\n    margin: 5,\n  },\n  listedPageNum: {\n    fontSize: 18,\n    marginRight: 5,\n    textDecorationLine: 'underline',\n    color: 'blue'\n  },\n  image: {\n    resizeMode: \"stretch\",\n    width: '30%',\n    height: 100,\n  }, border: {\n    marginTop: 10,\n    width: '100%',\n    borderColor: '#000',\n    borderRadius: 5,\n    borderWidth: 2,\n    padding: 10,\n  },\n  cover: {\n    resizeMode: \"stretch\",\n    flex: 1,\n    width: 120,\n    height: 100,\n  },\n  list_border: {\n    marginTop: 10,\n    width: '100%',\n    borderColor: '#000',\n    borderRadius: 5,\n    borderWidth: 2,\n    padding: 10,\n    flexGrow: 1,\n    flexDirection: 'row'\n  }\n});\n\nconst pickerSelectStyles = StyleSheet.create({\n  inputIOS: {\n    height: 40,\n    paddingLeft: 10,\n    borderWidth: 2,\n    borderColor: '#4189D6',\n    borderRadius: 4,\n    color: 'black',\n    paddingRight: 30, // to ensure the text is never behind the icon\n  },\n  inputAndroid: {\n    height: 40,\n    paddingLeft: 10,\n    borderWidth: 2,\n    borderColor: '#4189D6',\n    borderRadius: 8,\n    color: 'black',\n    paddingRight: 30, // to ensure the text is never behind the icon\n  }\n});\n\n\n\nexport default ProductList;","import React, { Component } from 'react';\nimport { View, Text, Image } from 'react-native';\nimport { Link } from './routing';\nclass ShowProduct extends Component {\n\n  constructor(props) {\n    super(props);\n    this.state = {\n      payment_method: null\n    };\n  }\n\n  componentDidMount() {\n\n  }\n\n  render() {\n    return (\n      <View >\n        <Link to=\"/productlist\">\n          <Text>Go Back</Text>\n        </Link>\n        <View>\n          <Text>{`#id : ${this.props.location.state.id}`}</Text>\n        </View>\n        <View>\n          <Text>{this.props.location.state.name}</Text>\n        </View>\n        <View>\n          <Text>{this.props.location.state.created_at}</Text>\n        </View>\n      </View>\n    );\n  }\n}\n\n\nexport default ShowProduct;","import React, { Component } from 'react';\nimport { FlatList, Image, StyleSheet, Alert, View, TextInput, Text, Platform } from 'react-native';\nimport { ThemeProvider, Button } from 'react-native-elements';\nimport Icon from 'react-native-vector-icons/FontAwesome';\nimport { AsyncStorage } from 'react-native';\nimport { Redirect } from 'react-router';\nimport RNPickerSelect from 'react-native-picker-select';\nimport CheckboxFormX from 'react-native-checkbox-form';\nimport ImagePicker from \"react-native-everywhere-image-picker\";\nimport path from './serverPath.js'\n\nclass CreateProduct extends Component {\n\n    //   handlePress = payment_methods => {\n    //     this.props.history.push('/showPayment', payment_methods);\n    //   };\n\n    constructor(props) {\n        super(props);\n        this.state = {\n            image_uri: '',\n            sku: '',\n            price: '',\n            name_en: '',\n            name_zh_TW: '',\n            name_zh_CN: '',\n            description_en: '',\n            description_zh_TW: '',\n            description_zh_CN: '',\n            packing_en: '',\n            packing_zh_TW: '',\n            packing_zh_CN: '',\n            short_description_en: '',\n            short_description_zh_TW: '',\n            short_description_zh_CN: '',\n            bar_code: '',\n            keywords: '',\n            categoryItems: null,\n            categoryIDs: null,\n            shopItems: null,\n            shopIDs: null,\n            show: false,\n            images: [],\n            previewImage: [],\n            textInput: [],\n        };\n    }\n\n    async onPressButton() {\n        const uuid = await AsyncStorage.getItem('uuid');\n        const token = await AsyncStorage.getItem('token');\n        const user_info = await AsyncStorage.getItem('user_info');\n        const userInfo = JSON.parse(user_info);\n\n        const keyword = this.state.keywords\n        const keyword_withno_space = keyword.replace(/\\s/g, '');\n        const keywords = keyword_withno_space.split(',')\n\n        var categoryIDs = this.state.categoryIDs;\n\n        if (categoryIDs == null) {\n            categoryIDs = []\n            categoryIDs.push('')\n        }\n\n        createProduct(userInfo.email, uuid, this.state.shopIDs, token, this.state.sku, this.state.price,\n            this.state.name_en, this.state.name_zh_TW, this.state.name_zh_CN,\n            this.state.description_en, this.state.description_zh_TW, this.state.description_zh_CN,\n            this.state.packing_en, this.state.packing_zh_TW, this.state.packing_zh_CN,\n            this.state.short_description_en, this.state.short_description_zh_TW, this.state.short_description_zh_CN,\n            categoryIDs, this.state.bar_code, keywords, this.state.images).then(data => {\n                this.props.history.push('/productlist');\n            });\n    }\n\n    _onCategorySelect = (items) => {\n        var categoryIDs = [];\n        for (let item of items) {\n            if (item.RNchecked) {\n                categoryIDs.push(item.value);\n            }\n        }\n        this.setState({\n            categoryIDs\n        })\n    };\n\n    _onShopSelect = (items) => {\n        var shopIDs = [];\n        for (let item of items) {\n            if (item.RNchecked) {\n                shopIDs.push(item.value);\n            }\n        }\n        this.setState({\n            shopIDs\n        })\n    };\n\n    _handleImage = ({ uri }) => {\n\n        var startIndex = uri.indexOf(\"base64,\") + 7;\n        var b64 = uri.substr(startIndex);\n        var byteCharacters = atob(b64);\n        var byteNumbers = new Array(byteCharacters.length);\n        for (var i = 0; i < byteCharacters.length; i++) {\n            byteNumbers[i] = byteCharacters.charCodeAt(i);\n        }\n        var byteArray = new Uint8Array(byteNumbers);\n        var data = new Blob([byteArray], { type: 'image/png' });\n    \n        var images = []\n        var previewImage = []\n        this.state.images.forEach((image) => {\n            images.push(image);\n        });\n        this.state.previewImage.forEach((image) => {\n            previewImage.push(image)\n        });\n        images.push(data);\n        previewImage.push(uri);\n        this.setState(() => ({ images, previewImage }));\n\n    };\n\n    async componentDidMount() {\n        const categories = JSON.parse(await AsyncStorage.getItem('categories'));\n        var categoryItems = [];\n        for (let category_items of categories) {\n            categoryItems.push({ label: category_items.name, value: category_items.id });\n        }\n\n        const shops = JSON.parse(await AsyncStorage.getItem('shops'))\n        var shopItems = [];\n        for (let shop_items of shops) {\n            shopItems.push({ label: shop_items.name, value: shop_items.shop_id });\n        }\n\n        this.setState({\n            categoryItems,\n            shopItems,\n            show: true,\n        })\n    }\n\n    // addTextInput = (key) => {\n    //     let textInput = this.state.textInput;\n    //     textInput.push(\n    //         <TextInput\n    //             style={styles.inputfield}\n    //             textContentType=\"text\"\n    //             placeholder=\"關鍵字Keywords\"\n    //             key={key}\n    //             name = {key}\n    //             onBlur={this.handleKeyWordChange.bind(this)}\n    //         />\n    //     );\n    //     this.setState({ textInput })\n    // }\n\n    // handleKeyWordChange(event) {\n    //     var keywords = this.state.keywords\n    //     keywords.push(event.nativeEvent.text)\n    //     this.setState({\n    //         keywords\n    //     });\n    // }\n\n    _listEmptyComponent = () => {\n        return (\n            <View>\n\n            </View>\n        )\n    }\n\n    onPressBack = () => {\n        this.props.history.push('/productlist');\n    }\n\n\n    handleRemoveImage(index) {\n        var images = this.state.images\n        var previewImage = this.state.previewImage\n\n        images.splice(index, 1);\n        previewImage.splice(index, 1);\n\n        this.setState({\n            images, previewImage\n        })\n    }\n\n    render() {\n        if (this.state.show) {\n            return (\n                <View>\n                    <Text style={styles.text}>店鋪Shop</Text>\n                    <CheckboxFormX\n                        style={{ width: '100%' }}\n                        textStyle={{ marginRight: 20, fontSize: 20 }}\n                        dataSource={this.state.shopItems}\n                        itemShowKey=\"label\"\n                        itemCheckedKey=\"RNchecked\"\n                        iconSize={30}\n                        formHorizontal={true}\n                        labelHorizontal={true}\n                        onChecked={(item) => this._onShopSelect(item)}\n                    />\n                    <Text style={styles.text}>SKU</Text>\n                    <TextInput\n                        style={styles.inputfield}\n                        textContentType=\"text\"\n                        placeholder=\"SKU\"\n                        onChangeText={(text) => { this.setState({ sku: text }) }}\n                        value={this.state.sku}\n                    />\n                    <Text style={styles.text}>價錢Price</Text>\n                    <TextInput\n                        style={styles.inputfield}\n                        textContentType=\"number\"\n                        placeholder=\"價錢Price\"\n                        onChangeText={(text) => { this.setState({ price: text }) }}\n                        value={this.state.price}\n                    />\n                    <Text style={styles.text}>名稱Name(EN)</Text>\n                    <TextInput\n                        style={styles.inputfield}\n                        textContentType=\"text\"\n                        placeholder=\"名稱Name(EN)\"\n                        onChangeText={(text) => { this.setState({ name_en: text }) }}\n                        value={this.state.name_en}\n                    />\n                    <Text style={styles.text}>名稱Name(繁體)</Text>\n                    <TextInput\n                        style={styles.inputfield}\n                        textContentType=\"text\"\n                        placeholder=\"名稱Name(繁體)\"\n                        onChangeText={(text) => { this.setState({ name_zh_TW: text }) }}\n                        value={this.state.name_zh_TW}\n                    />\n                    <Text style={styles.text}>名稱Name(簡體)</Text>\n                    <TextInput\n                        style={styles.inputfield}\n                        textContentType=\"text\"\n                        placeholder=\"名稱Name(簡體)\"\n                        onChangeText={(text) => { this.setState({ name_zh_CN: text }) }}\n                        value={this.state.name_zh_CN}\n                    />\n                    <Text style={styles.text}>分類Category</Text>\n                    <CheckboxFormX\n                        style={{ width: '100%' }}\n                        textStyle={{ marginRight: 20, fontSize: 20 }}\n                        dataSource={this.state.categoryItems}\n                        itemShowKey=\"label\"\n                        itemCheckedKey=\"RNchecked\"\n                        iconSize={30}\n                        formHorizontal={true}\n                        labelHorizontal={true}\n                        onChecked={(item) => this._onCategorySelect(item)}\n                    />\n                    <Text style={styles.text}>包裝Packing(EN)</Text>\n                    <TextInput\n                        style={styles.inputfield}\n                        textContentType=\"text\"\n                        placeholder=\"包裝Packing(EN)\"\n                        onChangeText={(text) => { this.setState({ packing_en: text }) }}\n                        value={this.state.packing_en}\n                    />\n                    <Text style={styles.text}>包裝Packing(繁體)</Text>\n                    <TextInput\n                        style={styles.inputfield}\n                        textContentType=\"text\"\n                        placeholder=\"包裝Packing(繁體)\"\n                        onChangeText={(text) => { this.setState({ packing_zh_TW: text }) }}\n                        value={this.state.packing_zh_TW}\n                    />\n                    <Text style={styles.text}>包裝Packing(簡體)</Text>\n                    <TextInput\n                        style={styles.inputfield}\n                        textContentType=\"text\"\n                        placeholder=\"包裝Packing(簡體)\"\n                        onChangeText={(text) => { this.setState({ packing_zh_CN: text }) }}\n                        value={this.state.packing_zh_CN}\n                    />\n                    <Text style={styles.text}>介紹Description(EN)</Text>\n                    <TextInput\n                        style={styles.inputfield}\n                        textContentType=\"text\"\n                        placeholder=\"介紹Description(EN)\"\n                        onChangeText={(text) => { this.setState({ description_en: text }) }}\n                        value={this.state.description_en}\n                    />\n                    <Text style={styles.text}>介紹Description(繁體)</Text>\n                    <TextInput\n                        style={styles.inputfield}\n                        textContentType=\"text\"\n                        placeholder=\"介紹Description(繁體)\"\n                        onChangeText={(text) => { this.setState({ description_zh_TW: text }) }}\n                        value={this.state.description_zh_TW}\n                    />\n                    <Text style={styles.text}>介紹Description(簡體)</Text>\n                    <TextInput\n                        style={styles.inputfield}\n                        textContentType=\"text\"\n                        placeholder=\"介紹Description(簡體)\"\n                        onChangeText={(text) => { this.setState({ description_zh_CN: text }) }}\n                        value={this.state.description_zh_CN}\n                    />\n                    <Text style={styles.text}>簡介Short Description(EN)</Text>\n                    <TextInput\n                        style={styles.inputfield}\n                        textContentType=\"text\"\n                        placeholder=\"簡介Short Description(EN)\"\n                        onChangeText={(text) => { this.setState({ short_description_en: text }) }}\n                        value={this.state.short_description_en}\n                    />\n                    <Text style={styles.text}>簡介Short Description(繁體)</Text>\n                    <TextInput\n                        style={styles.inputfield}\n                        textContentType=\"text\"\n                        placeholder=\"簡介Short Description(繁體)\"\n                        onChangeText={(text) => { this.setState({ short_description_zh_TW: text }) }}\n                        value={this.state.short_description_zh_TW}\n                    />\n                    <Text style={styles.text}>簡介Short Description(簡體)</Text>\n                    <TextInput\n                        style={styles.inputfield}\n                        textContentType=\"text\"\n                        placeholder=\"簡介Short Description(簡體)\"\n                        onChangeText={(text) => { this.setState({ short_description_zh_CN: text }) }}\n                        value={this.state.short_description_zh_CN}\n                    />\n\n                    <Text style={styles.text}>條碼Barcode</Text>\n                    <TextInput\n                        style={styles.inputfield}\n                        textContentType=\"text\"\n                        placeholder=\"條碼Barcode\"\n                        onChangeText={(text) => { this.setState({ bar_code: text }) }}\n                        value={this.state.bar_code}\n                    />\n\n                    <Text style={styles.text}>關鍵字Keywords</Text>\n                    <TextInput\n                        style={styles.inputfield}\n                        textContentType=\"text\"\n                        placeholder=\"關鍵字Keywords : 食物, Food, etc..\"\n                        onChangeText={(text) => { this.setState({ keywords: text }) }}\n                        value={this.state.keywords}\n                    />\n                    {/* {this.state.textInput.map((value, index) => {\n                        return value\n                    })}\n                    <Button title='+' onPress={() => this.addTextInput(this.state.textInput.length)} /> */}\n\n                    <ImagePicker onComplete={this._handleImage}>\n                        <Button\n                            style={{ marginTop: 20, marginBottom: 20 }}\n                            large\n                            title=\"選擇圖片Select Image\"\n                        />\n                    </ImagePicker>\n\n\n                    <FlatList\n                        data={this.state.previewImage}\n                        extraData={this.state}\n                        ItemSeparatorComponent={this.space}\n                        renderItem={({ item, index }) =>\n                            <View>\n                                <Image source={{ uri: item }} style={styles.image} />\n                                <ThemeProvider theme={theme} >\n                                    <Button title='Remove'\n                                        onPress={() => this.handleRemoveImage(index)} />\n                                </ThemeProvider>\n                            </View>\n                        }\n                        ListEmptyComponent={this._listEmptyComponent}\n                    />\n\n                    {/* <RNPickerSelect\n                        style={{ ...pickerSelectStyles }}\n                        onValueChange={(value) => console.log(value)}\n                        items={this.state.categoryItems}\n                    /> */}\n\n                    <Button\n                        style={{ marginTop: 20, marginBottom: 10 }}\n                        large\n                        title=\"提交 Submit\"\n                        onPress={this.onPressButton.bind(this)}\n                    />\n\n                    <Button\n                        style={{ marginBottom: 20 }}\n                        large\n                        title=\"返回 Back\"\n                        onPress={this.onPressBack.bind(this)}\n                    />\n                </View>\n            );\n        } else {\n            return (\n                <View>\n\n                </View>\n            );\n        }\n    }\n}\n\n\nconst theme = {\n    colors: {\n        primary: 'red',\n    }\n}\n\nconst styles = StyleSheet.create({\n    text: {\n        marginTop: 10,\n        marginBottom: 2,\n        fontSize: 20,\n    },\n    inputfield: {\n        borderRadius: 8,\n        borderWidth: 2,\n        color: 'black',\n        borderColor: '#4189D6',\n        paddingLeft: 10,\n        fontSize: 20,\n        height: 40\n    },\n    image: {\n        maxWidth: '100%',\n        height: 200,\n        marginTop: 25,\n        justifyContent: 'center'\n    }\n\n});\n\nasync function createProduct(email, uuid, shop_ids, token, sku, price,\n    name_en, name_zh_TW, name_zh_CN,\n    description_en, description_zh_TW, description_zh_CN,\n    packing_en, packing_zh_TW, packing_zh_CN,\n    short_description_en, short_description_zh_TW, short_description_zh_CN,\n    category_ids, bar_code, keywords, images) {\n\n    const data = new FormData();\n\n    data.append('username', email)\n    data.append('uuid', uuid);\n    data.append('shop_ids', '[' + shop_ids + ']');\n    data.append('token', token);\n    data.append('price', price);\n    data.append('enable', 'yes');\n    data.append('name_en', name_en);\n    data.append('name_zh_TW', name_zh_TW);\n    data.append('name_zh_CN', name_zh_CN);\n    data.append('description_en', description_en);\n    data.append('description_zh_TW', description_zh_TW);\n    data.append('description_zh_CN', description_zh_CN);\n    data.append('packing_en', packing_en);\n    data.append('packing_zh_TW', packing_zh_TW);\n    data.append('packing_zh_CN', packing_zh_CN);\n    data.append('short_description_en', short_description_en);\n    data.append('short_description_zh_TW', short_description_zh_TW);\n    data.append('short_description_zh_CN', short_description_zh_CN);\n    data.append('sku', sku);\n    data.append('bar_code', bar_code);\n    data.append('keywords', keywords);\n    data.append('category_ids', '[' + category_ids + ']');\n\n    images.forEach((image) => {\n        data.append('images[]', image);\n    });\n\n    try {\n        return fetch(path + 'inventory/createProduct', {\n            method: 'POST',\n            headers: {\n                // Accept: 'application/json',\n                // 'Content-Type': 'multipart/form-data',\n                'Access-Control-Allow-Origin': '*',\n            },\n            _body: data,\n            // _body: JSON.stringify({\n            //     // email : email,\n            //     // push_key : 'null',\n            //     // version: '1',\n            //     // device: 'React Native',\n            //     // os_version: '1',\n            //     // platform: 'ios',\n            //     username: email,\n            //     uuid: uuid,\n            //     shop_ids: shop_ids,\n            //     token: token,\n            //     price: price,\n            //     enable: 'yes',\n            //     name_en: name_en,\n            //     name_zh_TW: name_zh_TW,\n            //     name_zh_CN: name_zh_CN,\n            //     description_en: description_en,\n            //     description_zh_TW: description_zh_TW,\n            //     description_zh_CN: description_zh_CN,\n            //     packing_en: packing_en,\n            //     packing_zh_TW: packing_zh_TW,\n            //     packing_zh_CN: packing_zh_CN,\n            //     short_description_en: short_description_en,\n            //     short_description_zh_TW: short_description_zh_TW,\n            //     short_description_zh_CN: short_description_zh_CN,\n            //     sku: sku,\n            //     bar_code: bar_code,\n            //     keywords: keywords,\n            //     category_ids: category_ids,\n            //     images: images,\n            // }),\n            get body() {\n                return this._body;\n            },\n            set body(value) {\n                this._body = value;\n            },\n        })\n            .then((response) => response.json())\n        // return responseJson.data.payment_methods;\n    }\n    catch (error) {\n        console.error(error);\n    }\n}\n\nconst pickerSelectStyles = StyleSheet.create({\n    inputIOS: {\n        fontSize: 20,\n        height: 40,\n        paddingLeft: 10,\n        borderWidth: 2,\n        borderColor: '#4189D6',\n        borderRadius: 4,\n        color: 'black',\n        paddingRight: 30, // to ensure the text is never behind the icon\n    },\n    inputAndroid: {\n        fontSize: 20,\n        height: 40,\n        paddingLeft: 10,\n        borderWidth: 2,\n        borderColor: '#4189D6',\n        borderRadius: 8,\n        color: 'black',\n        paddingRight: 30, // to ensure the text is never behind the icon\n    }\n});\n\n\n\nexport default CreateProduct;","import React, { Component } from 'react';\nimport { FlatList, Image, StyleSheet, Alert, View, TextInput, Text, Platform } from 'react-native';\nimport { Button, ThemeProvider, ThemeConsumer } from 'react-native-elements';\nimport Icon from 'react-native-vector-icons/FontAwesome';\nimport { AsyncStorage } from 'react-native';\nimport { Redirect } from 'react-router';\nimport RNPickerSelect from 'react-native-picker-select';\nimport CheckboxFormX from 'react-native-checkbox-form';\nimport ImagePicker from \"react-native-everywhere-image-picker\";\nimport path from './serverPath.js'\n\nclass EditProduct extends Component {\n\n    //   handlePress = payment_methods => {\n    //     this.props.history.push('/showPayment', payment_methods);\n    //   };\n\n    constructor(props) {\n        super(props);\n        this.state = {\n            product: null,\n            product_id: '',\n            image_uri: '',\n            sku: '',\n            price: '',\n            name_en: '',\n            name_zh_TW: '',\n            name_zh_CN: '',\n            description_en: '',\n            description_zh_TW: '',\n            description_zh_CN: '',\n            packing_en: '',\n            packing_zh_TW: '',\n            packing_zh_CN: '',\n            short_description_en: '',\n            short_description_zh_TW: '',\n            short_description_zh_CN: '',\n            bar_code: '',\n            keywords: '',\n            categoryItems: null,\n            categoryIDs: null,\n            shopItems: null,\n            shopIDs: null,\n            show: false,\n            remove_image_ids: [],\n            imageIDs: [],\n            images: [],\n            previewImage: [],\n        };\n    }\n\n    async onPressButton() {\n        const uuid = await AsyncStorage.getItem('uuid');\n        const token = await AsyncStorage.getItem('token');\n        const user_info = await AsyncStorage.getItem('user_info');\n        const userInfo = JSON.parse(user_info);\n\n        createProduct(this.state.product_id, userInfo.email, uuid, this.state.shopIDs, token, this.state.sku, this.state.price,\n            this.state.name_en, this.state.name_zh_TW, this.state.name_zh_CN,\n            this.state.description_en, this.state.description_zh_TW, this.state.description_zh_CN,\n            this.state.packing_en, this.state.packing_zh_TW, this.state.packing_zh_CN,\n            this.state.short_description_en, this.state.short_description_zh_TW, this.state.short_description_zh_CN,\n            this.state.categoryIDs, this.state.bar_code, this.state.keywords, this.state.images, this.state.remove_image_ids).then(data => {\n                // Alert.alert(\n                //     'Update Success!',\n                //     '',\n                //     [\n                //         { text: 'OK', onPress: () => this.props.history.push('/productlist') },\n                //     ],\n                //     { cancelable: false }\n                // )\n                this.props.history.push('/productlist');\n            });\n    }\n\n\n    _onCategorySelect = (items) => {\n        var categoryIDs = [];\n        for (let item of items) {\n            if (item.RNchecked) {\n                categoryIDs.push(item.value);\n            }\n        }\n        this.setState({\n            categoryIDs\n        })\n    };\n\n    _onShopSelect = (items) => {\n        var shopIDs = [];\n        for (let item of items) {\n            if (item.RNchecked) {\n                shopIDs.push(item.value);\n            }\n        }\n        this.setState({\n            shopIDs\n        })\n    };\n\n    _handleImage = ({ uri }) => {\n\n        var startIndex = uri.indexOf(\"base64,\") + 7;\n        var b64 = uri.substr(startIndex);\n        var byteCharacters = atob(b64);\n        var byteNumbers = new Array(byteCharacters.length);\n        for (var i = 0; i < byteCharacters.length; i++) {\n            byteNumbers[i] = byteCharacters.charCodeAt(i);\n        }\n        var byteArray = new Uint8Array(byteNumbers);\n        var data = new Blob([byteArray], { type: 'image/png' });\n        var images = []\n        var previewImage = []\n        this.state.images.forEach((image) => {\n            images.push(image);\n        });\n        this.state.previewImage.forEach((image) => {\n            previewImage.push(image)\n        });\n        images.push(data);\n        previewImage.push(uri);\n        this.setState(() => ({ images, previewImage }));\n\n    };\n\n    async componentDidMount() {\n\n        this.setState({ product: this.props.location.state });\n\n        const categories = JSON.parse(await AsyncStorage.getItem('categories'));\n\n        const categiriesArray = this.props.location.state.categories;\n\n        var categriesIDs = [];\n        for (let category of categiriesArray) {\n            categriesIDs.push(category.id)\n        }\n\n        var categoryItems = [];\n\n        for (let category_items of categories) {\n            categoryItems.push({ label: category_items.name, value: category_items.id, RNchecked: false });\n        }\n\n        for (let categriesID of categriesIDs) {\n            for (var i = 0; i < categoryItems.length; i++) {\n                if (categoryItems[i].value == categriesID) {\n                    categoryItems[i].RNchecked = true;\n                }\n            }\n        }\n\n        const shops = JSON.parse(await AsyncStorage.getItem('shops'))\n\n        const shopArray = this.props.location.state.shops;\n\n        var shopIDs = [];\n        for (let shop of shopArray) {\n            shopIDs.push(shop.id)\n        }\n\n        var shopItems = [];\n\n        for (let shop_items of shops) {\n            shopItems.push({ label: shop_items.name, value: shop_items.shop_id })\n        }\n\n        for (let shopID of shopIDs) {\n            for (var i = 0; i < shopItems.length; i++) {\n                if (shopItems[i].value == shopID) {\n                    shopItems[i].RNchecked = true;\n                }\n            }\n        }\n\n        var keywordsArray = this.props.location.state.keywords\n\n        var keywordNames = []\n\n        for (let keyword of keywordsArray) {\n            keywordNames.push(keyword.name_en)\n        }\n\n        var imagesArray = this.props.location.state.images\n\n        var imagePaths = []\n        var imageIDs = []\n\n        for (let image of imagesArray) {\n            imagePaths.push(image.path)\n            imageIDs.push(image.id)\n        }\n\n        this.setState({\n            product_id: this.props.location.state.id,\n            categoryItems,\n            shopItems,\n            show: true,\n            sku: this.props.location.state.sku,\n            price: this.props.location.state.price,\n            name_en: this.props.location.state.name_en,\n            name_zh_TW: this.props.location.state.name_zh_TW,\n            name_zh_CN: this.props.location.state.name_zh_CN,\n            description_en: this.props.location.state.description_en,\n            description_zh_TW: this.props.location.state.description_zh_TW,\n            description_zh_CN: this.props.location.state.description_zh_CN,\n            packing_en: this.props.location.state.packing_en,\n            packing_zh_TW: this.props.location.state.packing_zh_TW,\n            packing_zh_CN: this.props.location.state.packing_zh_CN,\n            short_description_en: this.props.location.state.short_description_en,\n            short_description_zh_TW: this.props.location.state.short_description_zh_TW,\n            short_description_zh_CN: this.props.location.state.short_description_zh_CN,\n            bar_code: this.props.location.state.bar_code,\n            keywords: keywordNames,\n            imageIDs: imageIDs,\n            categoryIDs: categriesIDs,\n            shopIDs,\n            // images: imagePaths,\n            previewImage: imagePaths,\n        })\n    }\n\n    _listEmptyComponent = () => {\n        return (\n            <View>\n\n            </View>\n        )\n    }\n\n    onBack = () => {\n        this.props.history.push('/productList');\n    }\n\n    onStockIn = () => {\n        this.props.history.push('/stockIn', this.state.product);\n    }\n\n    onStockOut = () => {\n       this.props.history.push('/stockOutList', this.state.product);\n    }\n\n    handleRemoveImage(index) {\n        var imageIDs = this.state.imageIDs\n        var images = this.state.images\n        var previewImages = this.state.previewImage\n        var remove_image_ids = []\n\n        var previewImage = previewImages[index];\n\n        if (previewImage.includes('hippos')) {\n            remove_image_ids.push(imageIDs[index])\n            imageIDs.splice(index, 1);\n            previewImages.splice(index, 1);\n\n            this.setState({\n                remove_image_ids, imageIDs,\n                previewImage: previewImages\n            })\n        } else {\n            images.splice(index, 1);\n            previewImages.splice(index, 1);\n\n            this.setState({\n                images,\n                previewImage: previewImages\n            })\n        }\n    }\n\n\n    render() {\n        if (this.state.show) {\n            return (\n                <View>\n                    <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                        <Image style={styles.bannner} source={require('./image/hippos_banner.png')} />\n                        <View style={{ marginLeft: 20, padding: 10, flexDirection: 'column-reverse' }}>\n                            <View style={{\n                                // alignItems: \"center\",\n                                width: '100%',\n                                marginTop: 10,\n                                marginBottom: 10\n                            }}>\n                                <Button\n                                    style={{\n                                        marginTop: 10,\n                                        marginBottom: 10\n                                    }}\n                                    title=\"返回 Back\"\n                                    onPress={this.onBack.bind(this)}\n                                />\n                                <Button\n                                    title=\"存貨入庫 Stock In\"\n                                    onPress={this.onStockIn.bind(this)}\n                                />\n                                <Button\n                                    style={{\n                                        marginTop: 10,\n                                        marginBottom: 10\n                                    }}\n                                    title=\"存貨出庫 Stock Out\"\n                                    onPress={this.onStockOut.bind(this)}\n                                />\n                            </View>\n                        </View>\n                    </View>\n                    <Text style={styles.title}>編輯貨品Edit Product</Text>\n                    <View style={styles.border}>\n                        <Text style={styles.text}>店鋪Shop</Text>\n                        <CheckboxFormX\n                            style={{ width: '100%' }}\n                            textStyle={{ marginRight: 20, fontSize: 20 }}\n                            dataSource={this.state.shopItems}\n                            itemShowKey=\"label\"\n                            itemCheckedKey=\"RNchecked\"\n                            iconSize={30}\n                            formHorizontal={true}\n                            labelHorizontal={true}\n                            onChecked={(item) => this._onShopSelect(item)}\n                        />\n                        <Text style={styles.text}>SKU</Text>\n                        <TextInput\n                            style={styles.inputfield}\n                            textContentType=\"text\"\n                            placeholder=\"SKU\"\n                            onChangeText={(text) => { this.setState({ sku: text }) }}\n                            value={`${this.state.sku}`}\n                        />\n                        <Text style={styles.text}>價錢Price</Text>\n                        <TextInput\n                            style={styles.inputfield}\n                            textContentType=\"number\"\n                            placeholder=\"價錢Price\"\n                            onChangeText={(text) => { this.setState({ price: text }) }}\n                            value={`${this.state.price}`}\n                        />\n                        <Text style={styles.text}>名稱Name(EN)</Text>\n                        <TextInput\n                            style={styles.inputfield}\n                            textContentType=\"text\"\n                            placeholder=\"名稱Name(EN)\"\n                            onChangeText={(text) => { this.setState({ name_en: text }) }}\n                            value={`${this.state.name_en}`}\n                        />\n                        <Text style={styles.text}>名稱Name(繁體)</Text>\n                        <TextInput\n                            style={styles.inputfield}\n                            textContentType=\"text\"\n                            placeholder=\"名稱Name(繁體)\"\n                            onChangeText={(text) => { this.setState({ name_zh_TW: text }) }}\n                            value={`${this.state.name_zh_TW}`}\n                        />\n                        <Text style={styles.text}>名稱Name(簡體)</Text>\n                        <TextInput\n                            style={styles.inputfield}\n                            textContentType=\"text\"\n                            placeholder=\"名稱Name(簡體)\"\n                            onChangeText={(text) => { this.setState({ name_zh_CN: text }) }}\n                            value={`${this.state.name_zh_CN}`}\n                        />\n                        <Text style={styles.text}>分類Category</Text>\n                        <CheckboxFormX\n                            style={{ width: '100%' }}\n                            textStyle={{ marginRight: 20, fontSize: 20 }}\n                            dataSource={this.state.categoryItems}\n                            itemShowKey=\"label\"\n                            itemCheckedKey=\"RNchecked\"\n                            iconSize={30}\n                            formHorizontal={true}\n                            labelHorizontal={true}\n                            onChecked={(item) => this._onCategorySelect(item)}\n                        />\n                        <Text style={styles.text}>包裝Packing(EN)</Text>\n                        <TextInput\n                            style={styles.inputfield}\n                            textContentType=\"text\"\n                            placeholder=\"包裝Packing(EN)\"\n                            onChangeText={(text) => { this.setState({ packing_en: text }) }}\n                            value={`${this.state.packing_en}`}\n                        />\n                        <Text style={styles.text}>包裝Packing(繁體)</Text>\n                        <TextInput\n                            style={styles.inputfield}\n                            textContentType=\"text\"\n                            placeholder=\"包裝Packing(繁體)\"\n                            onChangeText={(text) => { this.setState({ packing_zh_TW: text }) }}\n                            value={`${this.state.packing_zh_TW}`}\n                        />\n                        <Text style={styles.text}>包裝Packing(簡體)</Text>\n                        <TextInput\n                            style={styles.inputfield}\n                            textContentType=\"text\"\n                            placeholder=\"包裝Packing(簡體)\"\n                            onChangeText={(text) => { this.setState({ packing_zh_CN: text }) }}\n                            value={`${this.state.packing_zh_CN}`}\n                        />\n                        <Text style={styles.text}>介紹Description(EN)</Text>\n                        <TextInput\n                            style={styles.inputfield}\n                            textContentType=\"text\"\n                            placeholder=\"介紹Description(EN)\"\n                            onChangeText={(text) => { this.setState({ description_en: text }) }}\n                            value={`${this.state.description_en}`}\n                        />\n                        <Text style={styles.text}>介紹Description(繁體)</Text>\n                        <TextInput\n                            style={styles.inputfield}\n                            textContentType=\"text\"\n                            placeholder=\"介紹Description(繁體)\"\n                            onChangeText={(text) => { this.setState({ description_zh_TW: text }) }}\n                            value={`${this.state.description_zh_TW}`}\n                        />\n                        <Text style={styles.text}>介紹Description(簡體)</Text>\n                        <TextInput\n                            style={styles.inputfield}\n                            textContentType=\"text\"\n                            placeholder=\"介紹Description(簡體)\"\n                            onChangeText={(text) => { this.setState({ description_zh_CN: text }) }}\n                            value={`${this.state.description_zh_CN}`}\n                        />\n                        <Text style={styles.text}>簡介Short Description(EN)</Text>\n                        <TextInput\n                            style={styles.inputfield}\n                            textContentType=\"text\"\n                            placeholder=\"簡介Short Description(EN)\"\n                            onChangeText={(text) => { this.setState({ short_description_en: text }) }}\n                            value={`${this.state.short_description_en}`}\n                        />\n                        <Text style={styles.text}>簡介Short Description(繁體)</Text>\n                        <TextInput\n                            style={styles.inputfield}\n                            textContentType=\"text\"\n                            placeholder=\"簡介Short Description(繁體)\"\n                            onChangeText={(text) => { this.setState({ short_description_zh_TW: text }) }}\n                            value={`${this.state.short_description_zh_TW}`}\n                        />\n                        <Text style={styles.text}>簡介Short Description(簡體)</Text>\n                        <TextInput\n                            style={styles.inputfield}\n                            textContentType=\"text\"\n                            placeholder=\"簡介Short Description(簡體)\"\n                            onChangeText={(text) => { this.setState({ short_description_zh_CN: text }) }}\n                            value={`${this.state.short_description_zh_CN}`}\n                        />\n\n                        <Text style={styles.text}>條碼Barcode</Text>\n                        <TextInput\n                            style={styles.inputfield}\n                            textContentType=\"text\"\n                            placeholder=\"條碼Barcode\"\n                            onChangeText={(text) => { this.setState({ bar_code: text }) }}\n                            value={`${this.state.bar_code}`}\n                        />\n\n                        <Text style={styles.text}>關鍵字Keywords</Text>\n                        <TextInput\n                            style={styles.inputfield}\n                            textContentType=\"text\"\n                            placeholder=\"關鍵字Keywords : 食物, Food, etc..\"\n                            onChangeText={(text) => { this.setState({ keywords: text }) }}\n                            value={`${this.state.keywords}`}\n                        />\n\n                        <ImagePicker onComplete={this._handleImage}>\n                            <Button\n                                style={{ marginTop: 20, marginBottom: 20 }}\n                                large\n                                title=\"選擇圖片Select Image\"\n                            />\n                        </ImagePicker>\n\n\n                        <FlatList\n                            data={this.state.previewImage}\n                            extraData={this.state}\n                            ItemSeparatorComponent={this.space}\n                            renderItem={({ item, index }) =>\n                                <View>\n                                    <Image source={{ uri: item }} style={styles.image} />\n                                    <ThemeProvider theme={theme} >\n                                        <Button title='Remove'\n                                            onPress={() => this.handleRemoveImage(index)} />\n                                    </ThemeProvider>\n                                </View>\n                            }\n                            ListEmptyComponent={this._listEmptyComponent}\n                        />\n\n                        {/* <RNPickerSelect\n                        style={{ ...pickerSelectStyles }}\n                        onValueChange={(value) => console.log(value)}\n                        items={this.state.categoryItems}\n                    /> */}\n                        <Button\n                            style={{ marginTop: 20, marginBottom: 20 }}\n                            large\n                            title=\"Submit\"\n                            onPress={this.onPressButton.bind(this)}\n                        />\n                    </View>\n                </View >\n\n            );\n        } else {\n            return (\n                <View>\n\n                </View>\n            );\n        }\n    }\n}\n\nconst styles = StyleSheet.create({\n    text: {\n        marginTop: 10,\n        marginBottom: 2,\n        fontSize: 20,\n    },\n\n    title: {\n        marginTop: 10,\n        fontSize: 30,\n    },\n    inputfield: {\n        borderRadius: 8,\n        borderWidth: 2,\n        color: 'black',\n        borderColor: '#4189D6',\n        paddingLeft: 10,\n        fontSize: 20,\n        height: 40\n    },\n    image: {\n        maxWidth: '100%',\n        height: 200,\n        marginTop: 25,\n        justifyContent: 'center'\n    },\n    bannner: {\n        alignSelf: 'center',\n        resizeMode: \"stretch\",\n\n        width: '40%',\n        maxWidth: '100%',\n        height: 200,\n    },\n    border: {\n        marginTop: 10,\n        borderColor: '#000',\n        borderRadius: 5,\n        borderWidth: 2,\n        padding: 10,\n    },\n});\n\n\nconst theme = {\n    colors: {\n        primary: 'red',\n    }\n}\n\nasync function createProduct(product_id, email, uuid, shop_ids, token, sku, price,\n    name_en, name_zh_TW, name_zh_CN,\n    description_en, description_zh_TW, description_zh_CN,\n    packing_en, packing_zh_TW, packing_zh_CN,\n    short_description_en, short_description_zh_TW, short_description_zh_CN,\n    category_ids, bar_code, keywords, images, remove_image_ids) {\n\n    const data = new FormData();\n\n    data.append('product_id', product_id);\n    data.append('username', email)\n    data.append('uuid', uuid);\n    data.append('shop_ids', '[' + shop_ids + ']');\n    data.append('token', token);\n    data.append('price', price);\n    data.append('enable', 'yes');\n    data.append('name_en', name_en);\n    data.append('name_zh_TW', name_zh_TW);\n    data.append('name_zh_CN', name_zh_CN);\n    data.append('description_en', description_en);\n    data.append('description_zh_TW', description_zh_TW);\n    data.append('description_zh_CN', description_zh_CN);\n    data.append('packing_en', packing_en);\n    data.append('packing_zh_TW', packing_zh_TW);\n    data.append('packing_zh_CN', packing_zh_CN);\n    data.append('short_description_en', short_description_en);\n    data.append('short_description_zh_TW', short_description_zh_TW);\n    data.append('short_description_zh_CN', short_description_zh_CN);\n    data.append('sku', sku);\n    data.append('bar_code', bar_code);\n    data.append('keywords', '[' + keywords + ']');\n    data.append('remove_image_ids', '[' + remove_image_ids + ']');\n    data.append('category_ids', '[' + category_ids + ']');\n    data.append('all_langs', 'yes')\n\n    images.forEach((image) => {\n        data.append('images[]', image);\n    });\n\n    try {\n        return fetch(path + 'inventory/updateProduct', {\n            method: 'POST',\n            headers: {\n                'Access-Control-Allow-Origin': '*',\n            },\n            _body: data,\n            get body() {\n                return this._body;\n            },\n            set body(value) {\n                this._body = value;\n            },\n        })\n            .then((response) => response.json())\n    }\n    catch (error) {\n        console.error(error);\n    }\n}\n\nexport default EditProduct;","import React, { Component } from 'react';\nimport { Image, StyleSheet, Alert, View, TextInput, Text, Platform } from 'react-native';\nimport { Button } from 'react-native-elements';\nimport { AsyncStorage } from 'react-native';\nimport { Redirect } from 'react-router';\nimport path from './serverPath.js'\n\nclass CreateCategory extends Component {\n\n    constructor(props) {\n        super(props);\n        this.state = {\n            name_en: \"\",\n            name_zh_TW: \"\",\n            name_zh_CN: \"\",\n            all_langs: \"yes\",\n        };\n    }\n\n    async onPressButton() {\n        const uuid = await AsyncStorage.getItem('uuid');\n        const token = await AsyncStorage.getItem('token');\n        const user_info = await AsyncStorage.getItem('user_info');\n        const userInfo = JSON.parse(user_info);\n\n        createCategory(userInfo.email, uuid, token, this.state.name_en, this.state.name_zh_TW, this.state.name_zh_CN, this.state.all_langs).then(data => {\n\n            getCategory(userInfo.email, uuid, token).then(data => {\n                AsyncStorage.setItem('categories', JSON.stringify(data.data.categories))\n                this.props.history.push('/productlist');\n            });\n        });\n    }\n\n\n    async componentDidMount() {\n\n    }\n\n    onPressBack = () => {\n        this.props.history.push('/productlist');\n    }\n\n\n    render() {\n        return (\n            <View style={styles.container}>\n                <Image style={styles.image} source={require('./image/hippos_banner.png')} />\n                <Text style={styles.title}>新增分類Create Category</Text>\n                <View style={styles.login_border}>\n                    <Text style={styles.listedItem}>分類名稱Category Name(EN)</Text>\n                    <TextInput\n                        style={styles.input}\n                        textContentType=\"none\"\n                        placeholder=\"Category Name(EN)\"\n                        onChangeText={(text) => { this.setState({ name_en: text }) }}\n                        value={this.state.name_en}\n                    />\n                    <Text style={styles.listedItem}>分類名稱Category Name(繁體)</Text>\n                    <TextInput\n                        style={styles.input}\n                        textContentType=\"none\"\n                        placeholder=\"分類名稱(繁體)\"\n                        onChangeText={(text) => { this.setState({ name_zh_TW: text }) }}\n                        value={this.state.name_zh_TW}\n                    />\n                    <Text style={styles.listedItem}>分類名稱Category Name(簡體)</Text>\n                    <TextInput\n                        style={styles.input}\n                        textContentType=\"none\"\n                        placeholder=\"分類名稱(簡體)\"\n                        onChangeText={(text) => { this.setState({ name_zh_CN: text }) }}\n                        value={this.state.name_zh_CN}\n                    />\n                    <Button\n                        large\n                        title=\"創建 Create\"\n                        onPress={this.onPressButton.bind(this)}\n                    />\n\n                    <Button\n                        style={{ marginTop: 10 }}\n                        large\n                        title=\"返回 Back\"\n                        onPress={this.onPressBack.bind(this)}\n                    />\n\n                </View>\n\n            </View>\n        );\n    }\n}\n\nasync function createCategory(email, uuid, token, name_en, name_zh_TW, name_zh_CN, all_langs) {\n    try {\n        return fetch(path + 'inventory/createCategory', {\n            method: 'POST',\n            headers: {\n                Accept: 'application/json',\n                'Content-Type': 'application/json',\n                'Access-Control-Allow-Origin': '*',\n            },\n            _body: JSON.stringify({\n                email: email,\n                version: '1',\n                device: 'React Native',\n                os_version: '1',\n                platform: 'ios',\n                username: email,\n                uuid: uuid,\n                token: token,\n                push_key: \"null\",\n                all_langs: all_langs,\n                name_en: name_en,\n                name_zh_TW: name_zh_TW,\n                name_zh_CN: name_zh_CN,\n            }),\n            get body() {\n                return this._body;\n            },\n            set body(value) {\n                this._body = value;\n            },\n        })\n            .then((response) => response.json())\n        // return responseJson.data.payment_methods;\n    }\n    catch (error) {\n        console.error(error);\n    }\n}\n\nasync function getCategory(email, uuid, token) {\n    try {\n        return fetch(path + 'inventory/categories', {\n            method: 'POST',\n            headers: {\n                Accept: 'application/json',\n                'Content-Type': 'application/json',\n                'Access-Control-Allow-Origin': '*',\n            },\n            _body: JSON.stringify({\n                email: email,\n                version: '1',\n                device: 'React Native',\n                os_version: '1',\n                platform: 'ios',\n                username: email,\n                uuid: uuid,\n                token: token,\n                push_key: \"null\",\n            }),\n            get body() {\n                return this._body;\n            },\n            set body(value) {\n                this._body = value;\n            },\n        })\n            .then((response) => response.json())\n        // return responseJson.data.payment_methods;\n    }\n    catch (error) {\n        console.error(error);\n    }\n}\n\nconst styles = StyleSheet.create({\n    container: {\n        flex: 1,\n        alignItems: 'center',\n        justifyContent: 'center',\n    },\n    listedItem: {\n        fontSize: 20,\n        margin: 5,\n    },\n    title: {\n        marginTop: 10,\n        fontSize: 30,\n    },\n    input: {\n        fontSize: 20,\n        margin: 5,\n        marginBottom: 10,\n        borderWidth: 2,  // size/width of the border\n        borderColor: 'lightgrey',  // color of the border\n        height: 30\n    },\n    login_border: {\n        marginTop: 10,\n        width: '40%',\n        borderColor: '#000',\n        borderRadius: 5,\n        borderWidth: 2,\n        padding: 10,\n    },\n    image: {\n        padding: 10, alignSelf: 'center',\n        resizeMode: \"stretch\",\n        flex: 1,\n        width: '50%',\n        maxWidth: '100%',\n        height: 200,\n    }\n});\n\nexport default CreateCategory;","import React, { Component } from 'react';\nimport { Image, StyleSheet, Alert, View, TextInput, Text, Platform } from 'react-native';\nimport { Button } from 'react-native-elements';\nimport Icon from 'react-native-vector-icons/FontAwesome';\nimport { AsyncStorage } from 'react-native';\nimport { Redirect } from 'react-router';\nimport DashedBorder from 'react-native-dashed-border';\nimport path from './serverPath.js'\n\nclass Register extends Component {\n\n    //   handlePress = payment_methods => {\n    //     this.props.history.push('/showPayment', payment_methods);\n    //   };\n\n    constructor(props) {\n        super(props);\n        this.state = {\n            warning_company_name: false,\n            warning_email: false,\n            warning_password: false,\n            warning_confirm_password: false,\n            warning_verification_code: false,\n            warning_country_code: false,\n            warning_phone: false,\n            warning_password_not_match: false,\n\n            company_name: \"\",\n            email: \"\",\n            password: \"\",\n            confirm_password: \"\",\n            verification_code: \"\",\n            country_code: \"852\",\n            phone: \"\",\n            uuid: \"\",\n            token: \"\",\n            counting_text: \"Send Code\",\n            count_time: 60,\n            is_timer: false,\n        };\n    }\n\n    onSendVerification() {\n        if (this.state.email === \"\") {\n            this.setState({ warning_email: true })\n        } else {\n            this.setState({ warning_email: false })\n\n            if (!this.state.is_timer) {\n                this.setState({\n                    is_timer: true\n                })\n                this.interval = setInterval(\n                    () => this.setState((prevState) => ({\n                        count_time: prevState.count_time - 1,\n                        counting_text: prevState.count_time - 1\n                    })),\n                    1000\n                );\n                sendVerification(this.state.email, this.state.uuid, this.state.token).then(data => {\n           \n                });\n            }\n        }\n    }\n\n\n    onPressButton() {\n        this.setState({\n            warning_company_name: false,\n            warning_email: false,\n            warning_password: false,\n            warning_confirm_password: false,\n            warning_verification_code: false,\n            warning_country_code: false,\n            warning_phone: false,\n            warning_password_not_match: false,\n        })\n\n        if (this.state.email != \"\" &&\n            this.state.company_name != \"\" &&\n            this.state.phone != \"\" &&\n            this.state.country_code != \"\" &&\n            this.state.confirm_password != \"\" &&\n            this.state.verification_code != \"\" &&\n            this.state.password != \"\") {\n            if (this.state.password != this.state.confirm_password) {\n                this.setState({\n                    warning_password_not_match: true\n                })\n            } else {\n                register(this.state.uuid, this.state.token,\n                    this.state.email, this.state.password,\n                    this.state.company_name, this.state.verification_code,\n                    this.state.country_code, this.state.phone).then(data => {\n                        if(data.result == 0){\n                            this.props.history.push('/');\n                        }\n                    });\n            }\n        }\n        if (this.state.email === \"\") {\n            this.setState({ warning_email: true })\n        }\n        if (this.state.company_name === \"\") {\n            this.setState({ warning_company_name: true })\n        }\n        if (this.state.phone === \"\") {\n            this.setState({ warning_phone: true })\n        }\n        if (this.state.country_code === \"\") {\n            this.setState({ warning_country_code: true })\n        }\n        if (this.state.confirm_password === \"\") {\n            this.setState({ warning_confirm_password: true })\n        }\n        if (this.state.verification_code === \"\") {\n            this.setState({ warning_verification_code: true })\n        }\n        if (this.state.password === \"\") {\n            this.setState({ warning_password: true })\n        }\n    }\n\n    componentDidUpdate() {\n        if (this.state.count_time === 1) {\n            clearInterval(this.interval);\n            this.setState({\n                counting_text: \"Send Code\",\n                count_time: 60,\n                is_timer: false\n            })\n        }\n    }\n\n    componentWillUnmount() {\n        clearInterval(this.interval);\n    }\n\n\n    async componentDidMount() {\n        try {\n            this.state.uuid = await AsyncStorage.getItem('uuid')\n            this.state.token = await AsyncStorage.getItem('token')\n        } catch (error) {\n\n        }\n    }\n\n    render() {\n        return (\n            <View style={styles.container}>\n                <Image style={styles.image} source={require('./image/hippos_banner.png')} />\n                {/* <Text style={{ fontSize: 26, marginTop: 20 }}>Register</Text> */}\n                <View style={styles.login_border}>\n                    {this.state.warning_company_name &&\n                        <Text style={styles.warning_item}>請輸入公司名稱Company Name</Text>}\n                    {this.state.warning_email && <Text style={styles.warning_item}>請輸入電郵地址Email</Text>}\n                    {this.state.warning_verification_code && <Text style={styles.warning_item}>請輸入驗證碼Verification Code</Text>}\n                    {this.state.warning_password && <Text style={styles.warning_item}>請輸入密碼Password</Text>}\n                    {this.state.warning_confirm_password && <Text style={styles.warning_item}>請輸入確認密碼Confirm Password</Text>}\n                    {this.state.warning_country_code && <Text style={styles.warning_item}>請輸入電話區碼Calling Code</Text>}\n                    {this.state.warning_phone && <Text style={styles.warning_item}>請輸入電話號碼Phone</Text>}\n                    {this.state.warning_password_not_match && <Text style={styles.warning_item}>兩次密碼不相符Password Not Match</Text>}\n\n                    <Text style={styles.listedItem}>公司名稱Company Name</Text>\n                    <TextInput\n                        style={styles.input}\n                        textContentType=\"text\"\n                        placeholder=\"公司名稱Company Name\"\n                        onChangeText={(text) => { this.setState({ company_name: text }) }}\n                        value={this.state.company_name}\n                    />\n                    <Text style={styles.listedItem}>電郵地址Email</Text>\n                    <TextInput\n                        style={styles.input}\n                        textContentType=\"email\"\n                        placeholder=\"電郵地址Email\"\n                        onChangeText={(text) => { this.setState({ email: text }) }}\n                        value={this.state.email}\n                    />\n                    <Text style={styles.listedItem}>驗證碼Verification Code</Text>\n                    <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                        <TextInput\n                            style={styles.input}\n                            textContentType=\"text\"\n                            placeholder=\"驗證碼Verification Code\"\n                            onChangeText={(text) => { this.setState({ verification_code: text }) }}\n                            value={this.state.verification_code}\n                        />\n                        <Button\n                            large\n                            title={`${this.state.counting_text}`}\n                            onPress={this.onSendVerification.bind(this)}\n                        />\n                    </View>\n                    <Text style={styles.listedItem}>密碼Password</Text>\n                    <TextInput\n                        style={styles.input}\n                        // secureTextEntry={true}\n                        textContentType=\"password\"\n                        placeholder=\"密碼Password\"\n                        onChangeText={(text) => { this.setState({ password: text }) }}\n                        value={this.state.password}\n                    />\n                    <Text style={styles.listedItem}>確認密碼Confirm Password</Text>\n                    <TextInput\n                        style={styles.input}\n                        // secureTextEntry={true}\n                        textContentType=\"password\"\n                        placeholder=\"確認密碼Confirm Password\"\n                        onChangeText={(text) => { this.setState({ confirm_password: text }) }}\n                        value={this.state.confirm_password}\n                    />\n                    <Text style={styles.listedItem}>電話號碼Phone</Text>\n                    <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                        <TextInput\n                            style={styles.country_code}\n                            // secureTextEntry={true}\n                            textContentType=\"number\"\n                            placeholder=\"+852\"\n                            onChangeText={(text) => { this.setState({ country_code: text }) }}\n                            value={this.state.country_code}\n                        />\n                        <TextInput\n                            style={styles.phone}\n                            // secureTextEntry={true}\n                            textContentType=\"number\"\n                            placeholder=\"電話號碼Phone\"\n                            onChangeText={(text) => { this.setState({ phone: text }) }}\n                            value={this.state.phone}\n                        />\n                    </View>\n                    <Button\n                        style={{ marginTop: 10 }}\n                        large\n                        title=\"Register\"\n                        onPress={this.onPressButton.bind(this)}\n                    />\n                </View>\n            </View>\n        );\n    }\n}\n\nasync function sendVerification(email, uuid, token) {\n    try {\n        return fetch(path + 'sendVerification', {\n            method: 'POST',\n            headers: {\n                Accept: 'application/json',\n                'Content-Type': 'application/json',\n                'Access-Control-Allow-Origin': '*',\n            },\n            _body: JSON.stringify({\n                email: email,\n                uuid: uuid,\n                token: token,\n                push_key: \"null\",\n                version: '1',\n                device: 'React Native',\n                os_version: '1',\n                platform: 'ios',\n            }),\n            get body() {\n                return this._body;\n            },\n            set body(value) {\n                this._body = value;\n            },\n        })\n            .then((response) => response.json())\n        // return responseJson.data.payment_methods;\n    }\n    catch (error) {\n        console.error(error);\n    }\n}\n\nasync function register(uuid, token, email, password, company_name, verification_code, country_code, phone) {\n    try {\n        return fetch(path + 'register', {\n            method: 'POST',\n            headers: {\n                Accept: 'application/json',\n                'Content-Type': 'application/json',\n                'Access-Control-Allow-Origin': '*',\n            },\n            _body: JSON.stringify({\n                email: email,\n                password: password,\n                company_name: company_name,\n                verification_code: verification_code,\n                country_code: country_code,\n                phone: phone,\n                uuid: uuid,\n                token: token,\n                first_name : company_name,\n                last_name : company_name,\n                push_key: \"null\",\n                version: '1',\n                device: 'React Native',\n                os_version: '1',\n                platform: 'ios',\n            }),\n            get body() {\n                return this._body;\n            },\n            set body(value) {\n                this._body = value;\n            },\n        })\n            .then((response) => response.json())\n        // return responseJson.data.payment_methods;\n    }\n    catch (error) {\n       \n    }\n}\n\nconst styles = StyleSheet.create({\n    container: {\n        flex: 1,\n        alignItems: 'center',\n        justifyContent: 'center',\n    },\n    warning_item: {\n        color: 'red',\n        fontSize: 20,\n        margin: 5,\n    },\n    listedItem: {\n        fontSize: 20,\n        margin: 5,\n    },\n    country_code: {\n        flex: 0.1,\n        width: \"100%\",\n        fontSize: 20,\n        margin: 5,\n        textAlign: 'center',\n        borderWidth: 2,  // size/width of the border\n        borderColor: 'lightgrey',  // color of the border\n        height: 30\n    },\n    phone: {\n        flex: 0.9,\n        width: \"100%\",\n        fontSize: 20,\n        margin: 5,\n        borderWidth: 2,  // size/width of the border\n        borderColor: 'lightgrey',  // color of the border\n        height: 30\n    },\n    input: {\n        width: \"100%\",\n        fontSize: 20,\n        margin: 5,\n        borderWidth: 2,  // size/width of the border\n        borderColor: 'lightgrey',  // color of the border\n        height: 30\n    },\n    login_border: {\n        marginBottom: 50,\n        marginTop: 20,\n        width: '70%',\n        borderColor: '#000',\n        borderRadius: 5,\n        borderWidth: 2,\n        padding: 10,\n    },\n    image: {\n        padding: 10, alignSelf: 'center',\n        resizeMode: \"stretch\",\n        flex: 1,\n        width: '50%',\n        maxWidth: '100%',\n        height: 200,\n    }\n});\n\nexport default Register;","import React, { Component } from 'react';\nimport { Image, StyleSheet, Alert, View, TextInput, Text, Platform } from 'react-native';\nimport { Button } from 'react-native-elements';\nimport { AsyncStorage } from 'react-native';\nimport { Redirect } from 'react-router';\nimport path from './serverPath.js'\n\nclass StockIn extends Component {\n\n    constructor(props) {\n        super(props);\n        this.state = {\n            product :null,\n            uuid: '',\n            token: '',\n            user_info: '',\n            product_id: '',\n            product_name: '',\n            sku: '',\n            bar_code: '',\n            packing: '',\n            batch_number: '',\n            cost: '',\n            qty: '',\n            shop_id: '',\n        };\n    }\n\n    onPressBack = () => {\n        this.props.history.push('/editProduct', this.state.product);\n    }\n\n    async onPressButton() {\n        var product_array = { 'product_id': this.state.product_id, 'qty': Number(this.state.qty), 'cost': Number(this.state.cost) }\n        const userInfo = JSON.parse(this.state.user_info);\n\n        stockIn(userInfo.email, this.state.uuid, this.state.token, this.state.shop_id, JSON.stringify(product_array), this.state.batch_number).then(data => {\n            this.props.history.push('/editProduct', this.props.location.state);\n        });\n    }\n\n\n    async componentDidMount() {\n        const product = this.props.location.state\n        const uuid = await AsyncStorage.getItem('uuid');\n        const token = await AsyncStorage.getItem('token');\n        const user_info = await AsyncStorage.getItem('user_info');\n\n        this.setState({\n            product,\n            uuid, token, user_info,\n            product_id: product.id,\n            product_name: product.name_en,\n            sku: product.sku,\n            bar_code: product.bar_code,\n            packing: product.packing_en,\n            shop_id: product.shops[0].id\n        })\n    }\n\n    render() {\n        return (\n            <View style={styles.container}>\n                <Image style={styles.image} source={require('./image/hippos_banner.png')} />\n                <Text style={styles.title}>存貨入庫 Stock In</Text>\n                <View style={styles.login_border}>\n                    <Text style={styles.listedItem}>\n                        貨品名稱Product Name(EN) : {this.state.product_name}</Text>\n                    <Text style={styles.listedItem}>\n                        SKU : {this.state.sku}</Text>\n                    <Text style={styles.listedItem}>\n                        條碼Barcode: {this.state.bar_code}</Text>\n                    <Text style={styles.listedItem}>\n                        包裝描述Packing(EN) : {this.state.packing}</Text>\n\n                    <Text style={styles.listedItem}>批次編號Batch Number :</Text>\n                    <TextInput\n                        style={styles.input}\n                        textContentType=\"none\"\n                        placeholder=\"批次編號Batch Number\"\n                        onChangeText={(text) => { this.setState({ batch_number: text }) }}\n                        value={this.state.batch_number}\n                    />\n                    <Text style={styles.listedItem}>成本Cost</Text>\n                    <TextInput\n                        style={styles.input}\n                        textContentType=\"number\"\n                        placeholder=\"成本Cost\"\n                        onChangeText={(text) => { this.setState({ cost: text }) }}\n                        value={this.state.cost}\n                    />\n                    <Text style={styles.listedItem}>數量Qty</Text>\n                    <TextInput\n                        style={styles.input}\n                        textContentType=\"number\"\n                        placeholder=\"數量Qty\"\n                        onChangeText={(text) => { this.setState({ qty: text }) }}\n                        value={this.state.qty}\n                    />\n                    <Button\n                        large\n                        title=\"存貨入庫 Stock In\"\n                        onPress={this.onPressButton.bind(this)}\n                    />\n\n                    <Button\n                        style={{ marginTop: 10 }}\n                        large\n                        title=\"返回 Back\"\n                        onPress={this.onPressBack.bind(this)}\n                    />\n                </View>\n\n            </View>\n        );\n    }\n}\n\nasync function stockIn(email, uuid, token, shop_id, products, batch_number) {\n\n    const data = new FormData();\n\n    data.append('username', email)\n    data.append('uuid', uuid);\n    data.append('shop_id', shop_id);\n    data.append('token', token);\n    data.append('products', '[' + products + ']')\n    data.append('batch_number', batch_number)\n\n\n    try {\n        return fetch(path + 'inventory/stockIn', {\n            method: 'POST',\n            headers: {\n                'Access-Control-Allow-Origin': '*',\n            },\n            _body: data,\n            get body() {\n                return this._body;\n            },\n            set body(value) {\n                this._body = value;\n            },\n        })\n            .then((response) => response.json())\n        // return responseJson.data.payment_methods;\n    }\n    catch (error) {\n        console.error(error);\n    }\n}\n\nconst styles = StyleSheet.create({\n    container: {\n        flex: 1,\n        alignItems: 'center',\n        justifyContent: 'center',\n    },\n    listedItem: {\n        fontSize: 20,\n        margin: 5,\n    },\n    title: {\n        marginTop: 10,\n        fontSize: 30,\n    },\n    input: {\n        fontSize: 20,\n        margin: 5,\n        marginBottom: 10,\n        borderWidth: 2,  // size/width of the border\n        borderColor: 'lightgrey',  // color of the border\n        height: 30\n    },\n    login_border: {\n        marginTop: 10,\n        width: '70%',\n        borderColor: '#000',\n        borderRadius: 5,\n        borderWidth: 2,\n        padding: 10,\n    },\n    image: {\n        padding: 10, alignSelf: 'center',\n        resizeMode: \"stretch\",\n        flex: 1,\n        width: '50%',\n        maxWidth: '100%',\n        height: 200,\n    },\n});\n\nexport default StockIn;","import React, { Component } from 'react';\nimport { Image, StyleSheet, View, Text, FlatList, TouchableOpacity } from 'react-native';\nimport { ThemeProvider, Button } from 'react-native-elements';\nimport { AsyncStorage } from 'react-native';\nimport path from './serverPath.js'\n\n\nclass StockOutList extends Component {\n\n\n  handlePress = stocks => {\n    this.props.history.push({\n      pathname: '/stockOut',\n      state: { stock: stocks, product: this.state.product }\n    })\n  };\n\n  handlePagePress = page => {\n    stockHistories(uuid, token, userInfo.email, '1', shop_id, product.id).then(data => {\n      var pages = [];\n      for (var i = 1; i <= data.data.pagination.total_page; i++) {\n        pages.push(i);\n      }\n\n      var stocks = data.data.stocks\n      for (let stock of stocks) {\n        if (stock.product_cover_image == \"\" || stock.product_cover_image == null) {\n          stock.cover = 'http://hippos.beuniquewedding.com/img/icon.png'\n        }\n      }\n\n      this.setState({\n        stocks,\n        pagination: data.data.pagination,\n        pages,\n      });\n    });\n  };\n\n  constructor(props) {\n    super(props);\n    this.state = {\n      product: null,\n      stocks: null,\n      pagination: null,\n      pages: null,\n      shop_id: '',\n      uuid: '',\n      token: '',\n      username: '',\n    };\n  }\n\n  async componentDidMount() {\n    const uuid = await AsyncStorage.getItem('uuid');\n    const token = await AsyncStorage.getItem('token');\n    const user_info = await AsyncStorage.getItem('user_info');\n    const userInfo = JSON.parse(user_info);\n\n    const product = this.props.location.state\n    const shop_id = product.shops[0].id\n\n    stockHistories(uuid, token, userInfo.email, '1', shop_id, product.id).then(data => {\n      var pages = [];\n      for (var i = 1; i <= data.data.pagination.total_page; i++) {\n        pages.push(i);\n      }\n\n      var stocks = data.data.stocks\n      for (let stock of stocks) {\n        if (stock.product_cover_image == \"\" || stock.product_cover_image == null) {\n          stock.cover = 'http://hippos.beuniquewedding.com/img/icon.png'\n        }\n      }\n\n      this.setState({\n        product,\n        stocks,\n        pagination: data.data.pagination,\n        pages,\n        uuid,\n        token,\n        username: userInfo.email,\n      });\n    });\n  }\n\n  onPressBack = () => {\n    this.props.history.push('/editProduct', this.state.product);\n  }\n\n  render() {\n    return (\n\n      <View >\n        <View style={{ flexDirection: 'row', width: \"100%\" }}>\n          <Image style={styles.image} source={require('./image/hippos_banner.png')} />\n          <View style={{ marginLeft: 20, padding: 10, flexDirection: 'column-reverse' }}>\n            <Button\n              large\n              title=\"返回 Back\"\n              onPress={this.onPressBack.bind(this)}\n            />\n          </View>\n        </View>\n\n        <View style={styles.border}>\n          <FlatList\n            contentContainerStyle={{ flexGrow: 1, justifyContent: 'center' }}\n            data={this.state.stocks}\n            showsVerticalScrollIndicator={false}\n            renderItem={({ item }) => {\n              if (item.type == 'in') {\n                return (\n                  <TouchableOpacity onPress={() => this.handlePress(item)}>\n                    <View style={styles.list_border}>\n                      <View >\n                        <Image source={this.state.product.cover} style={styles.cover} />\n                      </View>\n                      <View>\n                        <Text style={styles.listedItem}>{`貨品名稱Name : ` + item.product_name}</Text>\n                        <Text style={styles.listedItem}>{`批次編號Batch Number :` + item.batch_number}</Text>\n                        <Text style={styles.listedItem}>{`成本Cost : ` + item.cost}</Text>\n                        <Text style={styles.listedItem}>{`數量 Qty : ` + item.qty}</Text>\n                        <Text style={styles.listedItem}>{`剩餘數量 Remain Qty : ` + item.remaining_qty}</Text>\n                      </View>\n                    </View>\n                  </TouchableOpacity>\n                );\n              } else {\n                return (\n                  <TouchableOpacity onPress={() => this.handlePress(item)}>\n                    <View style={styles.list_border_w_color}>\n                      <View >\n                        <Image source={this.state.product.cover} style={styles.cover} />\n                      </View>\n                      <View>\n                        <Text style={styles.listedItem}>{`貨品名稱Name : ` + item.product_name}</Text>\n                        <Text style={styles.listedItem}>{`批次編號Batch Number :` + item.batch_number}</Text>\n                        <Text style={styles.listedItem}>{`成本Cost : ` + item.cost}</Text>\n                        <Text style={styles.listedItem}>{`數量Qty : -` + item.qty}</Text>\n                      </View>\n                    </View>\n                  </TouchableOpacity>\n                );\n              }\n            }}\n            // renderItem={({ item }) =>\n\n            //   <TouchableOpacity onPress={() => this.handlePress(item)}>\n            //     <View style={styles.list_border}>\n            //       <View >\n            //         <Image source={item.product_cover_image} style={styles.cover} />\n            //       </View>\n            //       <View>\n            //         <Text style={styles.listedItem}>{`貨品名稱Name : ` + item.product_name}</Text>\n            //         <Text style={styles.listedItem}>{`批次編號Batch Number :` + item.batch_number}</Text>\n            //         <Text style={styles.listedItem}>{`成本Cost : ` + item.cost}</Text>\n            //         <Text style={styles.listedItem}>{`數量Qty : -` + item.qty}</Text>\n            //       </View>\n            //     </View>\n            //   </TouchableOpacity>\n            // }\n            keyExtractor={item => item.id}\n          />\n\n          {/* <View style={{\n            // alignItems: \"center\",\n            width: '100%',\n            marginTop: 10,\n            marginBottom: 10\n          }}>\n            <Button\n              title=\"新增貨品Create Product\"\n              onPress={this.onPressButton.bind(this)}\n            />\n          </View> */}\n\n          <View style={{ justifyContent: 'center', flexDirection: 'row' }}>\n            <Text style={{ fontSize: 18, marginRight: 5 }}>分頁Page:</Text>\n            <FlatList\n              data={this.state.pages}\n              ItemSeparatorComponent={this.space}\n              horizontal={true}\n              renderItem={({ item }) =>\n                <TouchableOpacity onPress={() => this.handlePagePress(item)}>\n                  <Text style={styles.listedPageNum}>{item}</Text>\n                </TouchableOpacity>\n              }\n            />\n          </View>\n        </View>\n      </View >\n    );\n  }\n}\n\nasync function stockHistories(uuid, token, email, page, shop_id, product_id) {\n  try {\n    return fetch(path + 'inventory/productStockHistories', {\n      method: 'POST',\n      headers: {\n        Accept: 'application/json',\n        'Content-Type': 'application/json',\n        'Access-Control-Allow-Origin': '*',\n      },\n      _body: JSON.stringify({\n        version: '1',\n        platform: 'ios',\n        uuid: uuid,\n        token: token,\n        username: email,\n        page: page,\n        shop_id: shop_id,\n        product_id : product_id,\n        all_langs: 'yes',\n      }),\n      get body() {\n        return this._body;\n      },\n      set body(value) {\n        this._body = value;\n      },\n    })\n      .then((response) => response.json())\n    // return responseJson.data.payment_methods;\n  }\n  catch (error) {\n    console.error(error);\n  }\n}\n\nconst styles = StyleSheet.create({\n  listedItem: {\n    fontSize: 16,\n    // background: '#285b97',\n    borderRadius: 3,\n    margin: 5,\n  },\n  listedPageNum: {\n    fontSize: 18,\n    marginRight: 5,\n    textDecorationLine: 'underline',\n    color: 'blue'\n  },\n  image: {\n    resizeMode: \"stretch\",\n    width: '30%',\n    height: 100,\n  }, \n  border: {\n    marginTop: 10,\n    width: '100%',\n    borderColor: '#000',\n    borderRadius: 5,\n    borderWidth: 2,\n    padding: 10,\n  },\n  cover: {\n    resizeMode: \"stretch\",\n    flex: 1,\n    width: 120,\n    height: 100,\n  },\n  list_border: {\n    marginTop: 10,\n    width: '100%',\n    borderColor: '#000',\n    borderRadius: 5,\n    borderWidth: 2,\n    padding: 10,\n    flexGrow: 1,\n    flexDirection: 'row'\n  },\n  list_border_w_color: {\n    backgroundColor: 'gray',\n    marginTop: 10,\n    width: '100%',\n    borderColor: '#000',\n    borderRadius: 5,\n    borderWidth: 2,\n    padding: 10,\n    flexGrow: 1,\n    flexDirection: 'row'\n  }\n});\n\n\nexport default StockOutList;","import React, { Component } from 'react';\nimport { Image, StyleSheet, Alert, View, TextInput, Text, Platform } from 'react-native';\nimport { Button } from 'react-native-elements';\nimport { AsyncStorage } from 'react-native';\nimport { Redirect } from 'react-router';\nimport path from './serverPath.js'\n\nclass StockOut extends Component {\n\n    constructor(props) {\n        super(props);\n        this.state = {\n            product : null,\n            stock: null,\n            uuid: '',\n            token: '',\n            user_info: '',\n            product_id: '',\n            product_name: '',\n            batch_number: '',\n            cost: '',\n            qty: '',\n            shop_id: '',\n            stock_id: '',\n            stockOut_qty: '',\n            remark: '',\n            description: '',\n            type: '',\n        };\n    }\n\n    async onPressButton() {\n        var product_array = { 'stock_id': this.state.stock_id, 'qty': Number(this.state.stockOut_qty) }\n        const userInfo = JSON.parse(this.state.user_info);\n\n        stockOut(userInfo.email, this.state.uuid, this.state.token, this.state.shop_id, JSON.stringify(product_array), this.state.remark).then(data => {\n            if (data.result == 0) {\n                this.props.history.push('/stockOutList', this.state.product);\n            }\n        });\n    }\n\n    onPressBack = () => {\n        this.props.history.push('/stockOutList', this.state.product);\n    }\n\n    async componentDidMount() {\n        const stock = this.props.location.state.stock\n        const product = this.props.location.state.product\n        const uuid = await AsyncStorage.getItem('uuid');\n        const token = await AsyncStorage.getItem('token');\n        const user_info = await AsyncStorage.getItem('user_info');\n\n        console.log(this.props.location.state)\n\n        this.setState({\n            product,\n            stock, uuid, token, user_info,\n            product_id: stock.product_id,\n            product_name: stock.product_name,\n            batch_number: stock.batch_number,\n            cost: stock.cost,\n            stock_id: stock.id,\n            shop_id: stock.shop_id,\n            description: stock.description,\n            remark: stock.remark,\n            type: stock.type,\n            qty: stock.qty\n        })\n    }\n\n    render() {\n        if (this.state.type == \"in\") {\n            return (\n                <View style={styles.container}>\n                    <Image style={styles.image} source={require('./image/hippos_banner.png')} />\n                    <Text style={styles.title}>存貨出庫 Stock Out</Text>\n                    <View style={styles.login_border}>\n                        <Text style={styles.listedItem}>\n                            貨品名稱Product Name(EN) : {this.state.product_name}</Text>\n                        <Text style={styles.listedItem}>{`批次編號Batch Number : ` + this.state.batch_number}</Text>\n                        <Text style={styles.listedItem}>{`說明Description : ` + this.state.description}</Text>\n                        <Text style={styles.listedItem}>{`成本Cost : ` + this.state.cost}</Text>\n                        <Text style={styles.listedItem}>{`數量 Qty : ` + this.state.qty}</Text>\n                        <Text style={styles.listedItem}>{`剩餘數量 Remain Qty : ` + this.state.remaining_qty}</Text>\n                        <Text style={styles.listedItem}>存貨出庫 Stock Out</Text>\n                        <TextInput\n                            style={styles.input}\n                            textContentType=\"number\"\n                            placeholder=\"存貨出庫 Stock Out\"\n                            onChangeText={(text) => { this.setState({ stockOut_qty: text }) }}\n                            value={this.state.stockOut_qty}\n                        />\n                        <Text style={styles.listedItem}>備註Remark</Text>\n                        <TextInput\n                            style={styles.inputArea}\n                            multiline={true}\n                            numberOfLines={4}\n                            textContentType=\"text\"\n                            placeholder=\"備註Remark\"\n                            onChangeText={(text) => { this.setState({ remark: text }) }}\n                            value={this.state.remark}\n                        />\n                        <Button\n                            large\n                            title=\"存貨出庫 Stock Out\"\n                            onPress={this.onPressButton.bind(this)}\n                        />\n\n                        <Button\n                            style={{ marginTop: 10}}\n                            large\n                            title=\"返回 Back\"\n                            onPress={this.onPressBack.bind(this)}\n                        />\n\n                    </View>\n\n                </View>\n            );\n        } else {\n            return (\n                <View style={styles.container}>\n                    <Image style={styles.image} source={require('./image/hippos_banner.png')} />\n                    <Text style={styles.title}>存貨出庫 Stock Out</Text>\n                    <View style={styles.login_border}>\n                        <Text style={styles.listedItem}>\n                            貨品名稱Product Name(EN) : {this.state.product_name}</Text>\n                        <Text style={styles.listedItem}>{`批次編號Batch Number : ` + this.state.batch_number}</Text>\n                        <Text style={styles.listedItem}>{`說明Description : ` + this.state.description}</Text>\n                        <Text style={styles.listedItem}>{`成本Cost : ` + this.state.cost}</Text>\n                        <Text style={styles.listedItem}>{`數量Qty : ` + this.state.qty}</Text>\n                        <Text style={styles.listedItem}>{`備註Remark : ` + this.state.remark}</Text>\n\n                        <Button\n                            large\n                            title=\"返回 Back\"\n                            onPress={this.onPressBack.bind(this)}\n                        />\n\n                    </View>\n\n                </View>\n            )\n        }\n    }\n}\n\nasync function stockOut(email, uuid, token, shop_id, products, remark) {\n\n    const data = new FormData();\n\n    data.append('username', email)\n    data.append('uuid', uuid);\n    data.append('shop_id', shop_id);\n    data.append('token', token);\n    data.append('stocks', '[' + products + ']')\n    data.append('remark', remark)\n\n\n    try {\n        return fetch(path + 'inventory/stockOut', {\n            method: 'POST',\n            headers: {\n                'Access-Control-Allow-Origin': '*',\n            },\n            _body: data,\n            get body() {\n                return this._body;\n            },\n            set body(value) {\n                this._body = value;\n            },\n        })\n            .then((response) => response.json())\n        // return responseJson.data.payment_methods;\n    }\n    catch (error) {\n        console.error(error);\n    }\n}\n\n\nconst styles = StyleSheet.create({\n    container: {\n        flex: 1,\n        alignItems: 'center',\n        justifyContent: 'center',\n    },\n    listedItem: {\n        fontSize: 20,\n        margin: 5,\n    },\n    title: {\n        marginTop: 10,\n        fontSize: 30,\n    },\n    input: {\n        fontSize: 20,\n        margin: 5,\n        marginBottom: 10,\n        borderWidth: 2,  // size/width of the border\n        borderColor: 'lightgrey',  // color of the border\n        height: 30\n    },\n    inputArea: {\n        fontSize: 20,\n        margin: 5,\n        marginBottom: 10,\n        borderWidth: 2,  // size/width of the border\n        borderColor: 'lightgrey',  // color of the border\n\n    },\n    login_border: {\n        marginTop: 10,\n        width: '70%',\n        borderColor: '#000',\n        borderRadius: 5,\n        borderWidth: 2,\n        padding: 10,\n    },\n    image: {\n        padding: 10, alignSelf: 'center',\n        resizeMode: \"stretch\",\n        flex: 1,\n        width: '50%',\n        maxWidth: '100%',\n        height: 200,\n    },\n});\n\nexport default StockOut;","import React, { Component } from 'react';\nimport { Image, StyleSheet, Alert, View, TextInput, Text, Platform, ActivityIndicator } from 'react-native';\nimport { Button } from 'react-native-elements';\nimport { AsyncStorage } from 'react-native';\nimport { Redirect } from 'react-router';\nimport RNPickerSelect from 'react-native-picker-select';\nimport path from './serverPath.js'\n\nclass SelectAction extends Component {\n\n    constructor(props) {\n        super(props);\n        this.state = {\n            uuid: '',\n            token: '',\n            username: '',\n        };\n    }\n\n    async componentDidMount() {\n        const uuid = await AsyncStorage.getItem('uuid');\n        const token = await AsyncStorage.getItem('token');\n        const user_info = await AsyncStorage.getItem('user_info');\n        const userInfo = JSON.parse(user_info);\n\n        this.setState({ uuid, token, username: userInfo.email })\n    }\n\n    onPressBack() {\n        this.setState({\n            select: false\n        });\n    }\n    onCheckRecord() {\n        this.props.history.push('/orderList');\n    }\n\n    onCreateOrder() {\n        this.props.history.push('/productlist');\n    }\n\n    onLogout() {\n        AsyncStorage.setItem('uuid', null);\n        AsyncStorage.setItem('token', null);\n        AsyncStorage.setItem('user_info', null)\n        this.props.history.push('/');\n      }\n\n    render() {\n        if (this.state.uuid != '' && this.state.token != '') {\n            return (\n                <View style={styles.container}>\n                    <Image style={styles.image} source={require('./image/hippos_banner.png')} />\n\n                    <Text style={styles.title}>HIPPOS倉存系統</Text>\n                    <View style={styles.login_border}>\n                        <Button\n                            style={{ marginTop: 10 }}\n                            large\n                            title=\"管理倉存 Manage Inventory\"\n                            onPress={this.onCreateOrder.bind(this)}\n                        />\n                        <Button\n                            style={{ marginTop: 10 }}\n                            large\n                            title=\"查閱下單記錄 Order Record\"\n                            onPress={this.onCheckRecord.bind(this)}\n                        />\n                        <Button\n                            style={{ marginTop: 10 }}\n                            title=\"登出 Logout\"\n                            onPress={this.onLogout.bind(this)}\n                        />\n                    </View>\n\n                </View>\n            );\n        } else {\n            return (\n                <View style={[styles.container, styles.horizontal]}>\n                    <ActivityIndicator size=\"large\" color=\"#0000ff\" />\n                </View>\n            )\n        }\n    }\n}\n\nasync function getStaffs(email, uuid, token, shop_id) {\n    try {\n        return fetch(path + 'staffs', {\n            method: 'POST',\n            headers: {\n                Accept: 'application/json',\n                'Content-Type': 'application/json',\n                'Access-Control-Allow-Origin': '*',\n            },\n            _body: JSON.stringify({\n                username: email,\n                uuid: uuid,\n                token: token,\n                push_key: \"null\",\n                shop_id: shop_id\n            }),\n            get body() {\n                return this._body;\n            },\n            set body(value) {\n                this._body = value;\n            },\n        })\n            .then((response) => response.json())\n        // return responseJson.data.payment_methods;\n    }\n    catch (error) {\n        console.error(error);\n    }\n}\n\nconst styles = StyleSheet.create({\n    container: {\n        flex: 1,\n        alignItems: 'center',\n        justifyContent: 'center',\n    },\n    listedItem: {\n        fontSize: 20,\n        margin: 5,\n    },\n    title: {\n        marginTop: 10,\n        fontSize: 30,\n    },\n    input: {\n        fontSize: 20,\n        margin: 5,\n        marginBottom: 10,\n        borderWidth: 2,  // size/width of the border\n        borderColor: 'lightgrey',  // color of the border\n        height: 30\n    },\n    login_border: {\n        marginTop: 10,\n        width: '40%',\n        borderColor: '#000',\n        borderRadius: 5,\n        borderWidth: 2,\n        padding: 10,\n    },\n    image: {\n        padding: 10, alignSelf: 'center',\n        resizeMode: \"stretch\",\n        flex: 1,\n        width: '50%',\n        maxWidth: '100%',\n        height: 200,\n    },\n    warning_item: {\n        color: 'red',\n        fontSize: 20,\n        margin: 5,\n    },\n});\n\nconst pickerSelectStyles = StyleSheet.create({\n    inputIOS: {\n        height: 40,\n        paddingLeft: 10,\n        borderWidth: 2,\n        borderColor: '#4189D6',\n        borderRadius: 4,\n        color: 'black',\n        paddingRight: 30, // to ensure the text is never behind the icon\n    },\n    inputAndroid: {\n        height: 40,\n        paddingLeft: 10,\n        borderWidth: 2,\n        borderColor: '#4189D6',\n        borderRadius: 8,\n        color: 'black',\n        paddingRight: 30, // to ensure the text is never behind the icon\n    }\n});\n\nexport default SelectAction;","import React, { Component } from 'react';\nimport { Image, StyleSheet, View, Text, FlatList, TouchableOpacity } from 'react-native';\nimport { ThemeProvider, Button } from 'react-native-elements';\nimport { AsyncStorage } from 'react-native';\nimport path from './serverPath.js'\n\n\nclass OrderList extends Component {\n\n\n  handlePress = order => {\n    this.props.history.push('/orderDetail', order);\n    // this.props.history.push({\n    //   pathname: '/stockOut',\n    //   state: { stock: stocks, product: this.state.product }\n    // })\n  };\n\n  handlePagePress = page => {\n    stockHistories(uuid, token, userInfo.email, '1', shop_id).then(data => {\n      var pages = [];\n      for (var i = 1; i <= data.data.pagination.total_page; i++) {\n        pages.push(i);\n      }\n\n      var stocks = data.data.stocks\n      for (let stock of stocks) {\n        if (stock.product_cover_image == \"\" || stock.product_cover_image == null) {\n          stock.cover = 'http://hippos.beuniquewedding.com/img/icon.png'\n        }\n      }\n\n      this.setState({\n        stocks,\n        pagination: data.data.pagination,\n        pages,\n      });\n    });\n  };\n\n  constructor(props) {\n    super(props);\n    this.state = {\n      orders: null,\n      pagination: null,\n      pages: null,\n      shops: null,\n      uuid: '',\n      token: '',\n      username: '',\n    };\n  }\n\n  async componentDidMount() {\n    const uuid = await AsyncStorage.getItem('uuid');\n    const token = await AsyncStorage.getItem('token');\n    const user_info = await AsyncStorage.getItem('user_info');\n    const userInfo = JSON.parse(user_info);\n    const shops = JSON.parse(await AsyncStorage.getItem('shops'))\n\n    getOrders(uuid, token, userInfo.email, '1').then(data => {\n      var pages = [];\n      for (var i = 1; i <= data.data.pagination.total_page; i++) {\n        pages.push(i);\n      }\n\n      var orders = data.data.orders\n\n      this.setState({\n        shops,\n        orders,\n        pagination: data.data.pagination,\n        pages,\n        uuid,\n        token,\n        username: userInfo.email,\n      });\n    });\n  }\n\n  onPressBack = () => {\n    this.props.history.push('/');\n  }\n\n  render() {\n    return (\n\n      <View >\n        <View style={{ flexDirection: 'row', width: \"100%\" }}>\n          <Image style={styles.image} source={require('./image/hippos_banner.png')} />\n          <View style={{ marginLeft: 20, padding: 10, flexDirection: 'column-reverse' }}>\n            <Button\n              large\n              title=\"返回 Back\"\n              onPress={this.onPressBack.bind(this)}\n            />\n          </View>\n        </View>\n\n        <View style={styles.border}>\n          <FlatList\n            contentContainerStyle={{ flexGrow: 1, justifyContent: 'center' }}\n            data={this.state.orders}\n            showsVerticalScrollIndicator={false}\n\n            renderItem={({ item }) => {\n              if (item.status == 'completed') {\n                return (\n                  <TouchableOpacity onPress={() => this.handlePress(item)}>\n                    <View style={styles.list_border_w_color}>\n                      <View>\n                        <Text style={styles.listedItemBold}>{`帳單編號 Order Number :` + item.order_number}</Text>\n                        <Text style={styles.listedItem}>{`下單店鋪 Ordering Shop : ` + this.state.shops.find(shop => shop.shop_id === item.shop_id).name}</Text>\n                        <Text style={styles.listedItem}>{`訂單總計 Total Price : HKD$` + item.amount}</Text>\n                        <Text style={styles.listedItem}>{`下單時間 Order Date :  ` + item.created_at}</Text>\n                        <Text style={styles.listedItemComplete}>{`訂單狀態 Order Status :  已完成 ` + item.status}</Text>\n                      </View>\n                    </View>\n                  </TouchableOpacity>\n                );\n              } else if (item.status == 'pending') {\n                return (\n                  <TouchableOpacity onPress={() => this.handlePress(item)}>\n                    <View style={styles.list_border_w_color}>\n                      <View>\n                        <Text style={styles.listedItemBold}>{`帳單編號 Order Number :` + item.order_number}</Text>\n                        <Text style={styles.listedItem}>{`下單店鋪 Ordering Shop : ` + this.state.shops.find(shop => shop.shop_id === item.shop_id).name}</Text>\n                        <Text style={styles.listedItem}>{`訂單總計 Total Price : HKD$` + item.amount}</Text>\n                        <Text style={styles.listedItem}>{`下單時間 Order Date :  ` + item.created_at}</Text>\n                        <Text style={styles.listedItemPending}>{`訂單狀態 Order Status :  處理中 ` + item.status}</Text>\n                      </View>\n                    </View>\n                  </TouchableOpacity>\n                );\n              } else {\n                return (\n                  <TouchableOpacity onPress={() => this.handlePress(item)}>\n                    <View style={styles.list_border_w_color}>\n                      <View>\n                        <Text style={styles.listedItemBold}>{`帳單編號 Order Number :` + item.order_number}</Text>\n                        <Text style={styles.listedItem}>{`下單店鋪 Ordering Shop : ` + this.state.shops.find(shop => shop.shop_id === item.shop_id).name}</Text>\n                        <Text style={styles.listedItem}>{`訂單總計 Total Price : HKD$` + item.amount}</Text>\n                        <Text style={styles.listedItem}>{`下單時間 Order Date :  ` + item.created_at}</Text>\n                        <Text style={styles.listedItem}>{`訂單狀態 Order Status :  已取消 ` + item.status}</Text>\n                      </View>\n                    </View>\n                  </TouchableOpacity>\n                );\n              }\n            }}\n\n            keyExtractor={item => item.order_id.toString()}\n          />\n\n          <View style={{ justifyContent: 'center', flexDirection: 'row' }}>\n            <Text style={{ fontSize: 18, marginRight: 5 }}>分頁Page:</Text>\n            <FlatList\n              data={this.state.pages}\n              ItemSeparatorComponent={this.space}\n              horizontal={true}\n              renderItem={({ item }) =>\n                <TouchableOpacity onPress={() => this.handlePagePress(item)}>\n                  <Text style={styles.listedPageNum}>{item}</Text>\n                </TouchableOpacity>\n              }\n            />\n          </View>\n        </View>\n      </View >\n    );\n  }\n}\n\nasync function getOrders(uuid, token, email, page) {\n  try {\n    return fetch(path + 'sales/orders', {\n      method: 'POST',\n      headers: {\n        Accept: 'application/json',\n        'Content-Type': 'application/json',\n        'Access-Control-Allow-Origin': '*',\n      },\n      _body: JSON.stringify({\n        version: '1',\n        platform: 'ios',\n        uuid: uuid,\n        token: token,\n        username: email,\n        page: page,\n        all_langs: 'yes',\n      }),\n      get body() {\n        return this._body;\n      },\n      set body(value) {\n        this._body = value;\n      },\n    })\n      .then((response) => response.json())\n    // return responseJson.data.payment_methods;\n  }\n  catch (error) {\n    console.error(error);\n  }\n}\n\nconst styles = StyleSheet.create({\n  listedItem: {\n    fontSize: 16,\n    // background: '#285b97',\n    borderRadius: 3,\n    padding: 5,\n    margin: 5,\n  },\n  listedItemComplete: {\n    fontSize: 16,\n    color: '#62C377',\n    // background: '#285b97',\n    borderRadius: 3,\n    padding: 5,\n    margin: 5,\n  },\n  listedItemCancel: {\n    fontSize: 16,\n    color: 'red',\n    // background: '#285b97',\n    borderRadius: 3,\n    padding: 5,\n    margin: 5,\n  },\n  listedItemPending: {\n    fontSize: 16,\n    color: '#59A0E8',\n    // background: '#285b97',\n    borderRadius: 3,\n    padding: 5,\n    margin: 5,\n  },\n  listedItemBold: {\n    fontWeight: \"bold\",\n    fontSize: 18,\n    // background: '#285b97',\n    borderRadius: 3,\n    padding: 5,\n    margin: 5,\n  },\n  listedPageNum: {\n    fontSize: 18,\n    marginRight: 5,\n    textDecorationLine: 'underline',\n    color: 'blue'\n  },\n  image: {\n    resizeMode: \"stretch\",\n    width: '30%',\n    height: 100,\n  }, border: {\n    marginTop: 10,\n    width: '100%',\n    borderColor: '#000',\n    borderRadius: 5,\n    borderWidth: 2,\n    padding: 10,\n  },\n  cover: {\n    resizeMode: \"stretch\",\n    flex: 1,\n    width: 120,\n    height: 100,\n  },\n  list_border: {\n    marginTop: 10,\n    width: '100%',\n    borderColor: '#000',\n    borderRadius: 5,\n    borderWidth: 2,\n    padding: 10,\n    flexGrow: 1,\n    flexDirection: 'row'\n  },\n  list_border_w_color: {\n    marginTop: 10,\n    width: '100%',\n    borderColor: '#000',\n    borderRadius: 5,\n    borderWidth: 2,\n    padding: 10,\n    flexGrow: 1,\n    flexDirection: 'row'\n  }\n});\n\n\nexport default OrderList;","import React, { Component } from 'react';\nimport { Image, StyleSheet, FlatList, View, TextInput, Text, ActivityIndicator, Platform } from 'react-native';\nimport { Button } from 'react-native-elements';\nimport { AsyncStorage } from 'react-native';\nimport { Redirect } from 'react-router';\nimport path from './serverPath.js'\n\nclass OrderDetail extends Component {\n\n    constructor(props) {\n        super(props);\n        this.state = {\n            order: null,\n        };\n    }\n\n    async onPressButton() {\n        this.props.history.push('/orderList');\n    }\n    async componentDidMount() {\n        const uuid = await AsyncStorage.getItem('uuid');\n        const token = await AsyncStorage.getItem('token');\n        const user_info = await AsyncStorage.getItem('user_info');\n        const userInfo = JSON.parse(user_info);\n\n        getOrderDetail(uuid, token, userInfo.email, this.props.location.state.order_id).then(data => {\n            var order = data.data.order\n            this.setState({\n                order,\n            });\n        });\n    }\n\n    render() {\n        if (this.state.order != null) {\n            return (\n                <View style={styles.container}>\n                    <Image style={styles.image} source={require('./image/hippos_banner.png')} />\n                    <Text style={styles.title}>帳單詳情 Order Detail</Text>\n                    <View style={styles.login_border}>\n                        <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                            <Text style={styles.leftlistedItem}>帳單編號Order Number</Text>\n                            <Text style={styles.rightlistedItem}>{this.state.order.order_number}</Text>\n                        </View>\n                        <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                            <Text style={styles.leftlistedItem}>下單店鋪 Ordering Shop</Text>\n                            <Text style={styles.rightlistedItem}>{this.state.order.shop.name}</Text>\n                        </View>\n                        {/* <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                            <Text style={styles.leftlistedItem}>下單員工 Ordering Staff</Text>\n                            <Text style={styles.rightlistedItem}>{this.state.order.user_info.name}</Text>\n                        </View> */}\n                        <Text style={styles.orderItem}>下單項目 Ordering Item</Text>\n                        <FlatList\n                            // contentContainerStyle={{ flexGrow: 1, justifyContent: 'center' }}\n                            data={this.state.order.products}\n                            extraData={this.state}\n                            renderItem={({ item }) =>\n                                <View style={styles.list_border}>\n                                    <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                                        <Text style={styles.leftorderItem}>{`貨品名稱Name : ` + item.name}</Text>\n                                        <Text style={styles.rightlistedItem}>{`數量Qty : ` + item.qty}</Text>\n                                    </View>\n                                </View>\n                            }\n                            keyExtractor={item => item.product_id}\n                        />\n                        <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                            <Text style={styles.leftlistedItem}>訂單總計 Total Price</Text>\n                            <Text style={styles.rightlistedItem}>{`HKD$` + this.state.order.amount}</Text>\n                        </View>\n                        <Button\n                            style={{ marginTop: 10 }}\n                            large\n                            title=\"完成 Finish\"\n                            onPress={this.onPressButton.bind(this)}\n                        />\n                    </View>\n                </View>\n            )\n        } else {\n            return (\n                <View style={[styles.container, styles.horizontal]}>\n                    <ActivityIndicator size=\"large\" color=\"#0000ff\" />\n                </View>\n            )\n        }\n    }\n}\n\nasync function getOrderDetail(uuid, token, email, order_id) {\n    try {\n        return fetch(path + 'sales/orderDetail', {\n            method: 'POST',\n            headers: {\n                Accept: 'application/json',\n                'Content-Type': 'application/json',\n                'Access-Control-Allow-Origin': '*',\n            },\n            _body: JSON.stringify({\n                version: '1',\n                platform: 'ios',\n                uuid: uuid,\n                token: token,\n                username: email,\n                order_id: order_id,\n                all_langs: 'yes',\n            }),\n            get body() {\n                return this._body;\n            },\n            set body(value) {\n                this._body = value;\n            },\n        })\n            .then((response) => response.json())\n        // return responseJson.data.payment_methods;\n    }\n    catch (error) {\n        console.error(error);\n    }\n}\n\nconst styles = StyleSheet.create({\n    container: {\n        flex: 1,\n        alignItems: 'center',\n        justifyContent: 'center',\n    },\n    listedItem: {\n        fontSize: 20,\n        margin: 5,\n    },\n    title: {\n        marginTop: 10,\n        fontSize: 30,\n    },\n    input: {\n        fontSize: 20,\n        margin: 5,\n        marginBottom: 10,\n        borderWidth: 2,  // size/width of the border\n        borderColor: 'lightgrey',  // color of the border\n        height: 30\n    },\n    inputArea: {\n        fontSize: 20,\n        margin: 5,\n        marginBottom: 10,\n        borderWidth: 2,  // size/width of the border\n        borderColor: 'lightgrey',  // color of the border\n\n    },\n    login_border: {\n        marginTop: 10,\n        width: '70%',\n        borderColor: '#000',\n        borderRadius: 5,\n        borderWidth: 2,\n        padding: 10,\n    },\n    image: {\n        padding: 10, alignSelf: 'center',\n        resizeMode: \"stretch\",\n        flex: 1,\n        width: '50%',\n        maxWidth: '100%',\n        height: 200,\n    },\n    leftorderItem: {\n        flex: 0.7,\n        textAlign: 'start',\n        fontSize: 16,\n        // background: '#285b97',\n        borderRadius: 3,\n        marginLeft: 5,\n        marginTop: 5,\n    },\n    leftlistedItem: {\n        flex: 0.7,\n        textAlign: 'start',\n        fontSize: 16,\n        fontWeight: \"bold\",\n        // background: '#285b97',\n        borderRadius: 3,\n        marginLeft: 5,\n        marginTop: 5,\n    },\n    rightlistedItem: {\n        flex: 0.3,\n        textAlign: 'end',\n        fontSize: 16,\n        // background: '#285b97',\n        borderRadius: 3,\n        marginLeft: 5,\n        marginTop: 5,\n    }, orderItem: {\n        fontSize: 16,\n        // background: '#285b97',\n        fontWeight: \"bold\",\n        borderRadius: 3,\n        marginLeft: 5,\n        textDecorationLine: 'underline',\n        marginTop: 5,\n    },\n});\n\nexport default OrderDetail;","import React, { Component } from 'react';\nimport { View, StyleSheet } from 'react-native';\nimport { Router, Switch, Route } from './routing';\nimport PaymentMethod from './PaymentMethod';\nimport ShowPayment from './ShowPayment';\nimport Login from './Login';\nimport AppChecking from './AppChecking';\nimport Productlist from './ProductList';\nimport ShowProduct from './ShowProduct';\nimport CreateProduct from './CreateProduct';\nimport EditProduct from './EditProduct';\nimport CreateCategory from './CreateCategory';\nimport Register from './Register'\nimport StockIn from './StockIn'\nimport StockOutList from './StockOutList'\nimport StockOut from './StockOut'\nimport SelectAction from './SelectAction'\nimport OrderList from './OrderList'\nimport OrderDetail from './OrderDetail'\n\nclass App extends Component {\n\n  render() {\n    return (\n      <View style={styles.container}>\n        <Router>\n          <Switch>\n            {/* <Route\n              exact\n              path=\"/\"\n              render={props => (\n                <PaymentMethod \n                {...props} \n                />\n              )}\n            />\n            <Route\n              path=\"/showPayment\"\n              render={props => (\n                <ShowPayment\n                  {...props}\n                />\n              )}\n            /> */}\n            <Route\n              exact\n              path=\"/\"\n              render={props => (\n                <AppChecking\n                  {...props}\n                />\n              )}\n            />\n            <Route\n              path=\"/login\"\n              render={props => (\n                <Login\n                  {...props}\n                />\n              )}\n            />\n            <Route\n              path=\"/productlist\"\n              render={props => (\n                <Productlist\n                  {...props}\n                />\n              )}\n            />\n            <Route\n              path=\"/showProduct\"\n              render={props => (\n                <ShowProduct\n                  {...props}\n                />\n              )}\n            />\n            <Route\n              path=\"/createProduct\"\n              render={props => (\n                <CreateProduct\n                  {...props}\n                />\n              )}\n            />\n            <Route\n              path=\"/editProduct\"\n              render={props => (\n                <EditProduct\n                  {...props}\n                />\n              )}\n            />\n            <Route\n              path=\"/createCategory\"\n              render={props => (\n                <CreateCategory\n                  {...props}\n                />\n              )}\n            />\n            <Route\n              path=\"/register\"\n              render={props => (\n                <Register\n                  {...props}\n                />\n              )}\n            />\n            <Route\n              path=\"/stockIn\"\n              render={props => (\n                <StockIn\n                  {...props}\n                />\n              )}\n            />\n            <Route\n              path=\"/stockOutList\"\n              render={props => (\n                <StockOutList\n                  {...props}\n                />\n              )}\n            />\n            <Route\n              path=\"/stockOut\"\n              render={props => (\n                <StockOut\n                  {...props}\n                />\n              )}\n            />\n            <Route\n              path=\"/selectAction\"\n              render={props => (\n                <SelectAction\n                  {...props}\n                />\n              )}\n            />\n            <Route\n              path=\"/orderList\"\n              render={props => (\n                <OrderList\n                  {...props}\n                />\n              )}\n            />\n            <Route\n              path=\"/orderDetail\"\n              render={props => (\n                <OrderDetail\n                  {...props}\n                />\n              )}\n            />\n          </Switch>\n        </Router>\n      </View>\n    );\n  }\n}\n\nconst styles = StyleSheet.create({\n  container: {\n    paddingTop: '5%',\n    paddingLeft: '15%',\n    paddingRight: '15%',\n    justifyContent: 'center',\n  }\n});\n\nexport default App;","import React from 'react';\nimport HybridApp from './src/App';\nconst App = (props) => {\n  return (\n    <HybridApp />\n  );\n}\nexport default App;","/* eslint-env browser */\n\nif ('serviceWorker' in navigator) {\n  window.addEventListener('load', function() {\n    navigator.serviceWorker\n      .register('/expo-service-worker.js', { scope: '/' })\n      .then(function(info) {\n        // console.info('Registered service-worker', info);\n      })\n      .catch(function(error) {\n        console.info('Failed to register service-worker', error);\n      });\n  });\n}\n","module.exports = __webpack_public_path__ + \"static/media/hippos_banner.c0c1a863.png\";"],"sourceRoot":""}