{"version":3,"sources":["/Users/echk/reactNative/hippo-react-native/web-build/register-service-worker.js","/Users/echk/reactNative/hippo-react-native/src/image/hippos_banner.png","/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/CreateBanner.js","/Users/echk/reactNative/hippo-react-native/src/SelectCompanyAction.js","/Users/echk/reactNative/hippo-react-native/src/storagePath.js","/Users/echk/reactNative/hippo-react-native/src/BannerList.js","/Users/echk/reactNative/hippo-react-native/src/EditBanner.js","/Users/echk/reactNative/hippo-react-native/src/EditCompany.js","/Users/echk/reactNative/hippo-react-native/src/CategoryList.js","/Users/echk/reactNative/hippo-react-native/src/EditCategory.js","/Users/echk/reactNative/hippo-react-native/src/StockInRecord.js","/Users/echk/reactNative/hippo-react-native/src/EditStockIn.js","/Users/echk/reactNative/hippo-react-native/src/CreateDeliveryCost.js","/Users/echk/reactNative/hippo-react-native/src/DeliveryCostList.js","/Users/echk/reactNative/hippo-react-native/src/EditDeliveryCost.js","/Users/echk/reactNative/hippo-react-native/src/CreateBrand.js","/Users/echk/reactNative/hippo-react-native/src/BrandList.js","/Users/echk/reactNative/hippo-react-native/src/EditBrand.js","/Users/echk/reactNative/hippo-react-native/src/App.js","/Users/echk/reactNative/hippo-react-native/src/index.js"],"names":["navigator","window","addEventListener","serviceWorker","register","scope","then","info","catch","error","console","module","exports","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","response","json","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","company","default_lang","ProductList","products","handlePagePress","page","getShopProducts","shopId","brandId","product","cover","now_page","pagination","onPressBack","shopItem","pages","brands","brandItem","getshops","shop","label","id","getBrands","brand","name_en","name_zh_TW","name_zh_CN","i","total_page","horizontal","ActivityIndicator","size","color","flexDirection","marginLeft","onEditCategory","marginBottom","marginRight","pickerSelectStyles","onValueChange","onSelect","items","onSelectBrand","itemDimension","enable","list_border","numberOfLines","listedItemName","inventory","price","listedItemComplete","listedItemCancel","ItemSeparatorComponent","space","extraData","selectedPageNum","listedPageNum","shop_id","brand_id","per_page","all_langs","flexWrap","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","warning_shop","warning_price","warning_name_en","image_uri","sku","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","ordering","keywords_en","keywords_zh_TW","keywords_zh_CN","categoryItems","shopItems","show","textInput","brandItems","brandID","selectedIndex","buttonItem","is_english","is_traditional","is_simplified","keyword_en","keyword_en_withno_space","replace","split","keyword_zh_TW","keyword_zh_TW_withno_space","keyword_zh_CN","keyword_zh_CN_withno_space","pass","createProduct","category_items","shop_items","includes","index","splice","warning_item","textStyle","dataSource","itemShowKey","itemCheckedKey","iconSize","formHorizontal","labelHorizontal","onChecked","inputfield","updateIndex","buttons","containerStyle","alignContent","onComplete","theme","handleRemoveImage","ListEmptyComponent","colors","primary","shop_ids","category_ids","keywords","FormData","append","EditProduct","onBack","onStockIn","onStockInRecord","onStockOut","product_id","remove_image_ids","imageIDs","isEnabled","switch_position","switch_options","toString","categiriesArray","categriesIDs","category","categriesID","shopArray","shopID","keywordsArray_en","keywordNames_en","keywordsArray_zh_TW","keywordNames_zh_TW","keywordsArray_zh_CN","keywordNames_zh_CN","imagesArray","imagePaths","previewImages","bannner","options","initial","buttonColor","switchSelected","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","clearInterval","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","SelectAction","select","onCreateOrder","onCheckRecord","onEditCompany","onLogout","OrderList","order","getOrders","orders","shopList","status","listedItemBold","order_number","find","amount","listedItemPending","order_id","fontWeight","OrderDetail","is_edit","delivery_address","delivery_date","had_member","receiver_contact","receiver_email","receiver_name","sender_contact","sender_email","sender_name","enable_options","order_options","order_status","payment_status","order_from","getOrderDetail","from","member","updatePaymentStatus","payment_id","updateOrderStatus","leftlistedItem","rightlistedItem","member_no","orderItem","leftorderItem","delivery_cost","discount","payments","switchEnableSelected","attachments","href","target","receipt","switchEnableStatusSelected","onUpdate","button","onEditButtonPress","CreateBanner","url","new_page","enable_position","createBanner","banner","SelectCompanyAction","onCreateBanner","onEditBanner","onCreateBrand","onEditBrand","onCreateDeliveryCost","onEditDeliveryCost","BannerList","banners","getBanners","storagePath","banner_id","EditBanner","updateBanner","imagePath","deleteBanner","paddingTop","paddingBottom","EditCompany","_onLangSelect","langArray","langOptions","default_lang_options","default_lang_position","updateCompanyInfo","langs","lang","logo","switchLangSelected","CategoryList","getCategories","onCreateCategory","EditCategory","editCategory","removeCategory","deleteCategory","category_id","StockInRecord","stockInRecord","EditStockIn","CreateDeliveryCost","operatorItem","operator1","operand1","operator2","operand2","warning_operator1","warning_operand1","warning_cost","warning_operator2","warning_operand2","createDeliveryCost","onSelect2","DeliveryCostList","delivery_costs","deliveryCosts","delivery_cost_id","EditDeliveryCost","deleteDeliveryCost","handleRemove","CreateBrand","createBrand","BrandList","EditBrand","updateBrand","deleteBrand","doDeleteBrand","App","exact","render","AppRegistry","registerComponent","runApplication","rootTag","document","getElementById"],"mappings":"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","file":"static/js/app.90a1330f.chunk.js","sourcesContent":["/* 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\";","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/'\n\n//export default 'http://devpos.hippos.systems/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                        console.log(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                        AsyncStorage.setItem('company', JSON.stringify(data.data.company))\n                        AsyncStorage.setItem('default_lang', data.data.company.default_lang)\n\n                        // getBanner(uuid, token, userInfo.email).then(data => {\n                        //     console.log(data)\n                        //     this.setState({\n                        //         logined: \"logined\"\n                        //     })\n                        // });\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 getBanner(uuid, token, email) {\n    try {\n        return fetch(path + 'banners', {\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 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, this.state.brandId).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        now_page: page,\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  onEditCategory() {\n    this.props.history.push('/categoryList');\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      now_page: 1,\n      uuid: '',\n      token: '',\n      username: '',\n      brands: null,\n      brandItem: [],\n      brandId: '',\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    const default_lang = await AsyncStorage.getItem('default_lang')\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      getBrands(uuid, token, userInfo.email).then(data => {\n        console.log(data)\n        var brands = data.data.brands\n\n        var brandItem = [];\n        for (let brand of brands) {\n          if (default_lang == \"en\") {\n            brandItem.push({ label: brand.name_en, value: brand.id });\n          } else if (default_lang == \"zh_TW\") {\n            brandItem.push({ label: brand.name_zh_TW, value: brand.id });\n          } else {\n            brandItem.push({ label: brand.name_zh_CN, value: brand.id });\n          }\n        }\n\n        if (brands != null) {\n          this.setState({\n            brands,\n            brandItem,\n            brandId: brands[0].id\n          })\n          getShopProducts(uuid, token, userInfo.email, shops[0].id, '1', brands[0].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 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        } else {\n          this.setState({\n            brands,\n            brandItem,\n          })\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\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', this.state.brandId).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  onSelectBrand(value) {\n    console.log(value)\n    getShopProducts(this.state.uuid, this.state.token, this.state.username, this.state.shopId, '1', value).then(data => {\n      console.log(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    this.setState({\n      brandId: 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, flexDirection: 'column-reverse' }}>\n              <View style={{\n                marginTop: 10,\n              }}>\n                <Button\n                  title=\"新增貨品 Create Product\"\n                  onPress={this.onPressButton.bind(this)}\n                />\n              </View>\n              <Button\n                style={{ marginTop: 10 }}\n                title=\"編輯分類 Edit Category\"\n                onPress={this.onEditCategory.bind(this)}\n              />\n              <Button\n                style={{ marginTop: 10 }}\n                large\n                title=\"返回 Back\"\n                onPress={this.onPressBack.bind(this)}\n              />\n            </View>\n            <View style={{ marginLeft: 20, flexDirection: 'column-reverse' }}>\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              <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 }}>品牌 Brand : </Text>\n                <RNPickerSelect\n                  value={this.state.brandId}\n                  style={{ ...pickerSelectStyles }}\n                  onValueChange={this.onSelectBrand.bind(this)}\n                  // onValueChange={(value) => console.log(value)}\n                  items={this.state.brandItem}\n                />\n              </View>\n\n              {/* <Button\n                title=\"登出 Logout\"\n                onPress={this.onLogout.bind(this)}\n              /> */}\n            </View>\n\n          </View>\n\n          <View >\n            <FlatGrid\n              itemDimension={300}\n              items={this.state.products}\n              renderItem={({ item }) => {\n                if (item.enable == 'yes') {\n                  return (\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 numberOfLines={1} style={styles.listedItemName}>{item.name_en}</Text>\n                          <Text style={styles.listedItem}>{`貨存Inventory : ` + item.inventory}</Text>\n                          <Text style={styles.listedItem}>{`價錢Price : ` + item.price}</Text>\n                          <Text style={styles.listedItemComplete}>{`狀態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}>\n                        <View >\n                          <Image source={item.cover} style={styles.cover} />\n                        </View>\n                        <View>\n                          <Text numberOfLines={1} style={styles.listedItemName}>{item.name_en}</Text>\n                          <Text style={styles.listedItem}>{`貨存Inventory : ` + item.inventory}</Text>\n                          <Text style={styles.listedItem}>{`價錢Price : ` + item.price}</Text>\n                          <Text style={styles.listedItemCancel}>{`狀態Status :  已停用 `}</Text>\n                        </View>\n                      </View>\n                    </TouchableOpacity>\n                  )\n                }\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                extraData={this.state}\n                renderItem={({ item }) => {\n                  if (item == this.state.now_page) {\n                    return (\n                      <Text style={styles.selectedPageNum}>{item}</Text>\n                    )\n                  } else {\n                    return (\n                      <TouchableOpacity onPress={() => this.handlePagePress(item)}>\n                        <Text style={styles.listedPageNum}>{item}</Text>\n                      </TouchableOpacity>\n                    )\n                  }\n                }\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, brandId) {\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        brand_id: brandId,\n        per_page: '24',\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 getBrands(uuid, token, email) {\n  try {\n    return fetch(path + 'inventory/brands', {\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        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: 14,\n    // background: '#285b97',\n    borderRadius: 3,\n    padding: 5,\n    marginLeft: 2,\n  },\n  listedItemName: {\n    fontSize: 16,\n    // background: '#285b97',\n    flexWrap: 'wrap',\n    width: 200,\n    borderRadius: 3,\n    padding: 5,\n    marginLeft: 2,\n  },\n  listedPageNum: {\n    fontSize: 18,\n    marginRight: 5,\n    textDecorationLine: 'underline',\n    color: 'blue'\n  },\n  selectedPageNum: {\n    fontSize: 20,\n    marginRight: 5,\n    color: 'Black'\n  },\n  listedItemCancel: {\n    fontSize: 14,\n    color: 'red',\n    borderRadius: 3,\n    padding: 5,\n    marginLeft: 2,\n  },\n  listedItemComplete: {\n    fontSize: 14,\n    color: '#62C377',\n    // background: '#285b97',\n    borderRadius: 3,\n    padding: 5,\n    marginLeft: 2,\n  },\n  image: {\n    resizeMode: \"contain\",\n    width: '30%',\n    height: 120,\n    marginTop: 10,\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: 100,\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, ButtonGroup } 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            warning_shop: false,\n            warning_price: false,\n            warning_name_en: false,\n\n            image_uri: '',\n            sku: '',\n            price: '0',\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            ordering: '',\n            //keywords: '',\n            keywords_en: '',\n            keywords_zh_TW: '',\n            keywords_zh_CN: '',\n            categoryItems: null,\n            categoryIDs: null,\n            shopItems: null,\n            shopIDs: null,\n            show: false,\n            images: [],\n            previewImage: [],\n            textInput: [],\n\n            //Brand\n            brands: null,\n            brandItems: null,\n            brandID: '',\n\n            //ButtonGroup\n            selectedIndex: 0,\n            buttonItem: [],\n\n            is_english: false,\n            is_traditional: false,\n            is_simplified: false,\n\n            uuid: '',\n            token: '',\n            email: '',\n\n            default_lang: '',\n        };\n    }\n\n    async onPressButton() {\n\n        this.setState({\n            warning_shop: false,\n            warning_price: false,\n            warning_name_en: false,\n        })\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        const keyword_en = this.state.keywords_en\n        const keyword_en_withno_space = keyword_en.replace(/\\s/g, '');\n        const keywords_en = keyword_en_withno_space.split(',')\n\n        const keyword_zh_TW = this.state.keywords_zh_TW\n        const keyword_zh_TW_withno_space = keyword_zh_TW.replace(/\\s/g, '');\n        const keywords_zh_TW = keyword_zh_TW_withno_space.split(',')\n\n        const keyword_zh_CN = this.state.keywords_zh_CN\n        const keyword_zh_CN_withno_space = keyword_zh_CN.replace(/\\s/g, '');\n        const keywords_zh_CN = keyword_zh_CN_withno_space.split(',')\n\n        var categoryIDs = this.state.categoryIDs;\n\n        if (categoryIDs == null) {\n            categoryIDs = []\n            categoryIDs.push('')\n        }\n\n        var pass = false\n\n        if (this.state.default_lang == \"en\" && this.state.name_en != '' ) {\n            pass = true\n        } else if (this.state.default_lang == \"zh_TW\" && this.state.name_zh_TW != '' ) {\n            pass = true\n        } else if (this.state.default_lang == \"zh_CN\" && this.state.name_zh_CN != '' ) {\n            pass = true\n        } else {\n            pass = false\n        }\n\n        if (this.state.shopIDs != null && this.state.price != '' && pass) {\n            createProduct(this.state.email, this.state.uuid, this.state.shopIDs, this.state.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_en, keywords_zh_TW, keywords_zh_CN, this.state.images, this.state.ordering, this.state.brandID).then(data => {\n                    this.props.history.push('/productlist');\n                });\n        }\n\n        if (this.state.shopIDs == null) {\n            this.setState({ warning_shop: true })\n        }\n        if (this.state.price === \"\") {\n            this.setState({ warning_price: true })\n        }\n\n        if (this.state.default_lang == \"en\" && this.state.name_en === \"\" ) {\n            this.setState({ warning_name_en: true })\n        } else if (this.state.default_lang == \"zh_TW\" && this.state.name_zh_TW === \"\") {\n            this.setState({ warning_name_en: true })\n        } else if (this.state.default_lang == \"zh_CN\" && this.state.name_zh_CN === \"\" ) {\n            this.setState({ warning_name_en: true })\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\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 default_lang = await AsyncStorage.getItem('default_lang')\n\n        console.log(default_lang)\n\n        var is_english = false;\n        var is_traditional = false\n        var is_simplified = false\n\n        var selectedIndex = 0\n\n        if (default_lang == \"en\") {\n            selectedIndex = 0\n            is_english = true\n            is_traditional = false\n            is_simplified = false\n        } else if (default_lang == \"zh_TW\") {\n            selectedIndex = 1\n            is_english = false\n            is_traditional = true\n            is_simplified = false\n        } else {\n            selectedIndex = 2\n            is_english = false\n            is_traditional = false\n            is_simplified = true\n        }\n\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        const buttonItem = ['英文English', '繁體中文Traditional', '简体中文Simplified']\n\n        this.setState({\n            uuid,\n            token,\n            email: userInfo.email,\n            categoryItems,\n            shopItems,\n            buttonItem,\n            default_lang,\n            selectedIndex,\n            is_english,\n            is_traditional,\n            is_simplified\n        })\n\n\n        getBrands(uuid, token, userInfo.email).then(data => {\n            console.log(data)\n            var brands = data.data.brands\n\n            var brandItems = []\n            for (let brand of brands) {\n                if (default_lang == \"en\") {\n                    brandItems.push({ label: brand.name_en, value: brand.id })\n                } else if (default_lang == \"zh_TW\") {\n                    brandItems.push({ label: brand.name_zh_TW, value: brand.id })\n                } else {\n                    brandItems.push({ label: brand.name_zh_CN, value: brand.id })\n                }\n            }\n\n            console.log(brandItems)\n            this.setState({\n                brands,\n\n                show: true,\n                brandItems,\n            })\n        })\n    }\n\n    onSelect(value) {\n        console.log(value)\n        if (value.includes(\"Select\")) {\n            this.setState({\n                brandID: ''\n            })\n        } else {\n            this.setState({\n                brandID: value\n            })\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    updateIndex(selectedIndex) {\n        if (selectedIndex == 0) {\n            this.setState({\n                selectedIndex,\n                is_english: true,\n                is_traditional: false,\n                is_simplified: false\n            })\n        } else if (selectedIndex == 1) {\n            this.setState({\n                selectedIndex,\n                is_english: false,\n                is_traditional: true,\n                is_simplified: false\n            })\n        } else {\n            this.setState({\n                selectedIndex,\n                is_english: false,\n                is_traditional: false,\n                is_simplified: true\n            })\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 && this.state.brands != null) {\n            return (\n                <View>\n                    {this.state.warning_shop &&\n                        <Text style={styles.warning_item}>請選擇店鋪Please Select Shop</Text>}\n                    {this.state.warning_price && <Text style={styles.warning_item}>請輸入價錢Please Fill In Price</Text>}\n                    {this.state.warning_name_en && <Text style={styles.warning_item}>請輸入名稱Please Fill In Name(EN)</Text>}\n\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\n                    <Text style={styles.text}>品牌Brand</Text>\n                    <RNPickerSelect\n                        style={{ ...pickerSelectStyles }}\n                        value={this.state.brandID}\n                        onValueChange={this.onSelect.bind(this)}\n                        // onValueChange={(value) => console.log(value)}\n                        items={this.state.brandItems}\n                    />\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}>分類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\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                    <View>\n                        <Text style={styles.text}>次序 Ordering</Text>\n                        <TextInput\n                            style={styles.inputfield}\n                            placeholder=\"e.g. 1/2/3/4, 數字愈大愈前\"\n                            onChangeText={(text) => { this.setState({ ordering: text }) }}\n                            value={`${this.state.ordering}`}\n                        />\n                    </View>\n\n                    <View style={{ alignItems: 'center' }}>\n                        <Text style={styles.text}>語言Language</Text>\n                        <ButtonGroup\n                            onPress={this.updateIndex.bind(this)}\n                            selectedIndex={this.state.selectedIndex}\n                            buttons={this.state.buttonItem}\n                            containerStyle={{ height: 40, width: '50%', justifyContent: 'center', alignContent: 'center' }}\n                        />\n                    </View>\n\n                    {this.state.is_english &&\n                        <View>\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}>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\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\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}>Keywords(EN)</Text>\n                            <TextInput\n                                style={styles.inputfield}\n                                textContentType=\"text\"\n                                placeholder=\"Keywords : 食物, Food, etc..\"\n                                onChangeText={(text) => { this.setState({ keywords_en: text }) }}\n                                value={this.state.keywords_en}\n                            />\n                        </View>\n                    }\n                    {this.state.is_traditional &&\n                        <View>\n                            <Text style={styles.text}>名稱(繁體)</Text>\n                            <TextInput\n                                style={styles.inputfield}\n                                textContentType=\"text\"\n                                placeholder=\"名稱(繁體)\"\n                                onChangeText={(text) => { this.setState({ name_zh_TW: text }) }}\n                                value={this.state.name_zh_TW}\n                            />\n\n\n                            <Text style={styles.text}>包裝(繁體)</Text>\n                            <TextInput\n                                style={styles.inputfield}\n                                textContentType=\"text\"\n                                placeholder=\"包裝(繁體)\"\n                                onChangeText={(text) => { this.setState({ packing_zh_TW: text }) }}\n                                value={this.state.packing_zh_TW}\n                            />\n                            <Text style={styles.text}>介紹(繁體)</Text>\n                            <TextInput\n                                style={styles.inputfield}\n                                textContentType=\"text\"\n                                placeholder=\"介紹(繁體)\"\n                                onChangeText={(text) => { this.setState({ description_zh_TW: text }) }}\n                                value={this.state.description_zh_TW}\n                            />\n\n                            <Text style={styles.text}>簡介(繁體)</Text>\n                            <TextInput\n                                style={styles.inputfield}\n                                textContentType=\"text\"\n                                placeholder=\"簡介(繁體)\"\n                                onChangeText={(text) => { this.setState({ short_description_zh_TW: text }) }}\n                                value={this.state.short_description_zh_TW}\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_zh_TW: text }) }}\n                                value={this.state.keywords_zh_TW}\n                            />\n                        </View>\n                    }\n                    {this.state.is_simplified &&\n                        <View>\n                            <Text style={styles.text}>名称(简体)</Text>\n                            <TextInput\n                                style={styles.inputfield}\n                                textContentType=\"text\"\n                                placeholder=\"名称(简体)\"\n                                onChangeText={(text) => { this.setState({ name_zh_CN: text }) }}\n                                value={this.state.name_zh_CN}\n                            />\n\n                            <Text style={styles.text}>包装(简体)</Text>\n                            <TextInput\n                                style={styles.inputfield}\n                                textContentType=\"text\"\n                                placeholder=\"包装(简体)\"\n                                onChangeText={(text) => { this.setState({ packing_zh_CN: text }) }}\n                                value={this.state.packing_zh_CN}\n                            />\n\n                            <Text style={styles.text}>介绍(简体)</Text>\n                            <TextInput\n                                style={styles.inputfield}\n                                textContentType=\"text\"\n                                placeholder=\"介绍(简体)\"\n                                onChangeText={(text) => { this.setState({ description_zh_CN: text }) }}\n                                value={this.state.description_zh_CN}\n                            />\n\n\n                            <Text style={styles.text}>简介(简体)</Text>\n                            <TextInput\n                                style={styles.inputfield}\n                                textContentType=\"text\"\n                                placeholder=\"简介(简体)\"\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}>關鍵字(简体)Keywords</Text>\n                            <TextInput\n                                style={styles.inputfield}\n                                textContentType=\"text\"\n                                placeholder=\"關鍵字Keywords : 食物, Food, etc..\"\n                                onChangeText={(text) => { this.setState({ keywords_zh_CN: text }) }}\n                                value={this.state.keywords_zh_CN}\n                            />\n                        </View>\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                    {this.state.warning_shop &&\n                        <Text style={styles.warning_item}>請選擇店鋪Please Select Shop</Text>}\n                    {this.state.warning_price && <Text style={styles.warning_item}>請輸入價錢Please Fill In Price</Text>}\n                    {this.state.warning_name_en && <Text style={styles.warning_item}>請輸入名稱Please Fill In Name(EN)</Text>}\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    warning_item: {\n        color: 'red',\n        fontSize: 20,\n        margin: 5,\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, keywords_en, keywords_zh_TW, keywords_zh_CN, images, ordering, brand_id) {\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('keywords_en', keywords_en);\n    data.append('keywords_zh_TW', keywords_zh_TW);\n    data.append('keywords_zh_CN', keywords_zh_CN);\n    data.append('category_ids', '[' + category_ids + ']');\n    data.append('ordering', ordering);\n    data.append('brand_id', brand_id);\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\nasync function getBrands(uuid, token, email) {\n    try {\n        return fetch(path + 'inventory/brands', {\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                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\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 CreateProduct;","import React, { Component } from 'react';\nimport { FlatList, Image, StyleSheet, Alert, View, TextInput, Text, Switch } from 'react-native';\nimport { Button, ThemeProvider, ThemeConsumer, ButtonGroup } 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'\nimport SwitchSelector from 'react-native-switch-selector';\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            warning_shop: false,\n\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            ordering: '',\n            //keywords: '',\n            keywords_en: '',\n            keywords_zh_TW: '',\n            keywords_zh_CN: '',\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            isEnabled: '',\n            switch_position: 0,\n            switch_options: [],\n\n            //Brand\n            brands: null,\n            brandItems: null,\n            brandID: '',\n\n            //ButtonGroup\n            selectedIndex: 0,\n            buttonItem: [],\n\n            is_english: true,\n            is_traditional: false,\n            is_simplified: false,\n\n            default_lang: '',\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\n        const keyword_en = this.state.keywords_en\n        const keyword_en_withno_space = keyword_en.toString().replace(/\\s/g, '');\n        const keywords_en = keyword_en_withno_space.split(',')\n\n        const keyword_zh_TW = this.state.keywords_zh_TW\n        const keyword_zh_TW_withno_space = keyword_zh_TW.toString().replace(/\\s/g, '');\n        const keywords_zh_TW = keyword_zh_TW_withno_space.split(',')\n\n        const keyword_zh_CN = this.state.keywords_zh_CN\n        const keyword_zh_CN_withno_space = keyword_zh_CN.toString().replace(/\\s/g, '');\n        const keywords_zh_CN = keyword_zh_CN_withno_space.split(',')\n\n        if (this.state.shopIDs.length > 0) {\n            createProduct(this.state.product_id, userInfo.email, uuid, this.state.shopIDs, token, this.state.sku, this.state.price, this.state.isEnabled,\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, '', keywords_en, keywords_zh_TW, keywords_zh_CN, this.state.images, this.state.remove_image_ids, this.state.ordering, this.state.brandID).then(data => {\n                    console.log(data)\n                    this.props.history.push('/productlist');\n                });\n        }\n\n        if (this.state.shopIDs == 0) {\n            this.setState({ warning_shop: true })\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    onSelect(value) {\n        console.log(value)\n        if (value.includes(\"Select\")) {\n            this.setState({\n                brandID: ''\n            })\n        } else {\n            this.setState({\n                brandID: value\n            })\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        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({ 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 keywordsArray_en = this.props.location.state.keywords_en\n\n        var keywordNames_en = []\n\n        for (let keyword_en of keywordsArray_en) {\n            keywordNames_en.push(keyword_en.name)\n            console.log(keyword_en.name)\n        }\n\n        var keywordsArray_zh_TW = this.props.location.state.keywords_zh_TW\n\n        var keywordNames_zh_TW = []\n\n        for (let keyword_zh_TW of keywordsArray_zh_TW) {\n            keywordNames_zh_TW.push(keyword_zh_TW.name)\n            console.log(keyword_zh_TW.name)\n        }\n\n        var keywordsArray_zh_CN = this.props.location.state.keywords_zh_CN\n\n        var keywordNames_zh_CN = []\n\n        for (let keyword_zh_CN of keywordsArray_zh_CN) {\n            keywordNames_zh_CN.push(keyword_zh_CN.name)\n        }\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        const switch_options = [\n            { label: \"下架Disable\", value: 'no' },\n            { label: \"上架Active\", value: 'yes' },\n        ];\n\n        var isEnabled = ''\n        var switch_position = 0\n\n        if (this.props.location.state.enable === 'yes') {\n            isEnabled = 'yes'\n            switch_position = 1\n        } else if (this.props.location.state.enable === 'no') {\n            isEnabled = 'no'\n            switch_position = 0\n        }\n\n        const buttonItem = ['英文English', '繁體中文Traditional', '简体中文Simplified']\n\n        var brandID = ''\n        if(this.props.location.state.brand!=null){\n            brandID = this.props.location.state.brand.id\n        }\n\n        const default_lang = await AsyncStorage.getItem('default_lang')\n\n        var is_english = false;\n        var is_traditional = false\n        var is_simplified = false\n\n        var selectedIndex = 0\n\n        if (default_lang == \"en\") {\n            selectedIndex = 0\n            is_english = true\n            is_traditional = false\n            is_simplified = false\n        } else if (default_lang == \"zh_TW\") {\n            selectedIndex = 1\n            is_english = false\n            is_traditional = true\n            is_simplified = false\n        } else {\n            selectedIndex = 2\n            is_english = false\n            is_traditional = false\n            is_simplified = true\n        }\n\n        this.setState({\n            buttonItem,\n            product_id: this.props.location.state.id,\n            categoryItems,\n            shopItems,\n            isEnabled,\n            switch_position,\n            switch_options,\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            keywords_en: keywordNames_en,\n            keywords_zh_TW: keywordNames_zh_TW,\n            keywords_zh_CN: keywordNames_zh_CN,\n            imageIDs: imageIDs,\n            categoryIDs: categriesIDs,\n            shopIDs,\n            brandID,\n            // images: imagePaths,\n            default_lang,\n            selectedIndex,\n            is_english,\n            is_traditional,\n            is_simplified,\n            previewImage: imagePaths,\n            ordering: this.props.location.state.ordering,\n        })\n\n        getBrands(uuid, token, userInfo.email).then(data => {\n            console.log(data)\n            var brands = data.data.brands\n\n            var brandItems = []\n            for (let brand of brands) {\n                brandItems.push({ label: brand.name_en, value: brand.id })\n            }\n\n            console.log(brandItems)\n            this.setState({\n                brands,\n\n                show: true,\n                brandItems,\n            })\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    onStockInRecord = () => {\n        this.props.history.push('/stockInRecord', 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 = this.state.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,\n                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    switchSelected(value) {\n        if (value == 'no') {\n            this.setState({ isEnabled: 'no', switch_position: 0 })\n        } else {\n            this.setState({ isEnabled: 'yes', switch_position: 1 })\n        }\n    }\n\n    updateIndex(selectedIndex) {\n        if (selectedIndex == 0) {\n            this.setState({\n                selectedIndex,\n                is_english: true,\n                is_traditional: false,\n                is_simplified: false\n            })\n        } else if (selectedIndex == 1) {\n            this.setState({\n                selectedIndex,\n                is_english: false,\n                is_traditional: true,\n                is_simplified: false\n            })\n        } else {\n            this.setState({\n                selectedIndex,\n                is_english: false,\n                is_traditional: false,\n                is_simplified: true\n            })\n        }\n    }\n\n    render() {\n        if (this.state.show && this.state.brands != null) {\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                                    }}\n                                    title=\"入庫記錄 Stock In Record\"\n                                    onPress={this.onStockInRecord.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\n                    <Text style={styles.title}>編輯貨品Edit Product</Text>\n                    <View style={styles.border}>\n\n                        {this.state.warning_shop &&\n                            <Text style={styles.warning_item}>請選擇店鋪Please Select Shop</Text>}\n\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\n                        <Text style={styles.text}>品牌Brand</Text>\n                        <RNPickerSelect\n                            style={{ ...pickerSelectStyles }}\n                            value={this.state.brandID}\n                            onValueChange={this.onSelect.bind(this)}\n                            // onValueChange={(value) => console.log(value)}\n                            items={this.state.brandItems}\n                        />\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}>上下架Active/Disable</Text>\n                        <View style={{ width: '30%', borderRadius: 50, borderColor: '#4189D6', borderWidth: 2 }}>\n                            <SwitchSelector\n                                options={this.state.switch_options}\n                                initial={this.state.switch_position}\n                                buttonColor={'#4189D6'}\n                                onPress={(value) => this.switchSelected(value)}\n                            />\n                        </View>\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}>條碼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                        <View>\n                            <Text style={styles.text}>次序 Ordering</Text>\n                            <TextInput\n                                style={styles.inputfield}\n                                placeholder=\"e.g. 1/2/3/4, 數字愈大愈前\"\n                                onChangeText={(text) => { this.setState({ ordering: text }) }}\n                                value={`${this.state.ordering}`}\n                            />\n                        </View>\n\n                        <View style={{ alignItems: 'center' }}>\n                            <Text style={styles.text}>語言Language</Text>\n                            <ButtonGroup\n                                onPress={this.updateIndex.bind(this)}\n                                selectedIndex={this.state.selectedIndex}\n                                buttons={this.state.buttonItem}\n                                containerStyle={{ height: 40, width: '50%', justifyContent: 'center', alignContent: 'center' }}\n                            />\n                        </View>\n\n                        {this.state.is_english &&\n\n                            <View>\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}>包裝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}>介紹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}>簡介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}>Keywords</Text>\n                                <TextInput\n                                    style={styles.inputfield}\n                                    textContentType=\"text\"\n                                    placeholder=\"Keywords : 食物, Food, etc..\"\n                                    onChangeText={(text) => { this.setState({ keywords_en: text }) }}\n                                    value={`${this.state.keywords_en}`}\n                                />\n                            </View>\n                        }\n                        {this.state.is_traditional &&\n                            <View>\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}>包裝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}>介紹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}>簡介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}>關鍵字Keywords(繁體)</Text>\n                                <TextInput\n                                    style={styles.inputfield}\n                                    textContentType=\"text\"\n                                    placeholder=\"關鍵字Keywords : 食物, Food, etc..\"\n                                    onChangeText={(text) => { this.setState({ keywords_zh_TW: text }) }}\n                                    value={`${this.state.keywords_zh_TW}`}\n                                />\n                            </View>\n                        }\n                        {this.state.is_simplified &&\n                            <View>\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}>包裝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(簡體)</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(簡體)</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                                <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_zh_CN: text }) }}\n                                    value={`${this.state.keywords_zh_CN}`}\n                                />\n                            </View>\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\n                        {this.state.warning_shop &&\n                            <Text style={styles.warning_item}>請選擇店鋪Please Select Shop</Text>}\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\nasync function getBrands(uuid, token, email) {\n    try {\n        return fetch(path + 'inventory/brands', {\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                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    text: {\n        marginTop: 10,\n        marginBottom: 2,\n        fontSize: 20,\n    },\n    warning_item: {\n        color: 'red',\n        fontSize: 20,\n        margin: 5,\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, isEnabled,\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, keywords_en, keywords_zh_TW, keywords_zh_CN, images, remove_image_ids, ordering, brand_id) {\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', isEnabled);\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('keywords_en', keywords_en);\n    data.append('keywords_zh_TW', keywords_zh_TW);\n    data.append('keywords_zh_CN', keywords_zh_CN);\n    data.append('remove_image_ids', '[' + remove_image_ids + ']');\n    data.append('category_ids', '[' + category_ids + ']');\n    data.append('all_langs', 'yes')\n    data.append('ordering', ordering)\n    data.append('brand_id', brand_id);\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\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 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('/categoryList');\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      console.log(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\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            remaining_qty : stock.remaining_qty,\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    \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    onEditCompany(){\n        this.props.history.push('/selectCompanyAction')\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                            large\n                            title=\"更改公司設定 Edit Company\"\n                            onPress={this.onEditCompany.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, 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'\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    getOrders(this.state.uuid, this.state.token, this.state.username, page, this.state.shopId).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      console.log(orders)\n\n      this.setState({\n        orders,\n        now_page : page,\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      shopId: '',\n      shopList: [],\n      shopItem: [],\n      now_page: 1,\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\n    getshops(uuid, token, userInfo.email).then(data => {\n      const shopList = data.data.shops\n      var shopItem = [];\n      for (let shop of shopList) {\n        shopItem.push({ label: shop.name, value: shop.id });\n      }\n      //const shopId = shopItem[0].id\n      this.setState({ shopList, shopItem, shopId: shopList[0].id })\n      \n    getOrders(uuid, token, userInfo.email, '1', shopList[0].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 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\n\n  onPressBack = () => {\n    this.props.history.push('/');\n  }\n\n  onSelect(value) {\n    getOrders(this.state.uuid, this.state.token, this.state.username, page, this.state.shopId).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    this.setState({\n      shopId: value\n    })\n  }\n\n  render() {\n\n    if (this.state.shopId == '') {\n      return (\n        <View style={[styles.container, styles.horizontal]}>\n          <ActivityIndicator size=\"large\" color=\"#0000ff\" />\n        </View>\n      )\n    }\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        <View style={{ marginLeft: 20, flexDirection: 'column-reverse' }}>\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        </View>\n        <View style={styles.border}>\n          <FlatList\n            contentContainerStyle={{ flexGrow: 1, justifyContent: 'center' }}\n            data={this.state.orders}\n            showsVerticalScrollIndicator={false}\n            extraData={this.state}\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              } \n              else if (item.status == 'delivering') {\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              }\n              else if (item.status == 'paid') {\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              }\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              extraData={this.state}\n              renderItem={({ item }) => {\n                if (item == this.state.now_page) {\n                  return (\n                      <Text style={styles.selectedPageNum}>{item}</Text>                    \n                  )\n                } else {\n                  return (\n                    <TouchableOpacity onPress={() => this.handlePagePress(item)}>\n                      <Text style={styles.listedPageNum}>{item}</Text>\n                    </TouchableOpacity>\n                  )\n                }\n              }\n              }\n            />\n          </View>\n        </View>\n      </View >\n    );\n  }\n}\n\nasync function getOrders(uuid, token, email, page, shop_id) {\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        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\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\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  selectedPageNum: {\n    fontSize: 20,\n    marginRight: 5,\n    color: 'Black'\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\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 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'\nimport SwitchSelector from 'react-native-switch-selector';\n\nclass OrderDetail extends Component {\n\n    constructor(props) {\n        super(props);\n        this.state = {\n            is_edit: false,\n\n            order: null,\n            delivery_address: '',\n            delivery_date: '',\n            had_member: false,\n            receiver_contact: \"\",\n            receiver_email: \"\",\n            receiver_name: \"\",\n            remark: \"\",\n            sender_contact: \"\",\n            sender_email: \"\",\n            sender_name: \"\",\n\n            enable_options: [],\n\n            order_options:[],\n            order_status: 0,\n            payment_status:0,\n            order_from: \"\",\n        };\n    }\n\n    async onPressButton() {\n        this.props.history.push('/orderList');\n    }\n\n    async onEditButtonPress() {\n        this.setState({\n            is_edit: true\n        })\n    }\n\n    async onUpdate() {\n        this.setState({\n            is_edit: false\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        getOrderDetail(uuid, token, userInfo.email, this.props.location.state.order_id).then(data => {\n            var order = data.data.order\n\n            var delivery_address = data.data.order.delivery_address\n            var delivery_date = data.data.order.delivery_date\n            var receiver_contact = data.data.order.receiver_contact\n            var receiver_email = data.data.order.receiver_email\n            var receiver_name = data.data.order.receiver_name\n            var remark = data.data.order.remark\n            var sender_contact = data.data.order.sender_contact\n            var sender_email = data.data.order.sender_email\n            var sender_name = data.data.order.sender_name\n            var order_from = data.data.order.from == \"customer\"?\"yes\":\"no\"\n\n            if (delivery_address == '') {\n                delivery_address = '-'\n            }\n\n            if (delivery_date == '') {\n                delivery_date = '-'\n            }\n\n            if (receiver_contact == '') {\n                receiver_contact = '-'\n            }\n\n            if (receiver_email == '') {\n                receiver_email = '-'\n            }\n\n            if (receiver_name == '') {\n                receiver_name = '-'\n            }\n\n            if (remark == '') {\n                remark = '-'\n            }\n\n            if (sender_contact == '') {\n                sender_contact = '-'\n            }\n\n            if (sender_email == '') {\n                sender_email = '-'\n            }\n\n            if (sender_name == '') {\n                sender_name = '-'\n            }\n\n            var member = data.data.order.member\n            var had_member = false\n            if (member != null) {\n                had_member = true\n            }\n\n            const enable_options = [\n                { label: \"處理中Pending\", value: 'pending' },\n                { label: \"已付款Paid\", value: 'paid' },\n                { label: \"已失敗Failed\", value: 'failed' },\n            ];\n\n            const order_options = [\n                { label: \"處理中Pending\", value: 'pending' },\n                { label: \"已付款Paid\", value: 'paid' },\n                { label: \"送貨中Delivering\", value: 'delivering' },\n                { label: \"已完成Completed\", value: 'completed' },\n                { label: \"已取消Cancelled\", value: 'cancelled' },\n            ];\n\n            var order_status = 0;\n            var payment_status = 0;\n\n            if(data.data.order.status == 'pending')\n            {\n                order_status = 0;\n            }\n            else if(data.data.order.status == 'paid')\n            {\n                order_status = 1;\n            }\n            else if(data.data.order.status == 'delivering')\n            {\n                order_status = 2;\n            }\n            else if(data.data.order.status == 'completed')\n            {\n                order_status = 3;\n            }\n            else if(data.data.order.status == 'cancelled')\n            {\n                order_status = 4;\n            }\n\n            console.log(order)\n            this.setState({\n                order_options,\n                enable_options,\n                order,\n                delivery_address,\n                delivery_date,\n                had_member,\n                receiver_contact,\n                receiver_email,\n                receiver_name,\n                remark,\n                sender_contact,\n                sender_email,\n                sender_name,\n                order_status,\n                order_from,\n            });\n        });\n    }\n\n    async switchEnableSelected(value, item) {\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        updatePaymentStatus(uuid, token, userInfo.email, value, item.payment_id).then(data => {\n            console.log(data)\n            var order = data.data.order\n\n            var delivery_address = data.data.order.delivery_address\n            var delivery_date = data.data.order.delivery_date\n            var receiver_contact = data.data.order.receiver_contact\n            var receiver_email = data.data.order.receiver_email\n            var receiver_name = data.data.order.receiver_name\n            var remark = data.data.order.remark\n            var sender_contact = data.data.order.sender_contact\n            var sender_email = data.data.order.sender_email\n            var sender_name = data.data.order.sender_name\n\n            if (delivery_address == '') {\n                delivery_address = '-'\n            }\n\n            if (delivery_date == '') {\n                delivery_date = '-'\n            }\n\n            if (receiver_contact == '') {\n                receiver_contact = '-'\n            }\n\n            if (receiver_email == '') {\n                receiver_email = '-'\n            }\n\n            if (receiver_name == '') {\n                receiver_name = '-'\n            }\n\n            if (remark == '') {\n                remark = '-'\n            }\n\n            if (sender_contact == '') {\n                sender_contact = '-'\n            }\n\n            if (sender_email == '') {\n                sender_email = '-'\n            }\n\n            if (sender_name == '') {\n                sender_name = '-'\n            }\n\n            var member = data.data.order.member\n            var had_member = false\n            if (member != null) {\n                had_member = true\n            }\n\n            console.log(order)\n            this.setState({\n                order,\n                delivery_address,\n                delivery_date,\n                had_member,\n                receiver_contact,\n                receiver_email,\n                receiver_name,\n                remark,\n                sender_contact,\n                sender_email,\n                sender_name,\n            });\n        })\n    }\n\n    async switchEnableStatusSelected(value) {\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        updateOrderStatus(uuid, token, userInfo.email, value, this.state.order.order_id).then(data => {\n            console.log(data)\n            var order = data.data.order\n\n            var delivery_address = data.data.order.delivery_address\n            var delivery_date = data.data.order.delivery_date\n            var receiver_contact = data.data.order.receiver_contact\n            var receiver_email = data.data.order.receiver_email\n            var receiver_name = data.data.order.receiver_name\n            var remark = data.data.order.remark\n            var sender_contact = data.data.order.sender_contact\n            var sender_email = data.data.order.sender_email\n            var sender_name = data.data.order.sender_name\n\n            if (delivery_address == '') {\n                delivery_address = '-'\n            }\n\n            if (delivery_date == '') {\n                delivery_date = '-'\n            }\n\n            if (receiver_contact == '') {\n                receiver_contact = '-'\n            }\n\n            if (receiver_email == '') {\n                receiver_email = '-'\n            }\n\n            if (receiver_name == '') {\n                receiver_name = '-'\n            }\n\n            if (remark == '') {\n                remark = '-'\n            }\n\n            if (sender_contact == '') {\n                sender_contact = '-'\n            }\n\n            if (sender_email == '') {\n                sender_email = '-'\n            }\n\n            if (sender_name == '') {\n                sender_name = '-'\n            }\n\n            var member = data.data.order.member\n            var had_member = false\n            if (member != null) {\n                had_member = true\n            }\n\n            console.log(order)\n            this.setState({\n                order,\n                delivery_address,\n                delivery_date,\n                had_member,\n                receiver_contact,\n                receiver_email,\n                receiver_name,\n                remark,\n                sender_contact,\n                sender_email,\n                sender_name,\n            });\n        })\n    }\n\n\n    render() {\n        if (this.state.order != null && !this.state.is_edit) {\n            let button = null\n            if(this.state.order_from == \"yes\")\n            {\n                button = <Button style={{ marginTop: 10 }} large title=\"編輯 Edit\" onPress={this.onEditButtonPress.bind(this)} />\n            }\n\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                        {this.state.had_member &&\n                            <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                                <Text style={styles.leftlistedItem}>會員編號 Member No</Text>\n                                <Text style={styles.rightlistedItem}>{this.state.order.member.member_no}</Text>\n                            </View>\n                        }\n                        {this.state.had_member &&\n                            <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                                <Text style={styles.leftlistedItem}>會員名稱 Member Nmae</Text>\n                                <Text style={styles.rightlistedItem}>{this.state.order.member.name}</Text>\n                            </View>\n                        }\n                        {this.state.had_member &&\n                            <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                                <Text style={styles.leftlistedItem}>會員電話 Member Phone</Text>\n                                <Text style={styles.rightlistedItem}>{this.state.order.member.phone}</Text>\n                            </View>\n                        }\n\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\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.toString()}\n                        />\n                        <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                            <Text style={styles.leftlistedItem}>收件人名稱 Receiver Name</Text>\n                            <Text style={styles.rightlistedItem}>{this.state.receiver_name}</Text>\n                        </View>\n                        <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                            <Text style={styles.leftlistedItem}>收件人電話 Receiver Contact</Text>\n                            <Text style={styles.rightlistedItem}>{this.state.receiver_contact}</Text>\n                        </View>\n                        <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                            <Text style={styles.leftlistedItem}>收件人電郵 Receiver Email</Text>\n                            <Text style={styles.rightlistedItem}>{this.state.receiver_email}</Text>\n                        </View>\n                        <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                            <Text style={styles.leftlistedItem}>送貨地址 Delivery Address</Text>\n                            <Text style={styles.rightlistedItem}>{this.state.delivery_address}</Text>\n                        </View>\n                        <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                            <Text style={styles.leftlistedItem}>運費 Delivery Cost</Text>\n                            <Text style={styles.rightlistedItem}>{this.state.order.delivery_cost}</Text>\n                        </View>\n                        <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                            <Text style={styles.leftlistedItem}>送貨日期 Delivery Date</Text>\n                            <Text style={styles.rightlistedItem}>{this.state.delivery_date}</Text>\n                        </View>\n                        <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                            <Text style={styles.leftlistedItem}>折扣 Discount</Text>\n                            <Text style={styles.rightlistedItem}>{`HKD$` + this.state.order.discount}</Text>\n                        </View>\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                        <FlatList\n                            // contentContainerStyle={{ flexGrow: 1, justifyContent: 'center' }}\n                            data={this.state.order.payments}\n                            extraData={this.state}\n                            renderItem={({ item }) =>\n                                <View style={styles.list_border}>\n                                    <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                                        <Text style={styles.leftlistedItem}>{`付款方式Payment Method : ` + item.payment_method}</Text>\n                                        <Text style={styles.rightlistedItem}>{`付款狀態 : ` + item.status}</Text>\n                                    </View>\n                                    <FlatList\n                                data={item.attachments}\n                                extraData={this.state}\n                                ItemSeparatorComponent={this.space}\n                                renderItem={({ item }) =>\n                                    <View>\n                                        <a href={item.path} target='_blank'><Image source={{ uri: item.path }} style={styles.receipt} /></a>\n                                    </View>\n                                }\n                                ListEmptyComponent={this._listEmptyComponent}\n                            />\n                                </View>\n                                \n                            }\n                            keyExtractor={item => item.payment_id.toString()}\n                        />\n\n                        <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                            <Text style={styles.leftlistedItem}>訂單狀態 Order Status</Text>\n                            <Text style={styles.rightlistedItem}>{this.state.order.status}</Text>\n                        </View>\n                        <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                            <Text style={styles.leftlistedItem}>備註 Remark</Text>\n                            <Text style={styles.rightlistedItem}>{this.state.remark}</Text>\n                        </View>\n                        \n                        {button}\n                        \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 if (this.state.is_edit) {\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                        {this.state.had_member &&\n                            <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                                <Text style={styles.leftlistedItem}>會員編號 Member No</Text>\n                                <Text style={styles.rightlistedItem}>{this.state.order.member.member_no}</Text>\n                            </View>\n                        }\n                        {this.state.had_member &&\n                            <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                                <Text style={styles.leftlistedItem}>會員名稱 Member Nmae</Text>\n                                <Text style={styles.rightlistedItem}>{this.state.order.member.name}</Text>\n                            </View>\n                        }\n                        {this.state.had_member &&\n                            <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                                <Text style={styles.leftlistedItem}>會員電話 Member Phone</Text>\n                                <Text style={styles.rightlistedItem}>{this.state.order.member.phone}</Text>\n                            </View>\n                        }\n\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\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.toString()}\n                        />\n                        <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                            <Text style={styles.leftlistedItem}>收件人名稱 Receiver Name</Text>\n                            <Text style={styles.rightlistedItem}>{this.state.receiver_name}</Text>\n                        </View>\n                        <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                            <Text style={styles.leftlistedItem}>收件人電話 Receiver Contact</Text>\n                            <Text style={styles.rightlistedItem}>{this.state.receiver_contact}</Text>\n                        </View>\n                        <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                            <Text style={styles.leftlistedItem}>收件人電郵 Receiver Email</Text>\n                            <Text style={styles.rightlistedItem}>{this.state.receiver_email}</Text>\n                        </View>\n                        <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                            <Text style={styles.leftlistedItem}>送貨地址 Delivery Address</Text>\n                            <Text style={styles.rightlistedItem}>{this.state.delivery_address}</Text>\n                        </View>\n                        <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                            <Text style={styles.leftlistedItem}>運費 Delivery Cost</Text>\n                            <Text style={styles.rightlistedItem}>{this.state.order.delivery_cost}</Text>\n                        </View>\n                        <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                            <Text style={styles.leftlistedItem}>送貨日期 Delivery Date</Text>\n                            <Text style={styles.rightlistedItem}>{this.state.delivery_date}</Text>\n                        </View>\n                        <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                            <Text style={styles.leftlistedItem}>折扣 Discount</Text>\n                            <Text style={styles.rightlistedItem}>{`HKD$` + this.state.order.discount}</Text>\n                        </View>\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                        \n                        <FlatList\n                            // contentContainerStyle={{ flexGrow: 1, justifyContent: 'center' }}\n                            data={this.state.order.payments}\n                            extraData={this.state}\n                            renderItem={({ item }) =>\n                                <View style={styles.list_border}>\n                                    <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                                        <Text style={styles.leftlistedItem}>{`付款方式Payment Method : ` + item.payment_method}</Text>\n                                        {/* <Text style={styles.rightlistedItem}>{`付款狀態 : ` + item.status}</Text> */}\n                                        <View style={{\n                                            width: '50%', borderRadius: 50, borderColor: '#4189D6', borderWidth: 2, flex: 0.5\n                                        }}>\n                                            <SwitchSelector\n                                                options={this.state.enable_options}\n                                                initial={item.status=='paid'?1:item.status=='failed'?2:0}\n                                                buttonColor={'#4189D6'}\n                                                onPress={(value) => this.switchEnableSelected(value, item)}\n                                            />\n                                        </View>                                       \n                                    </View> \n                                    \n                                    <FlatList\n                                data={item.attachments}\n                                extraData={this.state}\n                                ItemSeparatorComponent={this.space}\n                                renderItem={({ item }) =>\n                                    <View>\n                                        <a href={item.path} target='_blank'><Image source={{ uri: item.path }} style={styles.receipt} /></a>\n                                    </View>\n                                }\n                                ListEmptyComponent={this._listEmptyComponent}\n                            />\n                            \n                                </View>\n                                \n                            }\n                            \n                            keyExtractor={item => item.payment_id.toString()}\n                        />\n                            \n                        \n                        <View style={styles.list_border}>\n                            <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                                <Text style={styles.leftlistedItem}>{'訂單狀態 Order Status'}</Text>\n                                <View style={{\n                                    width: '50%', borderRadius: 50, borderColor: '#4189D6', borderWidth: 2, flex: 1\n                                }}>\n                                    <SwitchSelector\n                                        options={this.state.order_options}\n                                        initial={this.state.order_status}\n                                        buttonColor={'#4189D6'}\n                                        onPress={(value) => this.switchEnableStatusSelected(value)}\n                                    />\n                                </View>\n                            </View>\n                        </View>\n                        <View style={{ flexDirection: 'row', width: \"100%\" }}>\n                            <Text style={styles.leftlistedItem}>備註 Remark</Text>\n                            <Text style={styles.rightlistedItem}>{this.state.remark}</Text>\n                        </View>\n                        <Button\n                            style={{ marginTop: 10 }}\n                            large\n                            title=\"完成 Finish\"\n                            onPress={this.onUpdate.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\nasync function updatePaymentStatus(uuid, token, email, value, payment_id) {\n    try {\n        return fetch(path + 'sales/updatePaymentStatus', {\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                payment_id: payment_id,\n                status: value,\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 updateOrderStatus(uuid, token, email, value, order_id) {\n    try {\n        return fetch(path + 'sales/updateOrderStatus', {\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                status: value,\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\n\n\nconst styles = StyleSheet.create({\n    container: {\n        flex: 1,\n        alignItems: 'center',\n        justifyContent: 'center',\n        marginBottom: 10\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    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    receipt: {\n        padding: 10, alignSelf: 'center',\n        resizeMode: \"contain\",\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 { Image, StyleSheet, Alert, View, TextInput, Text, Platform } from 'react-native';\nimport { ThemeProvider, Button } from 'react-native-elements';\nimport { AsyncStorage } from 'react-native';\nimport { Redirect } from 'react-router';\nimport path from './serverPath.js'\nimport SwitchSelector from 'react-native-switch-selector';\n\nimport ImagePicker from \"react-native-everywhere-image-picker\";\n\nclass CreateBanner extends Component {\n\n    constructor(props) {\n        super(props);\n        this.state = {\n            image: '',\n            previewImage: '',\n            url: '',\n            ordering: '',\n\n            new_page: 'no',\n            switch_position: 0,\n            switch_options: [],\n\n            enable: 'no',\n            enable_position: 0,\n            enable_options: [],\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        createBanner(userInfo.email, uuid, token, this.state.image, this.state.new_page, this.state.ordering, this.state.url).then(data => {\n            console.log(data)\n            if (data.result == 0) {\n                this.props.history.push('/selectCompanyAction')\n            }\n        });\n    }\n\n\n    async componentDidMount() {\n\n        const switch_options = [\n            { label: \"否No\", value: 'no' },\n            { label: \"是Yes\", value: 'yes' },\n        ];\n\n        const enable_options = [\n            { label: \"停用Disable\", value: 'no' },\n            { label: \"啟用Enable\", value: 'yes' },\n        ];\n\n        this.setState({\n            switch_options,\n            enable_options\n        })\n    }\n\n    onPressBack = () => {\n        this.props.history.push('/selectCompanyAction');\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 image = new Blob([byteArray], { type: 'image/png' });\n\n        this.setState(() => ({ image, previewImage: uri }));\n\n    };\n\n    switchSelected(value) {\n        if (value == 'no') {\n            this.setState({ new_page: 'no', switch_position: 0 })\n        } else {\n            this.setState({ new_page: 'yes', switch_position: 1 })\n        }\n    }\n\n    switchEnableSelected(value) {\n        if (value == 'no') {\n            this.setState({ enable: 'no', enable_position: 0 })\n        } else {\n            this.setState({ enable: 'yes', enable_position: 1 })\n        }\n    }\n\n    handleRemoveImage() {\n        this.setState({\n            image: '', previewImage: ''\n        })\n    }\n\n    render() {\n        return (\n            <View style={styles.container}>\n                <Image style={styles.banner} source={require('./image/hippos_banner.png')} />\n                <Text style={styles.title}>新增橫幅 Create Banner</Text>\n                <View style={styles.login_border}>\n                    <Text style={styles.text}>新一頁 New Page</Text>\n                    <View style={{ width: '30%', borderRadius: 50, borderColor: '#4189D6', borderWidth: 2 }}>\n                        <SwitchSelector\n                            options={this.state.switch_options}\n                            initial={this.state.switch_position}\n                            buttonColor={'#4189D6'}\n                            onPress={(value) => this.switchSelected(value)}\n                        />\n                    </View>\n\n                    <View>\n                        <Text style={styles.text}>網頁連結 URL</Text>\n                        <TextInput\n                            style={styles.inputfield}\n                            placeholder=\"網頁連結 URL\"\n                            onChangeText={(text) => { this.setState({ url: text }) }}\n                            value={`${this.state.url}`}\n                        />\n                    </View>\n\n\n                    <Text style={styles.text}>啟用Enable/停用Disable</Text>\n                    <View style={{ width: '30%', borderRadius: 50, borderColor: '#4189D6', borderWidth: 2 }}>\n                        <SwitchSelector\n                            options={this.state.enable_options}\n                            initial={this.state.enable_position}\n                            buttonColor={'#4189D6'}\n                            onPress={(value) => this.switchEnableSelected(value)}\n                        />\n                    </View>\n\n                    <View>\n                        <Text style={styles.text}>次序 Ordering</Text>\n                        <TextInput\n                            style={styles.inputfield}\n                            placeholder=\"e.g. 1/2/3/4, 數字愈細愈前\"\n                            onChangeText={(text) => { this.setState({ ordering: text }) }}\n                            value={`${this.state.ordering}`}\n                        />\n                    </View>\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                    {this.state.previewImage != '' &&\n                        <Image source={{ uri: this.state.previewImage }} style={styles.image} />}\n                    {this.state.previewImage != '' &&\n                        <ThemeProvider theme={theme} >\n                            <Button title='刪除 Remove'\n                                onPress={() => this.handleRemoveImage(this)} />\n                        </ThemeProvider>}\n\n                    <Button\n                        large\n                        title=\"創建 Create\"\n                        onPress={this.onPressButton.bind(this)}\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 createBanner(email, uuid, token, image, new_page, ordering, url) {\n\n    const data = new FormData();\n\n    data.append('username', email);\n    data.append('uuid', uuid);\n    data.append('token', token);\n    data.append('enable', 'yes');\n    data.append('new_page', new_page);\n    data.append('image', image);\n    if (ordering == '') {\n        data.append('ordering', '1');\n    } else {\n        data.append('ordering', ordering);\n    }\n    data.append('url', url);\n\n    try {\n        return fetch(path + 'createBanner', {\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\n\nconst theme = {\n    colors: {\n        primary: 'red',\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,\n        alignSelf: 'center',\n        resizeMode: 'contain',\n        width: '100%',\n        height: 200,\n    },\n    banner: {\n        padding: 10, alignSelf: 'center',\n        resizeMode: \"contain\",\n        flex: 1,\n        width: '50%',\n        maxWidth: '100%',\n        height: 200,\n    },\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});\n\nexport default CreateBanner;","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 SelectCompanyAction 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    onCreateBrand() {\n        this.props.history.push('/createBrand');\n    }\n\n    onEditBrand() {\n        this.props.history.push('/brandList')\n    }\n\n    onEditCompany() {\n        this.props.history.push('/editCompany');\n    }\n\n    onCreateBanner() {\n        this.props.history.push('/createBanner');\n    }\n\n    onEditBanner() {\n        this.props.history.push('/bannerList')\n    }\n\n    onPressBack() {\n        this.props.history.push('/')\n    }\n\n    onCreateDeliveryCost(){\n        this.props.history.push('/createDeliveryCost')\n    }\n\n    onEditDeliveryCost(){\n        this.props.history.push('/deliveryCostList')\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=\"新增橫幅 Create Banner\"\n                            onPress={this.onCreateBanner.bind(this)}\n                        />\n                        <Button\n                            style={{ marginTop: 10 }}\n                            large\n                            title=\"編輯橫幅 Edit Banner\"\n                            onPress={this.onEditBanner.bind(this)}\n                        />\n                        <Button\n                            style={{ marginTop: 10 }}\n                            large\n                            title=\"新增品牌 Create Brand\"\n                            onPress={this.onCreateBrand.bind(this)}\n                        />\n                        <Button\n                            style={{ marginTop: 10 }}\n                            large\n                            title=\"編輯品牌 Edit Brand\"\n                            onPress={this.onEditBrand.bind(this)}\n                        />\n                        <Button\n                            style={{ marginTop: 10 }}\n                            large\n                            title=\"新增運費 Create Delivery Cost\"\n                            onPress={this.onCreateDeliveryCost.bind(this)}\n                        />\n                        <Button\n                            style={{ marginTop: 10 }}\n                            large\n                            title=\"編輯運費 Edit Delivery Cost\"\n                            onPress={this.onEditDeliveryCost.bind(this)}\n                        />\n                        <Button\n                            style={{ marginTop: 10 }}\n                            large\n                            title=\"編輯公司設定 Edit Company Info\"\n                            onPress={this.onEditCompany.bind(this)}\n                        />\n                        <Button\n                            style={{ marginTop: 10 }}\n                            title=\"返回 Back\"\n                            onPress={this.onPressBack.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\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 SelectCompanyAction;","//production\nexport default 'https://pos.hippos.systems/storage/'\n\n//testing\n// export default 'https://hippos.beuniquewedding.com/storage/'\n\n//export default 'http://devpos.hippos.systems/storage/'","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 storagePath from './storagePath.js'\nimport { FlatGrid } from 'react-native-super-grid';\n\n\nclass BannerList extends Component {\n\n\n  handlePress = banner => {\n    this.props.history.push('/editBanner', banner);\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  constructor(props) {\n    super(props);\n    this.state = {\n      banners: 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\n    getBanners(uuid, token, userInfo.email).then(data => {\n      console.log(data)\n      var banners = data.data.banners\n\n      this.setState({\n        banners\n      })\n    })\n  }\n\n  onPressBack = () => {\n    this.props.history.push('/selectCompanyAction');\n  }\n\n  render() {\n    if (this.state.banners == 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.banner} source={require('./image/hippos_banner.png')} />\n            <Button\n              style={{ marginTop: 10 }}\n              large\n              title=\"返回 Back\"\n              onPress={this.onPressBack.bind(this)}\n            />\n\n          </View>\n          <View >\n            <FlatGrid\n              itemDimension={200}\n              items={this.state.banners}\n              renderItem={({ item }) => {\n                if (item.enable == 'yes') {\n                  return (\n                    <TouchableOpacity onPress={() => this.handlePress(item)}>\n                      <View style={styles.list_border}>\n                        <View>\n                          <Image source={{ uri: storagePath + item.image }} style={styles.image} />\n                          <Text style={styles.listedItemComplete}>{`狀態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}>\n                        <View>\n                          <Image source={{ uri: storagePath + item.image }} style={styles.image} />\n                          <Text style={styles.listedItemCancel}>{`狀態Status :  已停用 `}</Text>\n                        </View>\n                      </View>\n                    </TouchableOpacity>\n                  )\n                }\n              }}\n              keyExtractor={item => item.banner_id}\n            />\n          </View>\n        </View>\n      )\n    }\n  }\n}\n\nasync function getBanners(uuid, token, email) {\n  try {\n    return fetch(path + 'banners', {\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\nconst styles = StyleSheet.create({\n  listedItem: {\n    fontSize: 14,\n    // background: '#285b97',\n    borderRadius: 3,\n    padding: 5,\n    marginLeft: 2,\n  },\n  listedItemName: {\n    fontSize: 16,\n    // background: '#285b97',\n    borderRadius: 3,\n    padding: 5,\n    marginLeft: 2,\n  },\n  listedPageNum: {\n    fontSize: 18,\n    marginRight: 5,\n    textDecorationLine: 'underline',\n    color: 'blue'\n  },\n  listedItemCancel: {\n    fontSize: 14,\n    color: 'red',\n    borderRadius: 3,\n    padding: 5,\n    marginLeft: 2,\n  },\n  listedItemComplete: {\n    fontSize: 14,\n    color: '#62C377',\n    // background: '#285b97',\n    borderRadius: 3,\n    padding: 5,\n    marginLeft: 2,\n  },\n  banner: {\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  list_border: {\n    marginTop: 10,\n    width: 200,\n    borderColor: '#000',\n    borderRadius: 5,\n    borderWidth: 2,\n    padding: 10,\n    flexGrow: 1,\n    flexDirection: 'row'\n  },\n  image: {\n    height: 100,\n    width: 180,\n    alignSelf: 'center',\n    resizeMode: 'contain',\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 BannerList;","import React, { Component } from 'react';\nimport { Image, StyleSheet, Alert, View, TextInput, Text, Platform, ActivityIndicator } from 'react-native';\nimport { ThemeProvider, Button } from 'react-native-elements';\nimport { AsyncStorage } from 'react-native';\nimport { Redirect } from 'react-router';\nimport path from './serverPath.js'\nimport imagePath from './storagePath.js'\nimport SwitchSelector from 'react-native-switch-selector';\n\nimport ImagePicker from \"react-native-everywhere-image-picker\";\n\nclass EditBanner extends Component {\n\n    constructor(props) {\n        super(props);\n        this.state = {\n            image: '',\n            previewImage: '',\n            url: '',\n            ordering: '',\n\n            new_page: 'no',\n            switch_position: 0,\n            switch_options: [],\n\n            enable: 'no',\n            enable_position: 0,\n            enable_options: [],\n\n            banner: null,\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        updateBanner(userInfo.email, uuid, token, this.state.banner.banner_id, this.state.enable, this.state.new_page, this.state.url).then(data => {\n            console.log(data)\n            if (data.result == 0) {\n                this.props.history.push('/bannerList')\n            }\n        });\n    }\n\n\n    async componentDidMount() {\n\n        this.setState({ banner: this.props.location.state });\n\n        const enable_options = [\n            { label: \"停用Disable\", value: 'no' },\n            { label: \"啟用Enable\", value: 'yes' },\n        ];\n\n        var enable = ''\n        var enable_position = 0\n\n        if (this.props.location.state.enable === 'yes') {\n            enable = 'yes'\n            enable_position = 1\n        } else if (this.props.location.state.enable === 'no') {\n            enable = 'no'\n            enable_position = 0\n        }\n\n        const switch_options = [\n            { label: \"否No\", value: 'no' },\n            { label: \"是Yes\", value: 'yes' },\n        ];\n\n        var new_page = ''\n        var switch_position = 0\n\n        if (this.props.location.state.new_page === 'yes') {\n            new_page = 'yes'\n            switch_position = 1\n        } else if (this.props.location.state.new_page === 'no') {\n            new_page = 'no'\n            switch_position = 0\n        }\n\n        var url = this.props.location.state.url\n\n        if (url == null) {\n            url = '';\n        }\n\n        this.setState({\n            switch_options,\n            new_page,\n            switch_position,\n\n            enable_options,\n            enable,\n            enable_position,\n\n            previewImage: imagePath + this.props.location.state.image,\n            ordering: this.props.location.state.ordering,\n            url\n        })\n    }\n\n    async handleRemoveImage() {\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        deleteBanner(userInfo.email, uuid, token, this.state.banner.banner_id).then(data => {\n            console.log(data)\n            if (data.result == 0) {\n                this.props.history.push('/bannerList')\n            }\n        });\n    }\n\n    onPressBack = () => {\n        this.props.history.push('/bannerList');\n    }\n\n    switchSelected(value) {\n        if (value == 'no') {\n            this.setState({ new_page: 'no', switch_position: 0 })\n        } else {\n            this.setState({ new_page: 'yes', switch_position: 1 })\n        }\n    }\n    switchEnableSelected(value) {\n        if (value == 'no') {\n            this.setState({ enable: 'no', enable_position: 0 })\n        } else {\n            this.setState({ enable: 'yes', enable_position: 1 })\n        }\n    }\n\n    render() {\n        if (this.state.banner != null) {\n            return (\n                <View style={styles.container}>\n                    <Image style={styles.banner} source={require('./image/hippos_banner.png')} />\n                    <Text style={styles.title}>編輯橫幅 Edit Banner</Text>\n                    <View style={styles.login_border}>\n                        <Text style={styles.listedItem}>新一頁 New Page</Text>\n                        <View style={{ width: '30%', borderRadius: 50, borderColor: '#4189D6', borderWidth: 2 }}>\n                            <SwitchSelector\n                                options={this.state.switch_options}\n                                initial={this.state.switch_position}\n                                buttonColor={'#4189D6'}\n                                onPress={(value) => this.switchSelected(value)}\n                            />\n                        </View>\n\n                        <View>\n                            <Text style={styles.text}>網頁連結 URL</Text>\n                            <TextInput\n                                style={styles.inputfield}\n                                placeholder=\"網頁連結 URL\"\n                                onChangeText={(text) => { this.setState({ url: text }) }}\n                                value={`${this.state.url}`}\n                            />\n                        </View>\n\n                        <Text style={styles.text}>啟用Enable/停用Disable</Text>\n                        <View style={{ width: '30%', borderRadius: 50, borderColor: '#4189D6', borderWidth: 2 }}>\n                            <SwitchSelector\n                                options={this.state.enable_options}\n                                initial={this.state.enable_position}\n                                buttonColor={'#4189D6'}\n                                onPress={(value) => this.switchEnableSelected(value)}\n                            />\n                        </View>\n\n                        <View>\n                            <Text style={styles.text}>次序 Ordering</Text>\n                            <TextInput\n                                style={styles.inputfield}\n                                placeholder=\"e.g. 1/2/3/4, 數字愈細愈前\"\n                                onChangeText={(text) => { this.setState({ ordering: text }) }}\n                                value={`${this.state.ordering}`}\n                            />\n                        </View>\n\n                        {this.state.previewImage != '' &&\n                            <Image source={{ uri: this.state.previewImage }} style={styles.image} />}\n                        <Button\n                            large\n                            style={{ paddingTop: 10, paddingBottom: 10 }}\n                            title=\"更新 Update\"\n                            onPress={this.onPressButton.bind(this)}\n                        />\n\n                        <ThemeProvider theme={theme} >\n                            <Button title='刪除 Remove'\n                                onPress={() => this.handleRemoveImage(this)} />\n                        </ThemeProvider>\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, styles.horizontal]}>\n                    <ActivityIndicator size=\"large\" color=\"#0000ff\" />\n                </View>\n            )\n        }\n    }\n}\n\nasync function updateBanner(email, uuid, token, banner_id, enable, new_page, url) {\n\n    const data = new FormData();\n\n    data.append('username', email);\n    data.append('uuid', uuid);\n    data.append('token', token);\n    data.append('banner_id', banner_id);\n    data.append('enable', enable);\n    data.append('new_page', new_page);\n    data.append('ordering', '1');\n    data.append('url', url);\n\n    try {\n        return fetch(path + 'updateBanner', {\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\nasync function deleteBanner(email, uuid, token, banner_id) {\n\n    const data = new FormData();\n\n    data.append('username', email);\n    data.append('uuid', uuid);\n    data.append('token', token);\n    data.append('banner_id', banner_id);\n\n    try {\n        return fetch(path + 'deleteBanner', {\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\nconst theme = {\n    colors: {\n        primary: 'red',\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,\n        alignSelf: 'center',\n        resizeMode: 'contain',\n        width: '100%',\n        height: 200,\n    },\n    banner: {\n        padding: 10, alignSelf: 'center',\n        resizeMode: \"contain\",\n        flex: 1,\n        width: '50%',\n        maxWidth: '100%',\n        height: 200,\n    },\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});\n\nexport default EditBanner;","import React, { Component } from 'react';\nimport { Image, StyleSheet, Alert, View, TextInput, Text, Platform, ActivityIndicator } from 'react-native';\nimport { ThemeProvider, Button } from 'react-native-elements';\nimport { AsyncStorage } from 'react-native';\nimport { Redirect } from 'react-router';\nimport path from './serverPath.js'\nimport imagePath from './storagePath.js'\nimport SwitchSelector from 'react-native-switch-selector';\nimport CheckboxFormX from 'react-native-checkbox-form';\nimport ImagePicker from \"react-native-everywhere-image-picker\";\n\nclass EditCompany extends Component {\n\n    constructor(props) {\n        super(props);\n        this.state = {\n            company: null,\n            langOptions: null,\n            langArray: null,\n            default_lang_options: [],\n            default_lang_position: 0,\n            default_lang: '',\n            name: '',\n\n            previewImage: '',\n            image: '',\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        console.log(this.state)\n\n        updateCompanyInfo(userInfo.email, uuid, token, this.state.name, this.state.langArray, this.state.default_lang, this.state.image).then(data => {\n            console.log(data)\n            if (data.result == 0) {\n                AsyncStorage.setItem('company', JSON.stringify(data.data.company))\n                this.props.history.push('/selectCompanyAction')\n            }\n        });\n    }\n\n\n    async componentDidMount() {\n        var company = JSON.parse(await AsyncStorage.getItem('company'));\n\n        var langOptions = [];\n        langOptions.push({ label: '英文English', value: 'en', RNchecked: false });\n        langOptions.push({ label: '繁體中文Traditional', value: 'zh_TW', RNchecked: false });\n        langOptions.push({ label: '简体中文Simplified', value: 'zh_CN', RNchecked: false });\n\n        var langs = company.langs\n\n        for (let lang of langs) {\n            for (var i = 0; i < langOptions.length; i++) {\n                if (langOptions[i].value == lang) {\n                    langOptions[i].RNchecked = true;\n                }\n            }\n        }\n\n        var name = company.name\n\n        const default_lang_options = [\n            { label: \"英文English\", value: 'en' },\n            { label: \"繁體中文Traditional\", value: 'zh_TW' },\n            { label: \"简体中文Simplified\", value: 'zh_CN' },\n        ];\n\n        var default_lang = company.default_lang\n        var default_lang_position = 0\n\n        if (default_lang === 'en') {\n            default_lang_position = 0\n        } else if (default_lang === 'zh_TW') {\n            default_lang_position = 1\n        } else {\n            default_lang_position = 2\n        }\n\n        var previewImage = company.logo\n\n        this.setState({\n            company,\n            langOptions,\n            langArray: langs,\n            name,\n            default_lang_options,\n            default_lang_position,\n            default_lang,\n            previewImage\n        })\n    }\n\n    onPressBack = () => {\n        this.props.history.push('/selectCompanyAction');\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 image = new Blob([byteArray], { type: 'image/png' });\n\n        this.setState(() => ({ image, previewImage: uri }));\n\n    };\n\n    switchLangSelected(value) {\n        if (value == 'en') {\n            this.setState({ default_lang: 'en', default_lang_position: 0 })\n        } else if (value == 'zh_TW') {\n            this.setState({ default_lang: 'zh_TW', default_lang_position: 1 })\n        } else {\n            this.setState({ default_lang: 'zh_CN', default_lang_position: 2 })\n        }\n    }\n\n    _onLangSelect = (items) => {\n        var langArray = [];\n        for (let item of items) {\n            if (item.RNchecked) {\n                langArray.push(item.value);\n            }\n        }\n        console.log(langArray)\n        this.setState({\n            langArray\n        })\n    };\n\n    handleRemoveImage() {\n        this.setState({\n            image: '', previewImage: this.state.company.logo\n        })\n    }\n\n    render() {\n        if (this.state.company != null) {\n            return (\n                <View style={styles.container}>\n                    <Image style={styles.banner} source={require('./image/hippos_banner.png')} />\n                    <Text style={styles.title}>編輯公司設定 Edit Company Info</Text>\n                    <View style={styles.login_border}>\n\n                        <Text style={styles.text}>公司名稱 Company Name</Text>\n                        <TextInput\n                            style={styles.inputfield}\n                            textContentType=\"text\"\n                            placeholder=\"名稱Name(EN)\"\n                            onChangeText={(text) => { this.setState({ name: text }) }}\n                            value={`${this.state.name}`}\n                        />\n\n                        {/* <Text style={styles.text}>語言 Language</Text>\n                        <CheckboxFormX\n                            style={{ width: '100%' }}\n                            textStyle={{ marginRight: 20, fontSize: 20 }}\n                            dataSource={this.state.langOptions}\n                            itemShowKey=\"label\"\n                            itemCheckedKey=\"RNchecked\"\n                            iconSize={30}\n                            formHorizontal={true}\n                            labelHorizontal={true}\n                            onChecked={(item) => this._onLangSelect(item)}\n                        /> */}\n\n                        <Text style={styles.text}>預設語言 Default Language</Text>\n                        <View style={{ width: '60%', borderRadius: 50, borderColor: '#4189D6', borderWidth: 2 }}>\n                            <SwitchSelector\n                                options={this.state.default_lang_options}\n                                initial={this.state.default_lang_position}\n                                buttonColor={'#4189D6'}\n                                onPress={(value) => this.switchLangSelected(value)}\n                            />\n                        </View>\n\n                        <Text style={styles.text}>公司標誌 Company Logo</Text>\n                        <ImagePicker onComplete={this._handleImage}>\n                            <Button\n                                style={{ marginTop: 20, marginBottom: 20 }}\n                                large\n                                title=\"更換標誌 Change Logo\"\n                            />\n                        </ImagePicker>\n                        <Image source={{ uri: this.state.previewImage }} style={styles.image} />\n                        {this.state.image != '' &&\n                            <ThemeProvider theme={theme} >\n                                <Button title='取消 Cancel'\n                                    onPress={() => this.handleRemoveImage(this)} />\n                            </ThemeProvider>}\n\n                        <Button\n                            large\n                            style={{ paddingTop: 10, paddingBottom: 10 }}\n                            title=\"更新 Update\"\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, styles.horizontal]}>\n                    <ActivityIndicator size=\"large\" color=\"#0000ff\" />\n                </View>\n            )\n        }\n    }\n}\n\nasync function updateCompanyInfo(email, uuid, token, name, langs, default_lang, logo) {\n\n    const data = new FormData();\n\n    data.append('username', email);\n    data.append('uuid', uuid);\n    data.append('token', token);\n    data.append('name', name);\n    data.append('langs', `[` + langs + `]`);\n    data.append('default_lang', default_lang);\n    if (logo != '') {\n        data.append('logo', logo);\n    }\n\n    try {\n        return fetch(path + 'updateCompanyInfo', {\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\nconst theme = {\n    colors: {\n        primary: 'red',\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,\n        alignSelf: 'center',\n        resizeMode: 'contain',\n        width: '100%',\n        height: 200,\n    },\n    banner: {\n        padding: 10, alignSelf: 'center',\n        resizeMode: \"contain\",\n        flex: 1,\n        width: '50%',\n        maxWidth: '100%',\n        height: 200,\n    },\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});\n\nexport default EditCompany;","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 CategoryList extends Component {\n\n\n  handlePress = category => {\n    this.props.history.push('/editCategory', category);\n  };\n\n  constructor(props) {\n    super(props);\n    this.state = {\n      categories: null,\n      uuid: '',\n      token: '',\n      username: '',\n    };\n  }\n\n  onCreateCategory() {\n    this.props.history.push('/createCategory');\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    getCategories(uuid, token, userInfo.email).then(data => {\n      console.log(data);\n      var categories = data.data.categories\n      this.setState({\n        categories,\n        uuid,\n        token,\n        username: userInfo.email,\n      });\n    });\n  }\n\n  onPressBack = () => {\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.categories == 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                flexDirection: 'row'\n              }}>\n                <Button\n                  style={{ marginTop: 10 }}\n                  large\n                  title=\"返回 Back\"\n                  onPress={this.onPressBack.bind(this)}\n                />\n                <Button\n                style={{ marginTop: 10 , marginLeft: 10}}\n                  title=\"新增分類 Create Category\"\n                  onPress={this.onCreateCategory.bind(this)}\n                />\n              </View>\n            </View>\n          </View>\n\n          <View >\n            <FlatGrid\n              itemDimension={200}\n              items={this.state.categories}\n              renderItem={({ item }) =>\n                <TouchableOpacity onPress={() => this.handlePress(item)}>\n                  <View style={styles.list_border}>\n                    <View>\n                      <Text style={styles.listedItemName}>{item.name_en}</Text>\n                    </View>\n                  </View>\n                </TouchableOpacity>\n              }\n              keyExtractor={item => item.id}\n            />\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\n\nasync function getCategories(uuid, token, email) {\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        version: '1',\n        platform: 'ios',\n        uuid: uuid,\n        token: token,\n        username: email,\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: 14,\n    // background: '#285b97',\n    borderRadius: 3,\n    padding: 5,\n    marginLeft: 2,\n  },\n  listedItemName: {\n    fontSize: 16,\n    // background: '#285b97',\n    flex: 1,\n    alignSelf: 'center',\n    borderRadius: 3,\n    padding: 5,\n    marginLeft: 2,\n  },\n  listedPageNum: {\n    fontSize: 18,\n    marginRight: 5,\n    textDecorationLine: 'underline',\n    color: 'blue'\n  },\n  listedItemCancel: {\n    fontSize: 14,\n    color: 'red',\n    borderRadius: 3,\n    padding: 5,\n    marginLeft: 2,\n  },\n  listedItemComplete: {\n    fontSize: 14,\n    color: '#62C377',\n    // background: '#285b97',\n    borderRadius: 3,\n    padding: 5,\n    marginLeft: 2,\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: 100,\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 CategoryList\n  ;","import React, { Component } from 'react';\nimport { Image, StyleSheet, Alert, View, TextInput, Text, Platform, ActivityIndicator } from 'react-native';\nimport { Button, ThemeProvider } from 'react-native-elements';\nimport { AsyncStorage } from 'react-native';\nimport { Redirect } from 'react-router';\nimport path from './serverPath.js'\n\nclass EditCategory extends Component {\n\n    constructor(props) {\n        super(props);\n        this.state = {\n            category: null,\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        editCategory(userInfo.email, uuid, token, this.state.category.id, this.state.name_en, this.state.name_zh_TW, this.state.name_zh_CN, this.state.all_langs).then(data => {\n            getCategory(userInfo.email, uuid, token).then(data => {\n                AsyncStorage.setItem('categories', JSON.stringify(data.data.categories))\n                this.props.history.push('/categoryList');\n            });\n        });\n    }\n\n\n    async componentDidMount() {\n        var category = this.props.location.state;\n\n        console.log(category)\n        this.setState({\n            category,\n            name_en: category.name_en,\n            name_zh_TW: category.name_zh_TW,\n            name_zh_CN: category.name_zh_CN\n        })\n    }\n\n    onPressBack = () => {\n        this.props.history.push('/categoryList');\n    }\n\n    async deleteCategory() {\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       removeCategory(userInfo.email, uuid, token, this.state.category.id).then(data => {\n            console.log(data)\n            if (data.result == 0) {\n                getCategory(userInfo.email, uuid, token).then(data => {\n                    AsyncStorage.setItem('categories', JSON.stringify(data.data.categories))\n                    this.props.history.push('/categoryList');\n                });\n            }\n        });\n    }\n\n    render() {\n        if (this.state.category != null) {\n            return (\n                <View style={styles.container}>\n                    <Image style={styles.image} source={require('./image/hippos_banner.png')} />\n                    <Text style={styles.title}>編輯分類 Edit 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=\"更新 Update\"\n                            onPress={this.onPressButton.bind(this)}\n                        />\n                        <ThemeProvider theme={theme} >\n                            <Button\n                                style={{ marginTop: 10 }}\n                                title='刪除 Remove'\n                                onPress={() => this.deleteCategory(this)} />\n                        </ThemeProvider>\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, styles.horizontal]}>\n                    <ActivityIndicator size=\"large\" color=\"#0000ff\" />\n                </View>\n            )\n        }\n    }\n}\n\nasync function editCategory(email, uuid, token, category_id, name_en, name_zh_TW, name_zh_CN, all_langs) {\n    try {\n        return fetch(path + 'inventory/updateCategory', {\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                category_id: category_id,\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\n\nasync function removeCategory(email, uuid, token, category_id) {\n\n    const data = new FormData();\n\n    data.append('username', email);\n    data.append('uuid', uuid);\n    data.append('token', token);\n    data.append('category_id', category_id);\n\n    try {\n        return fetch(path + 'inventory/deleteCategory', {\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\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\nconst theme = {\n    colors: {\n        primary: 'red',\n    }\n}\n\nexport default EditCategory;","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 StockInRecord extends Component {\n\n  handlePress = stocks => {\n    this.props.history.push({\n      pathname: '/editStockIn',\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    stockInRecord(uuid, token, userInfo.email, '1', shop_id, product.id).then(data => {\n      console.log(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                  <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            keyExtractor={item => item.id}\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 stockInRecord(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        type: 'in',\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 StockInRecord;","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 EditStockIn 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        const userInfo = JSON.parse(this.state.user_info);\n\n        stockOut(userInfo.email, this.state.uuid, this.state.token, this.state.stock_id, this.state.cost).then(data => {\n            console.log(data)\n            if (data.result == 0) {\n                this.props.history.push('/stockInRecord', this.state.product);\n            }\n        });\n    }\n\n    onPressBack = () => {\n        this.props.history.push('/stockInRecord', 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            remaining_qty: stock.remaining_qty,\n            remark: stock.remark,\n            type: stock.type,\n            qty: stock.qty\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 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 : </Text>\n                    <TextInput\n                        style={styles.input}\n                        placeholder=\"成本 Cost\"\n                        onChangeText={(text) => { this.setState({ cost: text }) }}\n                        value={`${this.state.cost}`}\n                    />\n                    <Text style={styles.listedItem}>{`數量 Qty : ` + this.state.qty}</Text>\n                    <Text style={styles.listedItem}>{`剩餘數量 Remain Qty : ` + this.state.remaining_qty}</Text>\n                    <Button\n                        large\n                        title=\"更新 Update\"\n                        onPress={this.onPressButton.bind(this)}\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 stockOut(email, uuid, token, stock_id, cost) {\n\n    const data = new FormData();\n\n    data.append('username', email)\n    data.append('uuid', uuid);\n    data.append('token', token);\n    data.append('stock_id', stock_id)\n    data.append('cost', cost)\n\n\n    try {\n        return fetch(path + 'inventory/stockUpdate', {\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 EditStockIn;","import React, { Component } from 'react';\nimport { Image, StyleSheet, Alert, View, TextInput, Text, Platform } from 'react-native';\nimport { ThemeProvider, Button } from 'react-native-elements';\nimport { AsyncStorage } from 'react-native';\nimport { Redirect } from 'react-router';\nimport path from './serverPath.js'\nimport SwitchSelector from 'react-native-switch-selector';\nimport RNPickerSelect from 'react-native-picker-select';\n\nclass CreateDeliveryCost extends Component {\n\n    constructor(props) {\n        super(props);\n        this.state = {\n            operatorItem: [],\n            operator1: '',\n            operand1: '',\n            cost: '',\n            operator2: '',\n            operand2: '',\n\n            warning_operator1: false,\n            warning_operand1: false,\n            warning_cost: false,\n            warning_operator2: false,\n            warning_operand2: false,\n        };\n    }\n\n    async onPressButton() {\n\n        this.setState({\n            warning_operator1: false,\n            warning_operand1: false,\n            warning_cost: false,\n            warning_operator2: false,\n            warning_operand2: false,\n        })\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        if (this.state.operator1 != '' && this.state.cost != '' && this.state.operand1 != '') {\n            if (this.state.operator2 === \"\" && this.state.operand2 != \"\") {\n                this.setState({ warning_operator2: true })\n            } else if (this.state.operand2 === \"\" && this.state.operator2 != \"\") {\n                this.setState({ warning_operand2: true })\n            } else {\n                createDeliveryCost(userInfo.email, uuid, token, this.state.operator1, this.state.operand1, this.state.cost, this.state.operator2, this.state.operand2).then(data => {\n                    console.log(data)\n                    if (data.result == 0) {\n                        this.props.history.push('/selectCompanyAction')\n                    }\n                });\n            }\n        }\n\n        if (this.state.operator1 === \"\") {\n            this.setState({ warning_operator1: true })\n        }\n        if (this.state.operand1 === \"\") {\n            this.setState({ warning_operand1: true })\n        }\n        if (this.state.cost === \"\") {\n            this.setState({ warning_cost: true })\n        }\n    }\n\n    async componentDidMount() {\n        var operatorItem = []\n        operatorItem.push({ label: '大於Greater than (>)', value: '>' });\n        operatorItem.push({ label: '大過等於Greater than or Equal to (>=)', value: '>=' });\n        operatorItem.push({ label: '等於Equal to (=)', value: '=' });\n        operatorItem.push({ label: '小過等於Less than or Equal to (<=)', value: '<=' });\n        operatorItem.push({ label: '小於Less than (<)', value: '<' });\n\n        this.setState({\n            operatorItem\n        })\n    }\n\n    onPressBack = () => {\n        this.props.history.push('/selectCompanyAction');\n    }\n\n    onSelect(value) {\n        console.log(value)\n        if (value.includes(\"Select\")) {\n            this.setState({\n                operator1: ''\n            })\n        } else {\n            this.setState({\n                operator1: value\n            })\n        }\n    }\n\n    onSelect2(value) {\n        console.log(value)\n        if (value.includes(\"Select\")) {\n            this.setState({\n                operator2: ''\n            })\n        } else {\n            this.setState({\n                operator2: value\n            })\n        }\n    }\n\n    render() {\n        return (\n            <View style={styles.container}>\n                <Image style={styles.banner} source={require('./image/hippos_banner.png')} />\n                <Text style={styles.title}>新增運費 Create Delivery Cost</Text>\n                <View style={styles.login_border}>\n\n                    {this.state.warning_cost &&\n                        <Text style={styles.warning_item}>請輸入成本 Cost</Text>}\n                    {this.state.warning_operator1 &&\n                        <Text style={styles.warning_item}>請選擇運算符 Operator (1)</Text>}\n                    {this.state.warning_operand1 &&\n                        <Text style={styles.warning_item}>請輸數值Operand (1)</Text>}\n                    {this.state.warning_operator2 &&\n                        <Text style={styles.warning_item}>若選擇運算符 Operator (2)，數值Operand (2)不能為空</Text>}\n                    {this.state.warning_operand2 &&\n                        <Text style={styles.warning_item}>若輸入數值Operand (2)，運算符 Operator (2)不能為空</Text>}\n\n                    <Text style={styles.text}>運費 Delivery Cost</Text>\n                    <TextInput\n                        style={styles.inputfield}\n                        placeholder=\"運費 Delivery Cost\"\n                        onChangeText={(text) => { this.setState({ cost: text }) }}\n                        value={`${this.state.cost}`}\n                    />\n\n                    <Text style={styles.text}>運算符 Operator (1)</Text>\n                    <RNPickerSelect\n                        style={{ ...pickerSelectStyles }}\n                        value={this.state.operator1 || ''}\n                        onValueChange={this.onSelect.bind(this)}\n                        // onValueChange={(value) => console.log(value)}\n                        items={this.state.operatorItem}\n                    />\n\n                    <Text style={styles.text}>數值Operand (1)</Text>\n                    <TextInput\n                        style={styles.inputfield}\n                        placeholder=\"數值 Operand\"\n                        onChangeText={(text) => { this.setState({ operand1: text }) }}\n                        value={`${this.state.operand1}`}\n                    />\n\n                    <Text style={styles.text}>運算符 Operator (2)（選填）</Text>\n                    <RNPickerSelect\n                        style={{ ...pickerSelectStyles }}\n                        value={this.state.operator2 || ''}\n                        onValueChange={this.onSelect2.bind(this)}\n                        // onValueChange={(value) => console.log(value)}\n                        items={this.state.operatorItem}\n                    />\n\n                    <Text style={styles.text}>數值Operand (2)（選填）</Text>\n                    <TextInput\n                        style={styles.inputfield}\n                        placeholder=\"數值 Operand（2）（選填）\"\n                        onChangeText={(text) => { this.setState({ operand2: text }) }}\n                        value={`${this.state.operand2}`}\n                    />\n\n                    <Button\n                        style={{\n                            marginTop: 10\n                        }}\n                        large\n                        title=\"創建 Create\"\n                        onPress={this.onPressButton.bind(this)}\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 createDeliveryCost(email, uuid, token, operator1, operand1, cost, operator2, operand2) {\n\n    const data = new FormData();\n\n    data.append('username', email);\n    data.append('uuid', uuid);\n    data.append('token', token);\n    data.append('operator1', operator1);\n    data.append('operand1', operand1);\n    data.append('cost', cost);\n    if (operator2 != '' || operand2 != '') {\n        data.append('operator2', operator2);\n        data.append('operand2', operand2);\n    }\n\n    try {\n        return fetch(path + 'createDeliveryCost', {\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\n\nconst theme = {\n    colors: {\n        primary: 'red',\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,\n        alignSelf: 'center',\n        resizeMode: 'contain',\n        width: '100%',\n        height: 200,\n    },\n    banner: {\n        padding: 10, alignSelf: 'center',\n        resizeMode: \"contain\",\n        flex: 1,\n        width: '50%',\n        maxWidth: '100%',\n        height: 200,\n    },\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    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 CreateDeliveryCost;","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 DeliveryCostList extends Component {\n\n\n  handlePress = order => {\n    this.props.history.push('/editDeliveryCost', order);\n  };\n\n  constructor(props) {\n    super(props);\n    this.state = {\n      delivery_costs: 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\n    deliveryCosts(uuid, token, userInfo.email).then(data => {\n      console.log(data)\n      var delivery_costs = data.data.delivery_costs\n\n      this.setState({\n        uuid,\n        token,\n        username: userInfo.email,\n        delivery_costs\n      });\n    });\n  }\n\n  onPressBack = () => {\n    this.props.history.push('/selectCompanyAction');\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.delivery_costs}\n            showsVerticalScrollIndicator={false}\n            extraData={this.state}\n            renderItem={({ item }) => {\n              if (item.operator2 == null) {\n                return (\n                  <TouchableOpacity onPress={() => this.handlePress(item)}>\n                    <View style={styles.list_border_w_color}>\n                      <View>\n                        <Text style={styles.listedItemBold}>{`運費成本編號 Delivery Cost Id : ` + item.delivery_cost_id}</Text>\n                        <Text style={styles.listedItem}>{`運算符 Operator (1) : ` + item.operator1}</Text>\n                        <Text style={styles.listedItem}>{`數值 Operand (1) : ` + item.operand1}</Text>\n                        <Text style={styles.listedItem}>{`成本 Cost : ` + item.cost}</Text>\n\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}>{`運費成本編號 Delivery Cost Id : ` + item.delivery_cost_id}</Text>\n                        <Text style={styles.listedItem}>{`運算符 Operator (1) : ` + item.operator1}</Text>\n                        <Text style={styles.listedItem}>{`數值 Operand (1) : ` + item.operand1}</Text>\n                        <Text style={styles.listedItem}>{`運算符 Operator (2) : ` + item.operator2}</Text>\n                        <Text style={styles.listedItem}>{`數值 Operand (2) : ` + item.operand2}</Text>\n                        <Text style={styles.listedItem}>{`成本 Cost : ` + item.cost}</Text>\n                      </View>\n                    </View>\n                  </TouchableOpacity>\n                );\n              }\n            }}\n            keyExtractor={item => item.delivery_cost_id.toString()}\n          />\n        </View>\n      </View >\n    );\n  }\n}\n\nasync function deliveryCosts(uuid, token, email) {\n  try {\n    return fetch(path + 'deliveryCosts', {\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\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  selectedPageNum: {\n    fontSize: 20,\n    marginRight: 5,\n    color: 'Black'\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 DeliveryCostList;","import React, { Component } from 'react';\nimport { Image, StyleSheet, Alert, View, TextInput, Text, Platform } from 'react-native';\nimport { ThemeProvider, Button } from 'react-native-elements';\nimport { AsyncStorage } from 'react-native';\nimport { Redirect } from 'react-router';\nimport path from './serverPath.js'\nimport SwitchSelector from 'react-native-switch-selector';\nimport RNPickerSelect from 'react-native-picker-select';\n\nclass EditDeliveryCost extends Component {\n\n    constructor(props) {\n        super(props);\n        this.state = {\n            delivery_cost : null,\n            operatorItem: [],\n            operator1: '',\n            operand1: '',\n            cost: '',\n            operator2: '',\n            operand2: '',\n\n            warning_operator1: false,\n            warning_operand1: false,\n            warning_cost: false,\n            warning_operator2: false,\n            warning_operand2: false,\n        };\n    }\n\n    async onPressButton() {\n        console.log(\"onPressButton\")\n        this.setState({\n            warning_operator1: false,\n            warning_operand1: false,\n            warning_cost: false,\n            warning_operator2: false,\n            warning_operand2: false,\n        })\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        console.log(\"operator1\" , this.state.operator1)\n        console.log(\"cost\" , this.state.cost)\n        console.log(\"operand1\" , this.state.operand1)\n        if (this.state.operator1 != '' && this.state.cost != '' && this.state.operand1 >= 0) {\n            console.log(\"IF 1\")\n            if (this.state.operator2 === \"\" && this.state.operand2 != \"\") {\n                console.log(\"IF 2\")\n                this.setState({ warning_operator2: true })\n            } else if (this.state.operand2 === \"\" && this.state.operator2 != \"\") {\n                console.log(\"IF 3\")\n                this.setState({ warning_operand2: true })\n            } else {\n                console.log(\"CallAPI\")\n                createDeliveryCost(userInfo.email, uuid, token, this.state.delivery_cost.delivery_cost_id, this.state.operator1, this.state.operand1, this.state.cost, this.state.operator2, this.state.operand2).then(data => {\n                    console.log(data)\n                    if (data.result == 0) {\n                        this.props.history.push('/deliveryCostList')\n                    }\n                });\n            }\n        }\n        console.log(\"IF 4\")\n\n        if (this.state.operator1 === \"\") {\n            this.setState({ warning_operator1: true })\n        }\n        if (this.state.operand1 === \"\") {\n            this.setState({ warning_operand1: true })\n        }\n        if (this.state.cost === \"\") {\n            this.setState({ warning_cost: true })\n        }\n    }\n\n    async componentDidMount() {\n        const delivery_cost = this.props.location.state;\n\n        var operatorItem = []\n        operatorItem.push({ label: '大於Greater than (>)', value: '>' });\n        operatorItem.push({ label: '大過等於Greater than or Equal to (>=)', value: '>=' });\n        operatorItem.push({ label: '等於Equal to (=)', value: '=' });\n        operatorItem.push({ label: '小過等於Less than or Equal to (<=)', value: '<=' });\n        operatorItem.push({ label: '小於Less than (<)', value: '<' });\n\n        this.setState({\n            delivery_cost,\n            operatorItem,\n            operator1: delivery_cost.operator1,\n            operand1: delivery_cost.operand1,\n            cost: delivery_cost.cost,\n        })\n\n        if (delivery_cost.operator2 != null) {\n            this.setState({\n                operator2: delivery_cost.operator2,\n                operand2: delivery_cost.operand2,\n            })\n        }\n    }\n\n    onPressBack = () => {\n        this.props.history.push('/deliveryCostList');\n    }\n\n    onSelect(value) {\n        console.log(value)\n        if (value.includes(\"Select\")) {\n            this.setState({\n                operator1: ''\n            })\n        } else {\n            this.setState({\n                operator1: value\n            })\n        }\n    }\n\n    onSelect2(value) {\n        console.log(value)\n        if (value.includes(\"Select\")) {\n            this.setState({\n                operator2: ''\n            })\n        } else {\n            this.setState({\n                operator2: value\n            })\n        }\n    }\n\n    async handleRemove() {\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        deleteDeliveryCost(userInfo.email, uuid, token, this.state.delivery_cost.delivery_cost_id).then(data => {\n            console.log(data)\n            if (data.result == 0) {\n                this.props.history.push('/deliveryCostList')\n            }\n        });\n    }\n\n\n    render() {\n        return (\n            <View style={styles.container}>\n                <Image style={styles.banner} source={require('./image/hippos_banner.png')} />\n                <Text style={styles.title}>編輯運費 Edit Delivery Cost</Text>\n                <View style={styles.login_border}>\n\n                    {this.state.warning_cost &&\n                        <Text style={styles.warning_item}>請輸入成本 Cost</Text>}\n                    {this.state.warning_operator1 &&\n                        <Text style={styles.warning_item}>請選擇運算符 Operator (1)</Text>}\n                    {this.state.warning_operand1 &&\n                        <Text style={styles.warning_item}>請輸數值Operand (1)</Text>}\n                    {this.state.warning_operator2 &&\n                        <Text style={styles.warning_item}>若選擇運算符 Operator (2)，數值Operand (2)不能為空</Text>}\n                    {this.state.warning_operand2 &&\n                        <Text style={styles.warning_item}>若輸入數值Operand (2)，運算符 Operator (2)不能為空</Text>}\n\n                    <Text style={styles.text}>運費 Delivery Cost</Text>\n                    <TextInput\n                        style={styles.inputfield}\n                        placeholder=\"運費 Delivery Cost\"\n                        onChangeText={(text) => { this.setState({ cost: text }) }}\n                        value={`${this.state.cost}`}\n                    />\n\n                    <Text style={styles.text}>運算符 Operator (1)</Text>\n                    <RNPickerSelect\n                        style={{ ...pickerSelectStyles }}\n                        value={this.state.operator1 || ''}\n                        onValueChange={this.onSelect.bind(this)}\n                        // onValueChange={(value) => console.log(value)}\n                        items={this.state.operatorItem}\n                    />\n\n                    <Text style={styles.text}>數值Operand (1)</Text>\n                    <TextInput\n                        style={styles.inputfield}\n                        placeholder=\"數值 Operand\"\n                        onChangeText={(text) => { this.setState({ operand1: text }) }}\n                        value={`${this.state.operand1}`}\n                    />\n\n                    <Text style={styles.text}>運算符 Operator (2)（選填）</Text>\n                    <RNPickerSelect\n                        style={{ ...pickerSelectStyles }}\n                        value={this.state.operator2 || ''}\n                        onValueChange={this.onSelect2.bind(this)}\n                        // onValueChange={(value) => console.log(value)}\n                        items={this.state.operatorItem}\n                    />\n\n                    <Text style={styles.text}>數值Operand (2)（選填）</Text>\n                    <TextInput\n                        style={styles.inputfield}\n                        placeholder=\"數值 Operand（2）（選填）\"\n                        onChangeText={(text) => { this.setState({ operand2: text }) }}\n                        value={`${this.state.operand2}`}\n                    />\n\n                    <Button\n                        style={{\n                            marginTop: 10\n                        }}\n                        large\n                        title=\"更新 Update\"\n                        onPress={this.onPressButton.bind(this)}\n                    />\n\n\n                    <ThemeProvider theme={theme} >\n                        <Button title='刪除 Remove'\n                            style={{\n                                marginTop: 10\n                            }}\n                            onPress={() => this.handleRemove(this)} />\n                    </ThemeProvider>\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 createDeliveryCost(email, uuid, token, delivery_cost_id, operator1, operand1, cost, operator2, operand2) {\n\n    const data = new FormData();\n\n    data.append('username', email);\n    data.append('uuid', uuid);\n    data.append('token', token);\n    data.append('delivery_cost_id', delivery_cost_id);\n    data.append('operator1', operator1);\n    data.append('operand1', operand1);\n    data.append('cost', cost);\n    if (operator2 != '' || operand2 != '') {\n        data.append('operator2', operator2);\n        data.append('operand2', operand2);\n    }\n\n    try {\n        return fetch(path + 'updateDeliveryCost', {\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\nasync function deleteDeliveryCost(email, uuid, token, delivery_cost_id) {\n\n    const data = new FormData();\n\n    data.append('username', email);\n    data.append('uuid', uuid);\n    data.append('token', token);\n    data.append('delivery_cost_id', delivery_cost_id);\n\n    try {\n        return fetch(path + 'deleteDeliveryCost', {\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\nconst theme = {\n    colors: {\n        primary: 'red',\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,\n        alignSelf: 'center',\n        resizeMode: 'contain',\n        width: '100%',\n        height: 200,\n    },\n    banner: {\n        padding: 10, alignSelf: 'center',\n        resizeMode: \"contain\",\n        flex: 1,\n        width: '50%',\n        maxWidth: '100%',\n        height: 200,\n    },\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    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 EditDeliveryCost;","import React, { Component } from 'react';\nimport { Image, StyleSheet, Alert, View, TextInput, Text, Platform } from 'react-native';\nimport { ThemeProvider, Button } from 'react-native-elements';\nimport { AsyncStorage } from 'react-native';\nimport { Redirect } from 'react-router';\nimport path from './serverPath.js'\nimport SwitchSelector from 'react-native-switch-selector';\n\nimport ImagePicker from \"react-native-everywhere-image-picker\";\n\nclass CreateBrand extends Component {\n\n    constructor(props) {\n        super(props);\n        this.state = {\n            uuid: '',\n            token: '',\n            email: '',\n\n            image: '',\n            previewImage: '',\n\n            name_en: '',\n            name_zh_TW: '',\n            name_zh_CN: '',\n        };\n    }\n\n    async onPressButton() {\n        createBrand(this.state.email, this.state.uuid, this.state.token, this.state.name_en, this.state.name_zh_TW, this.state.name_zh_CN, this.state.image).then(data => {\n            console.log(data)\n            if (data.result == 0) {\n                this.props.history.push('/selectCompanyAction')\n            }\n        });\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({\n            uuid,\n            token,\n            email: userInfo.email,\n        })\n\n    }\n\n    onPressBack = () => {\n        this.props.history.push('/selectCompanyAction');\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 image = new Blob([byteArray], { type: 'image/png' });\n\n        this.setState(() => ({ image, previewImage: uri }));\n\n    };\n\n    handleRemoveImage() {\n        this.setState({\n            image: '', previewImage: ''\n        })\n    }\n\n    render() {\n        return (\n            <View style={styles.container}>\n                <Image style={styles.banner} source={require('./image/hippos_banner.png')} />\n                <Text style={styles.title}>新增品牌 Create Brand</Text>\n                <View style={styles.login_border}>\n\n                    <View>\n                        <Text style={styles.text}>品牌名稱 Brand Name（EN）</Text>\n                        <TextInput\n                            style={styles.inputfield}\n                            placeholder=\"品牌名稱 Brand Name（EN）\"\n                            onChangeText={(text) => { this.setState({ name_en: text }) }}\n                            value={`${this.state.name_en}`}\n                        />\n                    </View>\n\n                    <View>\n                        <Text style={styles.text}>品牌名稱 Brand Name（繁體）</Text>\n                        <TextInput\n                            style={styles.inputfield}\n                            placeholder=\"品牌名稱 Brand Name（繁體）\"\n                            onChangeText={(text) => { this.setState({ name_zh_TW: text }) }}\n                            value={`${this.state.name_zh_TW}`}\n                        />\n                    </View>\n\n                    <View>\n                        <Text style={styles.text}>品牌名稱 Brand Name（簡體）</Text>\n                        <TextInput\n                            style={styles.inputfield}\n                            placeholder=\"品牌名稱 Brand Name（簡體）\"\n                            onChangeText={(text) => { this.setState({ name_zh_CN: text }) }}\n                            value={`${this.state.name_zh_CN}`}\n                        />\n                    </View>\n\n                    <Text style={styles.text}>品牌Logo</Text>\n                    <ImagePicker onComplete={this._handleImage}>\n                        <Button\n                            style={{ marginBottom: 20 }}\n                            large\n                            title=\"選擇圖片Select Image\"\n                        />\n                    </ImagePicker>\n\n                    {this.state.previewImage != '' &&\n                        <Image source={{ uri: this.state.previewImage }} style={styles.image} />}\n                    {this.state.previewImage != '' &&\n                        <ThemeProvider theme={theme} >\n                            <Button title='刪除 Remove'\n                                onPress={() => this.handleRemoveImage(this)} />\n                        </ThemeProvider>}\n\n                    <Button\n                        style={{ marginTop: 10 }}\n                        large\n                        title=\"創建 Create\"\n                        onPress={this.onPressButton.bind(this)}\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 createBrand(email, uuid, token, name_en, name_zh_TW, name_zh_CN, logo) {\n\n    const data = new FormData();\n\n    data.append('username', email);\n    data.append('uuid', uuid);\n    data.append('token', token);\n    data.append('all_langs', '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\n    if (logo != null) {\n        data.append('logo', logo);\n    }\n\n    try {\n        return fetch(path + 'inventory/createBrand', {\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\n\nconst theme = {\n    colors: {\n        primary: 'red',\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,\n        alignSelf: 'center',\n        resizeMode: 'contain',\n        width: '100%',\n        height: 200,\n    },\n    banner: {\n        padding: 10, alignSelf: 'center',\n        resizeMode: \"contain\",\n        flex: 1,\n        width: '50%',\n        maxWidth: '100%',\n        height: 200,\n    },\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});\n\nexport default CreateBrand;","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 storagePath from './storagePath.js'\nimport { FlatGrid } from 'react-native-super-grid';\n\n\nclass BrandList extends Component {\n\n  handlePress = banner => {\n    this.props.history.push('/editBrand', banner);\n  };\n\n  constructor(props) {\n    super(props);\n    this.state = {\n      brands: 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    getBrands(uuid, token, userInfo.email).then(data => {\n      console.log(data)\n      var brands = data.data.brands\n\n      this.setState({\n        brands\n      })\n    })\n  }\n\n  onPressBack = () => {\n    this.props.history.push('/selectCompanyAction');\n  }\n\n  render() {\n    if (this.state.brands == 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.banner} source={require('./image/hippos_banner.png')} />\n            <Button\n              style={{ marginTop: 10 }}\n              large\n              title=\"返回 Back\"\n              onPress={this.onPressBack.bind(this)}\n            />\n\n          </View>\n          <View >\n            <FlatGrid\n              itemDimension={200}\n              items={this.state.brands}\n              renderItem={({ item }) => {\n                return (\n                  <TouchableOpacity onPress={() => this.handlePress(item)}>\n                    <View style={styles.list_border}>\n                      <View>\n                        <Image source={item.logo} style={styles.image} />\n                        <Text style={styles.listedItem}>{item.name_en}</Text>\n                      </View>\n                    </View>\n                  </TouchableOpacity>\n                )\n              }}\n              keyExtractor={item => item.id}\n            />\n          </View>\n        </View>\n      )\n    }\n  }\n}\n\nasync function getBrands(uuid, token, email) {\n  try {\n    return fetch(path + 'inventory/brands', {\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        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    marginTop: 10,\n    // background: '#285b97',\n    borderRadius: 3,\n    padding: 5,\n    marginLeft: 2,\n    alignSelf: 'center'\n  },\n  listedItemName: {\n    fontSize: 16,\n    // background: '#285b97',\n    borderRadius: 3,\n    padding: 5,\n    marginLeft: 2,\n  },\n  listedPageNum: {\n    fontSize: 18,\n    marginRight: 5,\n    textDecorationLine: 'underline',\n    color: 'blue'\n  },\n  listedItemCancel: {\n    fontSize: 14,\n    color: 'red',\n    borderRadius: 3,\n    padding: 5,\n    marginLeft: 2,\n  },\n  listedItemComplete: {\n    fontSize: 14,\n    color: '#62C377',\n    // background: '#285b97',\n    borderRadius: 3,\n    padding: 5,\n    marginLeft: 2,\n  },\n  banner: {\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  list_border: {\n    marginTop: 10,\n    width: 200,\n    borderColor: '#000',\n    borderRadius: 5,\n    borderWidth: 2,\n    padding: 10,\n    flexGrow: 1,\n    flexDirection: 'row'\n  },\n  image: {\n    height: 100,\n    width: 180,\n    alignSelf: 'center',\n    resizeMode: 'contain',\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 BrandList;","import React, { Component } from 'react';\nimport { Image, StyleSheet, Alert, View, TextInput, Text, Platform } from 'react-native';\nimport { ThemeProvider, Button } from 'react-native-elements';\nimport { AsyncStorage } from 'react-native';\nimport { Redirect } from 'react-router';\nimport path from './serverPath.js'\nimport SwitchSelector from 'react-native-switch-selector';\n\nimport ImagePicker from \"react-native-everywhere-image-picker\";\n\nclass EditBrand extends Component {\n\n    constructor(props) {\n        super(props);\n        this.state = {\n            uuid: '',\n            token: '',\n            email: '',\n\n            image: '',\n            previewImage: '',\n\n            brand : null,\n\n            name_en: '',\n            name_zh_TW: '',\n            name_zh_CN: '',\n        };\n    }\n\n    async onPressButton() {\n        updateBrand(this.state.email, this.state.uuid, this.state.token, this.state.brand.id, this.state.name_en, this.state.name_zh_TW, this.state.name_zh_CN, this.state.image).then(data => {\n            console.log(data)\n            if (data.result == 0) {\n                this.props.history.push('/brandList')\n            }\n        });\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({\n            uuid,\n            token,\n            email: userInfo.email,\n        })\n\n        const brand = this.props.location.state\n\n        this.setState({\n            brand,\n            previewImage: brand.logo,\n            name_en: brand.name_en,\n            name_zh_TW: brand.name_zh_TW,\n            name_zh_CN: brand.name_zh_CN,\n        })\n    }\n\n    onPressBack = () => {\n        this.props.history.push('/selectCompanyAction');\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 image = new Blob([byteArray], { type: 'image/png' });\n\n        this.setState(() => ({ image, previewImage: uri }));\n\n    };\n\n    handleRemoveImage() {\n        this.setState({\n            image: '', previewImage: ''\n        })\n    }\n\n    doDeleteBrand(){\n        deleteBrand(this.state.email, this.state.uuid, this.state.token, this.state.brand.id).then(data => {\n            console.log(data)\n            if (data.result == 0) {\n                this.props.history.push('/brandList')\n            }\n        });\n    }\n\n    render() {\n        return (\n            <View style={styles.container}>\n                <Image style={styles.banner} source={require('./image/hippos_banner.png')} />\n                <Text style={styles.title}>編輯品牌 Edit Brand</Text>\n                <View style={styles.login_border}>\n\n                    <View>\n                        <Text style={styles.text}>品牌名稱 Brand Name（EN）</Text>\n                        <TextInput\n                            style={styles.inputfield}\n                            placeholder=\"品牌名稱 Brand Name（EN）\"\n                            onChangeText={(text) => { this.setState({ name_en: text }) }}\n                            value={`${this.state.name_en}`}\n                        />\n                    </View>\n\n                    <View>\n                        <Text style={styles.text}>品牌名稱 Brand Name（繁體）</Text>\n                        <TextInput\n                            style={styles.inputfield}\n                            placeholder=\"品牌名稱 Brand Name（繁體）\"\n                            onChangeText={(text) => { this.setState({ name_zh_TW: text }) }}\n                            value={`${this.state.name_zh_TW}`}\n                        />\n                    </View>\n\n                    <View>\n                        <Text style={styles.text}>品牌名稱 Brand Name（簡體）</Text>\n                        <TextInput\n                            style={styles.inputfield}\n                            placeholder=\"品牌名稱 Brand Name（簡體）\"\n                            onChangeText={(text) => { this.setState({ name_zh_CN: text }) }}\n                            value={`${this.state.name_zh_CN}`}\n                        />\n                    </View>\n\n                    <Text style={styles.text}>品牌Logo</Text>\n                    <ImagePicker onComplete={this._handleImage}>\n                        <Button\n                            style={{ marginBottom: 20 }}\n                            large\n                            title=\"選擇圖片Select Image\"\n                        />\n                    </ImagePicker>\n\n                    {this.state.previewImage != '' &&\n                        <Image source={{ uri: this.state.previewImage }} style={styles.image} />}\n                    {/* {this.state.previewImage != '' &&\n                        <ThemeProvider theme={theme} >\n                            <Button title='刪除 Remove'\n                                onPress={() => this.handleRemoveImage(this)} />\n                        </ThemeProvider>} */}\n\n                    <Button\n                        large\n                        style={{ marginTop: 10 }}\n                        title=\"更新品牌 Update Brand\"\n                        onPress={this.onPressButton.bind(this)}\n                    />\n\n                    <ThemeProvider theme={theme} >\n                        <Button title='刪除品牌 Delete Brand'\n                            style={{ marginTop: 10 }}\n                            onPress={() => this.doDeleteBrand(this)} />\n                    </ThemeProvider>\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 updateBrand(email, uuid, token, brand_id, name_en, name_zh_TW, name_zh_CN, logo) {\n\n    const data = new FormData();\n\n    data.append('username', email);\n    data.append('uuid', uuid);\n    data.append('token', token);\n    data.append('brand_id', brand_id)\n    data.append('all_langs', '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\n    if (logo != null) {\n        data.append('logo', logo);\n    }\n\n    try {\n        return fetch(path + 'inventory/updateBrand', {\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\nasync function deleteBrand(email, uuid, token, brand_id) {\n\n    const data = new FormData();\n\n    data.append('username', email);\n    data.append('uuid', uuid);\n    data.append('token', token);\n    data.append('brand_id', brand_id);\n\n    try {\n        return fetch(path + 'inventory/deleteBrand', {\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\n\n\nconst theme = {\n    colors: {\n        primary: 'red',\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,\n        alignSelf: 'center',\n        resizeMode: 'contain',\n        width: '100%',\n        height: 200,\n    },\n    banner: {\n        padding: 10, alignSelf: 'center',\n        resizeMode: \"contain\",\n        flex: 1,\n        width: '50%',\n        maxWidth: '100%',\n        height: 200,\n    },\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});\n\nexport default EditBrand;","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'\nimport CreateBanner from './CreateBanner'\nimport SelectCompanyAction from './SelectCompanyAction'\nimport BannerList from './BannerList'\nimport EditBanner from './EditBanner'\nimport EditCompany from './EditCompany'\nimport CategoryList from './CategoryList'\nimport EditCategory from './EditCategory'\nimport StockInRecord from './StockInRecord'\nimport EditStockIn from './EditStockIn'\nimport CreateDeliveryCost from './CreateDeliveryCost'\nimport DeliveryCostList from './DeliveryCostList'\nimport EditDeliveryCost from './EditDeliveryCost'\nimport CreateBrand from './CreateBrand'\nimport BrandList from './BrandList'\nimport EditBrand from './EditBrand'\n\nclass App extends Component {\n\n  async componentDidMount() {\n   \n  }\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            <Route\n              path=\"/createBanner\"\n              render={props => (\n                <CreateBanner\n                  {...props}\n                />\n              )}\n            />\n            <Route\n              path=\"/selectCompanyAction\"\n              render={props => (\n                <SelectCompanyAction\n                  {...props}\n                />\n              )}\n            />\n            <Route\n              path=\"/bannerList\"\n              render={props => (\n                <BannerList\n                  {...props}\n                />\n              )}\n            />\n            <Route\n              path=\"/editBanner\"\n              render={props => (\n                <EditBanner\n                  {...props}\n                />\n              )}\n            />\n            <Route\n              path=\"/editCompany\"\n              render={props => (\n                <EditCompany\n                  {...props}\n                />\n              )}\n            />\n            <Route\n              path=\"/categoryList\"\n              render={props => (\n                <CategoryList\n                  {...props}\n                />\n              )}\n            />\n            <Route\n              path=\"/editCategory\"\n              render={props => (\n                <EditCategory\n                  {...props}\n                />\n              )}\n            />\n            <Route\n              path=\"/stockInRecord\"\n              render={props => (\n                <StockInRecord\n                  {...props}\n                />\n              )}\n            />\n            <Route\n              path=\"/editStockIn\"\n              render={props => (\n                <EditStockIn\n                  {...props}\n                />\n              )}\n            />\n            <Route\n              path=\"/createDeliveryCost\"\n              render={props => (\n                <CreateDeliveryCost\n                  {...props}\n                />\n              )}\n            />\n            <Route\n              path=\"/deliveryCostList\"\n              render={props => (\n                <DeliveryCostList\n                  {...props}\n                />\n              )}\n            />\n            <Route\n              path=\"/editDeliveryCost\"\n              render={props => (\n                <EditDeliveryCost\n                  {...props}\n                />\n              )}\n            />\n            <Route\n              path=\"/createBrand\"\n              render={props => (\n                <CreateBrand\n                  {...props}\n                />\n              )}\n            />\n             <Route\n              path=\"/brandList\"\n              render={props => (\n                <BrandList\n                  {...props}\n                />\n              )}\n            />\n             <Route\n              path=\"/editBrand\"\n              render={props => (\n                <EditBrand\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: '10%',\n    paddingRight: '10%',\n    justifyContent: 'center',\n  }\n});\n\nexport default App;","import { AppRegistry } from \"react-native\";\nimport App from \"./App\";\n\nAppRegistry.registerComponent(\"App\", () => App);\n\nAppRegistry.runApplication(\"App\", {\n  rootTag: document.getElementById(\"root\")\n});\n"],"sourceRoot":""}