import React, { Component } from 'react' import { StyleSheet, View, Text, Alert, Platform, ProgressBarAndroid } from 'react-native' import CardView from 'react-native-cardview' import Button from 'apsl-react-native-button' import { responsiveHeight, responsiveWidth } from 'react-native-responsive-dimensions' import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; import { updateCreditDemand } from "../../webservice/HistoryRequestApi"; import { readUser } from "../../webservice/AuthApi"; let typesta = 0 let moment = require('moment-timezone') var colorback = 'white' import I18n from "react-native-i18n"; import { treatCreditDemand, creditDemandResetReducer } from '../../webservice/CreditTreatDemandApi'; import { treatCancelDemand, creditCancelResetReducer } from '../../webservice/CreditCancelDemandeApi'; import { getAgentNetworksList } from "../../webservice/NetworkApi"; import { Header } from "react-native-elements"; let theme = require('./../../utils/theme.json'); import { connect } from 'react-redux'; import { bindActionCreators } from 'redux'; import Toast from 'react-native-root-toast'; import { Color } from '../../config/Color' const route = require("./../../route.json"); import Dialog from "react-native-dialog"; import { FontWeight } from '../../config/typography' import DeviceInfo from 'react-native-device-info' import { getNanoCreditUniqueDemandsAction, getNanoCreditUniqueDemandsReset } from '../../webservice/user/NanoCreditApi' import { treatDemandGroupAction, treatDemandGroupReset } from '../../webservice/NanoCreditApi' class DemandGroupNanoCreditDetail extends Component { static navigatorStyle = { navBarBackgroundColor: theme.accentLight, statusBarColor: theme.accent, navBarTextColor: '#FFFFFF', navBarButtonColor: '#FFFFFF', }; static navigationOptions = ({ navigation }) => { return { drawerLabel: () => null, title: I18n.t('GROUP') + ' N°' + navigation.getParam("id", "-") } }; constructor(props) { super(props); /* this.item = this.props.navigation.getParam("item", null); let sta = '' if (this.item.status === '1') { typesta = 1 colorback = '#AEAEAE' sta = I18n.t('TREAT_DEMAND') } else if (this.item.status === '0') { colorback = 'green' typesta = 2 sta = I18n.t('ACCEPTER_DEMANDE') } else { colorback = '#AEAEAE' typesta = 2 sta = I18n.t('REFUSED') } */ this.state = { displayAmountModifyDialog: false, /* statut: sta, */ user: null, networks: [], loadingTreat: false, loadingCancel: false, triggerTreatmentClick: false, triggerCancelClick: false, color: colorback, montant: null, isBtnModifyAmountEnabled: false, id: this.props.navigation.getParam("id", null) } this.currentLocale = DeviceInfo.getDeviceLocale().includes("fr") ? "fr" : "en-gb"; moment.locale(this.currentLocale); this.props.getNanoCreditUniqueDemandsReset(); this.props.getNanoCreditUniqueDemandsAction(this.state.id); } componentDidMount() { readUser().then((user) => { if (user) { if (user !== undefined) { this.setState({ user }); } } }); } displayToast = (message) => { Toast.show(message, { duration: Toast.durations.SHORT, position: Toast.positions.BOTTOM, backgroundColor: Color.primaryColor, shadow: true, animation: true, hideOnPress: true, delay: 0, onShow: () => { // calls on toast\`s appear animation start }, onShown: () => { // calls on toast\`s appear animation end. }, onHide: () => { // calls on toast\`s hide animation start. }, onHidden: () => { // calls on toast\`s hide animation end. } }); } onTreatDemand() { this.props.treatDemandGroupReset(); this.props.treatDemandGroupAction({ id_demande: this.props.resultGetUniqueDemand.response.id, id_user: this.state.user.id, type: "creation" }); } onCancelDemand = () => { this.props.treatDemandGroupReset(); this.props.treatDemandGroupAction({ id_demande: this.props.resultGetUniqueDemand.response.id, id_user: this.state.user.id, type: "suppression" }); } renderAlertErrorTreatOrCancelDemand = () => { const { errorTreatDemand, resultTreatDemand, resultCancelDemand, errorCancelDemand } = this.props; if (errorTreatDemand !== null) { if (typeof errorTreatDemand.data !== 'undefined') { if (errorTreatDemand.status === 426) { Alert.alert( I18n.t("ERROR_TREATMENT_DEMAND"), errorTreatDemand.data.error, [{ text: I18n.t('CANCEL_LABEL'), onPress: () => { }, style: 'cancel' }, { text: I18n.t("OK"), onPress: () => { setTimeout(() => { this.setState({ displayAmountModifyDialog: true }); }, 10); this.props.creditDemandResetReducer(); this.props.creditCancelResetReducer(); } }], { cancelable: false } ); } else { Alert.alert( I18n.t("ERROR_TREATMENT_DEMAND"), errorTreatDemand.data.error, [ { text: I18n.t("OK"), onPress: () => { this.props.creditDemandResetReducer(); this.props.creditCancelResetReducer(); } } ], { cancelable: false } ); } } } if (errorCancelDemand !== null) { if (typeof errorCancelDemand.data !== 'undefined') { Alert.alert( I18n.t("ERROR_TREATMENT_DEMAND"), errorCancelDemand.data.error, [ { text: I18n.t("OK"), onPress: () => { this.props.creditCancelResetReducer(); this.props.creditDemandResetReducer(); } } ], { cancelable: false } ) } } if (resultTreatDemand !== null) { console.log("resultTreatDemand", resultTreatDemand); if (resultTreatDemand.status === 200) { this.displayToast(resultTreatDemand.response); this.props.navigation.goBack(); this.props.navigation.state.params.onGoBack(); this.props.creditCancelResetReducer(); this.props.creditDemandResetReducer(); } } if (resultCancelDemand !== null) { console.log("resultCancelDemand", resultCancelDemand); if (resultCancelDemand.status === 200) { this.displayToast(resultCancelDemand.response); this.props.navigation.goBack(); this.props.navigation.state.params.onGoBack(); this.props.creditCancelResetReducer(); this.props.creditDemandResetReducer(); } } } renderLabelState = (state) => { if (state === 0) return I18n.t('NO_TREAT') else if (statut === 1) return I18n.t('TREAT') else return I18n.t('REFUSED') } renderBtn() { const { resultGetUniqueDemand } = this.props if (resultGetUniqueDemand.response.statut === 1) { return ( ) } else if (resultGetUniqueDemand.response.statut === 2) { return ( ) } else { return ( ) } } renderLoader = () => { return ( {Platform.OS === 'android' ? ( <> {I18n.t('LOADING_DOTS')} ) : <> {I18n.t('LOADING_DOTS')} } ) } renderDetail = () => { const resultGetUniqueDemand = this.props.resultGetUniqueDemand; console.log("resultGetUniqueDemand", resultGetUniqueDemand); return ( {I18n.t('DEMAND_INFO')} {`${I18n.t('CREATOR')} ${resultGetUniqueDemand.response.createur}`} {`${I18n.t('COUNTRY')} ${resultGetUniqueDemand.response.country}`} {/* {I18n.t('DEMAND_INFO')} {this.item.code_parrain} {this.item.reseau} {this.item.montant} {ago.format(" Do MMMM YYYY à HH:mm")} {ago.fromNow()} */} {this.renderBtn()} ); } render() { console.log("DEMAND GROUP PROPS", this.props); //let ago = moment.tz(this.item.date_creation, 'Etc/GMT+0').format(); //ago = moment(ago) return ( <> {(this.state.triggerTreatmentClick || this.state.triggerCancelClick) && this.renderAlertErrorTreatOrCancelDemand()} { this.props.loadingGetUniqueDemand ? this.renderLoader() : this.renderDetail() } ); } } const mapStateToProps = state => ({ loadingGetUniqueDemand: state.getUniqueDemandsGroupReducer.loading, resultGetUniqueDemand: state.getUniqueDemandsGroupReducer.result, errorGetUniqueDemand: state.getUniqueDemandsGroupReducer.error, loadingTreatDemand: state.treatDemandGroupReducer.loading, resultTreatDemand: state.treatDemandGroupReducer.result, errorTreatDemand: state.treatDemandGroupReducer.error, }); const mapDispatchToProps = dispatch => bindActionCreators({ getNanoCreditUniqueDemandsAction: getNanoCreditUniqueDemandsAction, getNanoCreditUniqueDemandsReset: getNanoCreditUniqueDemandsReset, treatDemandGroupAction: treatDemandGroupAction, treatDemandGroupReset: treatDemandGroupReset, treatCreditDemand: treatCreditDemand, creditDemandResetReducer: creditDemandResetReducer, treatCancelDemand: treatCancelDemand, creditCancelResetReducer: creditCancelResetReducer }, dispatch); export default connect(mapStateToProps, mapDispatchToProps)(DemandGroupNanoCreditDetail); const styles = StyleSheet.create({ container: { flex: 1, }, btnstyle: { }, inputAmountText: { ...Platform.select({ android: { borderBottomColor: Color.borderColor, borderBottomWidth: 0.5, } }) }, simpleuser: { marginLeft: responsiveWidth(2), fontSize: 16, color: '#3E3E3E' }, textbtnstyle: { color: "white", fontWeight: "bold", fontSize: 18 }, cardcontainer1: { justifyContent: 'space-evenly', flex: 2, marginRight: 3, marginLeft: 3, }, cardcontainer: { justifyContent: 'space-evenly', flex: 3, margin: 3, } })