import React, { Component } from 'react' import { StyleSheet, View, Text, Alert, Platform, ScrollView, 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, cancelDemandGroupAction } from '../../webservice/NanoCreditApi' import { IlinkEmitter } from '../../utils/events'; 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 = I18n.locale.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.LONG, 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 }); } onCancelDemand = () => { this.props.treatDemandGroupReset(); this.props.cancelDemandGroupAction({ id_demande: this.props.resultGetUniqueDemand.response.id, id_user: this.state.user.id }); } renderAlertErrorTreatOrCancelDemand = () => { const { errorTreatDemand, resultTreatDemand, resultCancelDemand, errorCancelDemand } = this.props; if (errorTreatDemand !== null) { if (typeof errorTreatDemand.data !== 'undefined') { Alert.alert( I18n.t("ERROR_TREATMENT_DEMAND"), errorTreatDemand.data.error, [ { text: I18n.t("OK"), onPress: () => { this.props.treatDemandGroupReset(); } } ], { cancelable: false } ); } } if (resultTreatDemand !== null) { console.log("resultTreatDemand", resultTreatDemand); if (resultTreatDemand.status === 200) { this.displayToast(resultTreatDemand.response); this.props.navigation.goBack(); //IlinkEmitter.emit('treatNanoGroupDemand'); this.props.treatDemandGroupReset(); } } } renderLabelState = (state) => { if (state === 0) return I18n.t('NO_TREAT') else if (state === 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')} } ) } getDemandTypeIcon = (type) => { switch (type) { case 'creation': return 'account-multiple-plus'; case 'suppression': return 'account-multiple-minus'; case 'adhesion': return 'account-multiple-check' case 'nano_credit': return 'cash' default: return 'account-multiple' } } renderDetail = () => { const { resultGetUniqueDemand } = this.props; let ago = moment.tz(resultGetUniqueDemand.response.date_creation_groupe, moment.tz.guess()).format(); let dateDemand = moment.tz(resultGetUniqueDemand.response.date_creation_demande, moment.tz.guess()).format(); ago = moment(ago); dateDemand = moment(dateDemand); return ( {resultGetUniqueDemand.response.nom} {`${I18n.t('TYPE_DEMAND')}: ${resultGetUniqueDemand.response.type}`} {`${I18n.t('CREATOR')}: ${resultGetUniqueDemand.response.createur}`} {`${I18n.t('COUNTRY')}: ${resultGetUniqueDemand.response.country}`} {`SPONSOR 1: ${resultGetUniqueDemand.response.sponsor1}`} {`SPONSOR 2: ${resultGetUniqueDemand.response.sponsor2}`} {`SPONSOR 3: ${resultGetUniqueDemand.response.sponsor3}`} {/* {I18n.t('DEMAND_INFO')} {this.item.code_parrain} */} {resultGetUniqueDemand.response.code_groupe} {`${I18n.t('LIMITE_GROUP')}: ${resultGetUniqueDemand.response.limite_credit} ${resultGetUniqueDemand.response.currency_code}`} {`${I18n.t('CREATION_DATE')}: ${ago.format(" Do MMMM YYYY à HH:mm")}`} {dateDemand.fromNow()} {this.renderBtn()} ); } render() { console.log("DEMAND GROUP PROPS", this.props); return ( <> {(this.state.triggerTreatmentClick || this.state.triggerCancelClick) && this.renderAlertErrorTreatOrCancelDemand()} { this.props.loadingGetUniqueDemand ? this.renderLoader() : this.props.resultGetUniqueDemand != null ? this.renderDetail() : null } ); } } 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, cancelDemandGroupAction: cancelDemandGroupAction, 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, } })