/* eslint-disable prettier/prettier */
/**
* Sample React Native App
* https://github.com/facebook/react-native
*
* @format
* @flow
*/
import React, {Component} from 'react';
import {
Alert,
BackHandler,
Picker,
ProgressBarAndroid,
StatusBar,
StyleSheet,
Text,
View,
} from 'react-native';
import {
responsiveFontSize,
responsiveHeight,
responsiveWidth,
} from 'react-native-responsive-dimensions';
import CardView from 'react-native-cardview';
import {Sae} from 'react-native-textinput-effects';
import FontAwesomeIcon from 'react-native-vector-icons/FontAwesome';
import Button from 'apsl-react-native-button';
import {primary} from '../../utils/theme.json';
import * as Animatable from 'react-native-animatable';
import {isNumber} from 'util';
import {readUser} from './../../webservice/AuthApi';
import {sendDemandeSpecificque} from '../../webservice/HistoryRequestApi';
import {getAgentNetworksList} from '../../webservice/NetworkApi';
import {HelperText, TextInput} from 'react-native-paper';
import I18n from 'react-native-i18n';
import {ProgressDialog} from 'react-native-simple-dialogs';
import {
Card,
CardAction,
CardButton,
CardContent,
} from 'react-native-material-cards';
type Props = {};
const route = require('../../route.json');
export default class HistoryRequester extends Component {
static navigatorStyle = {
navBarHidden: true,
};
static navigationOptions = {
drawerLabel: () => null,
headerTitle: I18n.t('ASK_CREDIT'),
title: I18n.t('ASK_CREDIT'),
};
constructor(props) {
super(props);
this.state = this.initState();
this.updateState();
}
componentDidDisappear() {
BackHandler.removeEventListener('hardwareBackPress', this.backPressed);
this.props.navigation.state.params.onGoBack();
}
componentDidAppear() {
BackHandler.addEventListener('hardwareBackPress', this.backPressed);
}
componentWillUnmount() {
this.props.navigation.state.params.onGoBack();
}
handleViewRef = ref => (this.numberView = ref);
handleMontantRef = ref => (this.montantView = ref);
initState() {
return {
phone: null,
montant: undefined,
isSending: false,
isDisabled: true,
networks: [],
user: null,
visibleError: false,
currentNetwork: {nt: 1},
errorAnimation: '',
};
}
backPressed = () => {
this.props.navigation.state.params.onGoBack();
};
onUserCancel() {
console.log(this.props);
this.props.navigation.state.params.onGoBack();
this.props.navigation.goBack();
}
onUserSend() {
var validMontant = true;
if (!isNumber(this.state.montant) || this.state.montant > 1000000) {
validMontant = false;
}
this.setState({visibleError: !validMontant});
if (!validMontant) {
this.montantView.shake(800);
setTimeout(() => {
this.setState({visibleError: false});
}, 3000);
} else {
this.setState({isSending: true});
let title = '';
let message = '';
sendDemandeSpecificque(
this.state.montant,
this.state.user.phoneTransaction,
this.state.user.code_membre,
)
.then(data => {
console.warn(data);
this.setState({isSending: false});
if (data.success !== undefined) {
if (data.success === 1) {
(title = I18n.t('DEMAND_SEND')),
(message = I18n.t('DEMAND_SEND_SUCCESFUL'));
} else {
(title = "Erreur survenu lors de l'envoie "),
(message =
"Une erreur est survenu lors de l'envoie de la demande");
}
} else {
(title = "Erreur survenu lors de l'envoie "),
(message =
"Une erreur est survenu lors de l'envoie de la demande");
}
Alert.alert(title, message, [
{
text: 'Ok',
onPress: () => {
this.setState({montant: ''});
},
},
]);
})
.catch(error => {
this.setState({isSending: false});
console.warn(error);
(title = "Erreur survenu lors de l'envoie "),
(message = "Une erreur est survenu lors de l'envoie de la demande");
Alert.alert(title, message, [{text: 'Ok'}]);
});
}
}
render() {
const {user} = this.state;
console.log(this.state);
return (
{this.state.isSending && this.renderLoader()}
{user ? (
user.category === 'geolocated' ? (
this.multiNetwork()
) : (
this.simpleAgent()
)
) : (
)}
);
}
simpleAgent() {
let montant = 0;
if (true) {
return (
{
this.refInp = ref;
}}
mode={'outlined'}
inputStyle={input.style}
onChangeText={text => {
try {
let neb = parseInt(text);
this.setState({montant: neb, isDisabled: isNaN(neb)});
} catch (e) {}
}}
value={this.state.montant}
/>
{I18n.t('INVALID_MONTANT')}
{
this.onUserCancel();
}}
title={I18n.t('CANCEL')}
color="crimson"
/>
{
this.onUserSend();
}}
title={I18n.t('SEND')}
color="steelblue"
/>
);
} else
return (
Demande de credit
{
this.refInp = ref;
}}
onChangeText={text => {
if (text.length > 0) {
try {
montant = parseFloat(text);
this.setState({
isDisabled: montant > 0,
montant: montant,
});
} catch (e) {}
}
}}
style={input.selfitem}
labelStyle={input.label}
autoCapitalize={'none'}
autoCorrect={false}
/>
);
}
renderLoader = () => {
return (
);
};
multiNetwork() {
if (true) {
return (
this.setState({currentNetwork: itemValue})
}>
{this.state.networks.map((item, index) => {
return (
);
})}
{
this.refInp = ref;
}}
mode={'outlined'}
inputStyle={input.style}
onChangeText={text => {
try {
let neb = parseInt(text);
this.setState({montant: neb, isDisabled: isNaN(neb)});
} catch (e) {}
}}
value={this.state.montant}
/>
{I18n.t('INVALID_MONTANT')}
{
this.onUserCancel();
}}
title={I18n.t('CANCEL')}
color="crimson"
/>
{
const {currentNetwork, montant} = this.state;
if (
currentNetwork !== undefined &&
currentNetwork.nt === undefined
) {
this.onNetworkSend(
currentNetwork.phone,
currentNetwork.code_membre,
montant,
);
}
}}
title={I18n.t('SEND')}
color="steelblue"
/>
);
} else
{return (
{I18n.t('ASK_CREDIT')}
this.setState({currentNetwork: itemValue})
}>
{this.state.networks.map((item, index) => {
return ()
})}
{
this.refInp = ref
}}
inputStyle={input.style}
keyboardType={"numeric"}
onChangeText={(text) => {
try {
let neb = parseInt(text)
this.setState({montant: neb, isDisabled: isNaN(neb)})
} catch (e) {
}
}}
style={input.selfitem}
labelStyle={input.label}
autoCapitalize={'none'}
autoCorrect={false}
/>
)};
}
renderSingleNetwork(item) {
const itm = item.item;
console.log(item);
let refInp = null,
refBtn = null;
let montant = 0;
return (
{I18n.t('ASK_CREDIT')}
{I18n.t('FOR_NUMB')} {itm.phone} ({itm.name})
{
refInp = ref;
this.setState({refIn: refInp});
}}
inputStyle={input.style}
value={this.state.montant}
keyboardType={'numeric'}
onChangeText={text => {
if (text.length > 0) {
try {
montant = parseFloat(text);
this.setStat({montant: montant});
if (refBtn) {
refBtn.setState({isDisabled: montant > 0});
refBtn.isDisabled = montant > 0;
}
} catch (e) {}
}
}}
style={input.selfitem}
labelStyle={input.label}
autoCapitalize={'none'}
autoCorrect={false}
/>
);
}
onNetworkSend(phone, code_membre, text) {
var validMontant = true;
let montant = parseFloat(text);
if (montant === null || !isNumber(montant) || montant > 1000000) {
validMontant = false;
}
this.setState({visibleError: !validMontant});
if (!validMontant) {
this.montantView.shake(800);
setTimeout(() => {
this.setState({visibleError: false});
}, 3000);
} else {
this.setState({isSending: true});
sendDemandeSpecificque(montant, phone, code_membre).then(data => {
this.setState({isSending: false});
var title = '';
var message = '';
console.warn(data);
if (data.success !== undefined) {
if (data.success === 1) {
title = I18n.t('DEMAND_SEND');
message = I18n.t('DEMAND_SEND_SUCCESFUL');
} else {
title = "Erreur survenu lors de l'envoie ";
message = "Une erreur est survenu lors de l'envoie de la demande";
}
} else {
title = "Erreur survenu lors de l'envoie ";
message = "Une erreur est survenu lors de l'envoie de la demande";
}
Alert.alert(title, message, [
{
text: 'Ok',
onPress: () => {
this.setState({montant: ''});
},
},
]);
});
}
}
async updateState() {
let user = await readUser();
if (user.category === 'geolocated') {
let networks = await getAgentNetworksList(user.agentId);
console.log(networks);
if (networks.success === 1) {
let net = [this.state.currentNetwork];
networks.networks.forEach(item => {
net.push(item);
});
this.setState({networks: net});
}
}
this.setState({user: user});
}
}
const input = StyleSheet.create({
selfitem: {
width: responsiveWidth(70),
alignSelf: 'center',
marginBottom: 20,
},
label: {
color: primary,
},
style: {
color: 'black',
},
});
const styles = StyleSheet.create({
title: {
backgroundColor: primary,
color: 'white',
paddingLeft: 20,
paddingTop: 10,
fontWeight: 'bold',
fontSize: responsiveFontSize(3),
height: responsiveHeight(10),
},
subtitle: {
color: 'black',
paddingLeft: 20,
paddingTop: 10,
marginBottom: responsiveHeight(3),
fontWeight: 'bold',
fontSize: responsiveFontSize(2),
},
container: {
flex: 1,
backgroundColor: '#EEE',
justifyContent: 'space-between',
},
container2: {
flex: 1,
height: responsiveHeight(20),
backgroundColor: '#EEE',
},
btnContainer: {
flexDirection: 'row',
paddingRight: 5,
paddingLeft: 5,
paddingTop: 5,
marginBottom: -2.5,
},
button_1: {
flex: 1,
borderColor: 'transparent',
},
button_2: {
flex: 1,
borderColor: 'transparent',
backgroundColor: primary,
borderRadius: 0,
},
button_1_text: {
color: primary,
fontWeight: 'bold',
},
button_2_text: {
color: 'white',
fontWeight: 'bold',
},
cardInput: {
marginLeft: 10,
marginRight: 10,
marginTop: responsiveHeight(5),
width: responsiveWidth(98),
alignSelf: 'center',
justifyContent: 'space-between',
height: responsiveHeight(40),
},
cardInput2: {
marginLeft: 10,
marginRight: 10,
marginTop: responsiveHeight(1),
width: responsiveWidth(98),
height: responsiveHeight(50),
alignSelf: 'center',
justifyContent: 'space-between',
},
});