import React, { Component } from 'react';
import { Dimensions, Platform, StyleSheet, View, Alert, StatusBar, ScrollView, Text, ProgressBarAndroid, ActivityIndicator, TouchableOpacity } from 'react-native';
import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
import I18n from 'react-native-i18n'
import LottieView from 'lottie-react-native';
import * as Utils from '../../utils/DeviceUtils';
import Icons from 'react-native-vector-icons/Ionicons'
import { Images } from '../../config/Images';
import CustomButton from '../../components/CustomButton';
import OutlineTextInput from '../../components/OutlineTextInput';
import { Color } from '../../config/Color';
import Tag from '../../components/Tag';
import { IlinkEmitter } from "../../utils/events";
import { CreditCardInput } from "react-native-credit-card-input";
import { Typography, FontWeight } from '../../config/typography';
import depositAction from '../../webservice/DepositApi';
import Dialog, { DialogContent, DialogTitle, DialogFooter, DialogButton } from 'react-native-popup-dialog';
let moment = require('moment-timezone');
import 'moment/locale/fr'
import 'moment/locale/es-us'
import 'moment/locale/en-au'
import 'moment/locale/en-ca'
import 'moment/locale/en-ie'
import 'moment/locale/en-il'
import 'moment/locale/en-nz'
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import style from '../../components/TextInput/styles';
import { responsiveHeight, responsiveWidth, } from 'react-native-responsive-dimensions';
const CONTAINER_WIDTH = Dimensions.get("window").width;
class WalletDepot extends Component {
static navigatorStyle = {
navBarBackgroundColor: Color.accentLightColor,
statusBarColor: Color.accentColor,
navBarTextColor: '#FFFFFF',
navBarButtonColor: '#FFFFFF',
};
static navigationOptions = ({ navigation }) => {
return {
drawerLabel: () => null,
title: I18n.t('MAKE_DEPOSIT')
}
};
constructor(props) {
super(props);
this.state = {
type: "debit",
montant: null,
numCarte: 0,
cvv: 0,
expiration_date: '',
creditCardInput: {},
comptePrincipal: this.props.navigation.state.params.wallet.balance_princ,
id: this.props.navigation.state.params.wallet.id,
isModalConfirmVisible: false,
isDataSubmit: false
};
console.log("Wallet Params", this.props.navigation.state.params.wallet);
IlinkEmitter.on("langueChange", this.updateLangue.bind(this));
}
updateLangue() {
this.props.navigation.setParams({ name: I18n.t('WALLET') })
this.forceUpdate()
}
onCreditCardChange = (form) => {
this.setState({
creditCardInput: form
});
}
isNormalInteger = (str) => {
if (/[ `!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?~]/.test(str))
return false;
else
return true;
}
isMontantValid = () => {
const { montant } = this.state;
if ((parseInt(montant) == 0 || montant < 0))
return {
errorMessage: I18n.t('ENTER_AMOUNT_SUPERIOR_ZEROR'),
isValid: false
};
else if (!this.isNormalInteger(montant))
return {
errorMessage: I18n.t('ENTER_VALID_AMOUNT'),
isValid: false
};
else if (montant > parseInt(this.state.comptePrincipal))
return {
errorMessage: I18n.t('AMOUNT_SUPERIOR_TO_PRINCIPAL_ACCOUNT'),
isValid: false
};
else
return {
errorMessage: '',
isValid: true
};
}
commissionsFees = (amount, tauxComClientDepot, fraisMinBanquedepot) => {
let tauxComClientDepotTemp = ((amount * tauxComClientDepot) / 100);
return Math.round(tauxComClientDepotTemp + fraisMinBanquedepot);
}
modalConfirmTransaction = () => {
const { frais_min_banque_depot, taux_com_client_depot, } = this.props.navigation.state.params.wallet;
return (
)
}
onSubmitDeposit = () => {
const { creditCardInput } = this.state;
if (this.isMontantValid().isValid && creditCardInput.valid) {
this.setState({
numCarte: parseInt((creditCardInput.values.number).replace(/ /g, ' ')),
cvv: creditCardInput.values.cvc,
expiration_date: creditCardInput.values.expiry,
isModalConfirmVisible: true
});
//this.props.depositAction(this.state);
}
}
isHasError = () => {
const { error, result } = this.props;
if (this.state.isDataSubmit) {
if (error !== null) {
Alert.alert(
I18n.t("ERROR_LABEL"),
error,
[
{
text: I18n.t("OK"), onPress: () => { }
}
],
{ cancelable: false }
);
return null
}
else if (result !== null) {
setTimeout(() => {
this.props.navigation.pop();
}, 1500);
return
}
else
return null;
}
}
render() {
const { error } = this.props;
return (
{this.isHasError()}
{this.modalConfirmTransaction()}
{
this.setState({ montant });
this.isMontantValid();
}}
/>
{
(!this.isMontantValid().isValid && this.state.montant !== null) &&
{this.isMontantValid().errorMessage}
}
this.onSubmitDeposit()}>
{I18n.t('VALIDATE')}
)
}
}
const mapStateToProps = state => ({
loading: state.depositReducer.loading,
result: state.depositReducer.result,
error: state.depositReducer.error
});
const mapDispatchToProps = dispatch => bindActionCreators({
depositAction: depositAction
}, dispatch);
export default connect(mapStateToProps, mapDispatchToProps)(WalletDepot);
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: Color.containerBackgroundColor
},
checkDefault: {
flexDirection: "row",
justifyContent: "space-between",
alignItems: "center",
borderBottomWidth: 1,
paddingVertical: 15,
marginTop: 10
},
contentButtonBottom: {
borderTopWidth: 1,
paddingVertical: 10,
paddingHorizontal: 20,
flexDirection: "row",
justifyContent: "space-between",
alignItems: "center"
},
blockView: {
paddingVertical: 10,
borderBottomWidth: 1
},
lottie: {
width: 248,
height: 248
},
});