correction des bugs paiement facture

This commit is contained in:
Brice 2020-11-27 10:28:47 +01:00
parent 3f614d5a38
commit 2ecdc04ada
20 changed files with 1078 additions and 726 deletions

File diff suppressed because one or more lines are too long

View File

@ -40,6 +40,8 @@
"ENTER_VALID_AMOUNT": "Enter a valid amount", "ENTER_VALID_AMOUNT": "Enter a valid amount",
"ENTER_AMOUNT_SUPERIOR_ZEROR": "Enter amount superior to zero", "ENTER_AMOUNT_SUPERIOR_ZEROR": "Enter amount superior to zero",
"AMOUNT_SUPERIOR_TO_PRINCIPAL_ACCOUNT": "Amount greater than that of the agent's main account", "AMOUNT_SUPERIOR_TO_PRINCIPAL_ACCOUNT": "Amount greater than that of the agent's main account",
"PAYMENT_DONE": "Payment done",
"PAYMENT_ERROR": "Payment error",
"MAKE_DEPOSIT": "Make a deposit", "MAKE_DEPOSIT": "Make a deposit",
"MAKE_WITHDRAWAL": "Make withdrawal", "MAKE_WITHDRAWAL": "Make withdrawal",
"WITHDRAWAL_TYPE": "Withdrawal mode", "WITHDRAWAL_TYPE": "Withdrawal mode",
@ -196,6 +198,9 @@
"PAIEMENT_FACTURE": "Bill payment", "PAIEMENT_FACTURE": "Bill payment",
"NUMERO_ABONNE": "Subscriber number", "NUMERO_ABONNE": "Subscriber number",
"IDENTIFIANT_ETUDIANT": "Student ID", "IDENTIFIANT_ETUDIANT": "Student ID",
"ENTER_VALID_IDENTIFIANT_ETUDIANT": "Enter a valid student ID",
"ENTER_VALID_NUMERO_ABONNE": "Enter a valid subscriber number",
"ENTER_VALID_PHONE_NUMBER": "Enter a valid phone number",
"DEMAND_SEND": "Demand send", "DEMAND_SEND": "Demand send",
"EPARGNE_DEPOSE": "Savings deposited", "EPARGNE_DEPOSE": "Savings deposited",
"BREAK_EPARGNE": "Break my saving", "BREAK_EPARGNE": "Break my saving",
@ -356,6 +361,7 @@
"PASSWORD": "Password", "PASSWORD": "Password",
"CONFIRM_PASSWORD": "Confirm the password", "CONFIRM_PASSWORD": "Confirm the password",
"PLEASE_ENTER_THE_PASSWORD": "Please enter the password", "PLEASE_ENTER_THE_PASSWORD": "Please enter the password",
"PLEASE_ENTER_CORRECT_PASSWORD": "Please enter correct password",
"PASSWORD_MODIFY": "Change your password", "PASSWORD_MODIFY": "Change your password",
"OLD_PASSWORD": "Old password", "OLD_PASSWORD": "Old password",
"NEW_PASSWORD": "New password", "NEW_PASSWORD": "New password",

View File

@ -61,6 +61,8 @@
"MAKE_DEPOSIT": "Effectuer un dépôt", "MAKE_DEPOSIT": "Effectuer un dépôt",
"MAKE_WITHDRAWAL": "Effectuer un retrait", "MAKE_WITHDRAWAL": "Effectuer un retrait",
"WITHDRAWAL_TYPE": "Mode de paiement", "WITHDRAWAL_TYPE": "Mode de paiement",
"PAYMENT_DONE": "Paiement effectué",
"PAYMENT_ERROR": "Erreur de paiement",
"CHOOSE_SOURCE": "Choisir la source", "CHOOSE_SOURCE": "Choisir la source",
"CHANGE_SOURCE_CARD": "Changer le type du numéro de saisie", "CHANGE_SOURCE_CARD": "Changer le type du numéro de saisie",
"CREDIT_CARD": "Carte de crédit", "CREDIT_CARD": "Carte de crédit",
@ -95,13 +97,13 @@
"TRANSFER_IN_ACCOUNT": "Transfert dans le compte", "TRANSFER_IN_ACCOUNT": "Transfert dans le compte",
"WITHDRAWAL_IN_CASH": "Retrait en cash", "WITHDRAWAL_IN_CASH": "Retrait en cash",
"WITHDRAWAL_IN_CASH_DESCRIPTION": "Retrait d'argent en cash", "WITHDRAWAL_IN_CASH_DESCRIPTION": "Retrait d'argent en cash",
"WITHDRAWAL_WALLET_TO_CASH": "Retrait de votre wallet vers cash", "WITHDRAWAL_WALLET_TO_CASH": "Wallet vers cash",
"WITHDRAWAL_WALLET_TO_CASH_DESCRIPTION": "Retirer de l'argent de votre Wallet vers cash", "WITHDRAWAL_WALLET_TO_CASH_DESCRIPTION": "Retirer de l'argent de votre Wallet vers cash",
"WITHDRAWAL_CARD_TO_WALLET": "Retrait de votre carte vers wallet", "WITHDRAWAL_CARD_TO_WALLET": "Carte vers wallet",
"WITHDRAWAL_BANK_TO_WALLET": "Retrait de votre banque vers wallet", "WITHDRAWAL_BANK_TO_WALLET": "Banque vers wallet",
"WITHDRAWAL_BANK_TO_CASH": "Retrait de votre banque vers cash", "WITHDRAWAL_BANK_TO_CASH": "Banque vers cash",
"WITHDRAWAL_CARD_TO_WALLET_DESCRIPTION": "Retrait d'argent de votre carte vers wallet", "WITHDRAWAL_CARD_TO_WALLET_DESCRIPTION": "Retrait d'argent de votre carte vers wallet",
"WITHDRAWAL_CARD_TO_CASH": "Retrait de votre carte vers cash", "WITHDRAWAL_CARD_TO_CASH": "Carte vers cash",
"WITHDRAWAL_CARD_TO_CASH_AGENT": "Retrait carte vers cash", "WITHDRAWAL_CARD_TO_CASH_AGENT": "Retrait carte vers cash",
"WITHDRAWAL_CARD_TO_CASH_DESCRIPTION": "Retrait de l'argent de votre carte vers cash", "WITHDRAWAL_CARD_TO_CASH_DESCRIPTION": "Retrait de l'argent de votre carte vers cash",
"WITHDRAWAL_CARD_TO_CASH_DESCRIPTION_AGENT": "Retrait de l'argent de carte vers cash", "WITHDRAWAL_CARD_TO_CASH_DESCRIPTION_AGENT": "Retrait de l'argent de carte vers cash",
@ -112,13 +114,13 @@
"DEPOSIT_CASH_TO_VISA": "Cash vers carte visa", "DEPOSIT_CASH_TO_VISA": "Cash vers carte visa",
"DEPOSIT_CASH_TO_VISA_DESCRIPTION": "Envoie d'argent de Cash vers carte visa", "DEPOSIT_CASH_TO_VISA_DESCRIPTION": "Envoie d'argent de Cash vers carte visa",
"DEPOSIT_CASH_TO_BANK": "Cash vers banque", "DEPOSIT_CASH_TO_BANK": "Cash vers banque",
"DEPOSIT_WALLET_TO_WALLET": "Votre Wallet vers wallet", "DEPOSIT_WALLET_TO_WALLET": "Wallet vers wallet",
"ENVOIE_WALLET_TO_WALLET": "Envoie Wallet vers wallet", "ENVOIE_WALLET_TO_WALLET": "Envoie Wallet vers wallet",
"DEPOSIT_WALLET_TO_CASH": "Votre Wallet vers cash", "DEPOSIT_WALLET_TO_CASH": "Wallet vers cash",
"ENVOIE_WALLET_TO_CASH": "Envoie Wallet vers cash", "ENVOIE_WALLET_TO_CASH": "Wallet vers cash",
"DEPOSIT_WALLET_TO_CARD": "Votre Wallet vers carte", "DEPOSIT_WALLET_TO_CARD": "Wallet vers carte",
"ENVOIE_WALLET_TO_CARD": "Envoie Wallet vers carte", "ENVOIE_WALLET_TO_CARD": "Envoie Wallet vers carte",
"DEPOSIT_WALLET_TO_BANK": "Votre Wallet vers banque", "DEPOSIT_WALLET_TO_BANK": "Wallet vers banque",
"ENVOIE_WALLET_TO_BANK": "Envoie Wallet vers banque", "ENVOIE_WALLET_TO_BANK": "Envoie Wallet vers banque",
"DEPOSIT_CASH_TO_CASH": "Cash vers cash", "DEPOSIT_CASH_TO_CASH": "Cash vers cash",
"ENVOIE_CASH_TO_CASH": "Envoie d'argent en cash vers cash", "ENVOIE_CASH_TO_CASH": "Envoie d'argent en cash vers cash",
@ -161,9 +163,9 @@
"TYPE_IDENTIFIANT": "Type d'identifiant", "TYPE_IDENTIFIANT": "Type d'identifiant",
"PAYS_DESTINATION": "Pays destination", "PAYS_DESTINATION": "Pays destination",
"ACTIVE_WALLET": "Réseau payeur", "ACTIVE_WALLET": "Réseau payeur",
"DEPOSIT_TO_CASH": "Votre Wallet vers cash", "DEPOSIT_TO_CASH": "Wallet vers cash",
"DEPOSIT_TO_CARD": "Votre Wallet vers carte", "DEPOSIT_TO_CARD": "Wallet vers carte",
"DEPOSIT_TO_BANK": "Votre Wallet vers banque", "DEPOSIT_TO_BANK": "Wallet vers banque",
"NANO_CREDIT": "Nano crédit", "NANO_CREDIT": "Nano crédit",
"NANO_CREDIT_LIST": "Liste des nano crédit", "NANO_CREDIT_LIST": "Liste des nano crédit",
"SAVINGS_LIST": "Liste des épargnes", "SAVINGS_LIST": "Liste des épargnes",
@ -182,11 +184,11 @@
"CAUTIONNEMENT_DONE": "Cautionnement effectué", "CAUTIONNEMENT_DONE": "Cautionnement effectué",
"ID_DEMAND": "Identifiant de la demande", "ID_DEMAND": "Identifiant de la demande",
"ID_SAVINGS": "Identifiant de l'épargne", "ID_SAVINGS": "Identifiant de l'épargne",
"PAIEMENT_EAU": "Paiement eau", "PAIEMENT_EAU": "Eau",
"PAIEMENT_ELECTRICITY": "Paiement électricité", "PAIEMENT_ELECTRICITY": "Electricité",
"PAIEMENT_ECOLE": "Paiement école", "PAIEMENT_ECOLE": "Ecole",
"PAIEMENT_CREDIT_TELEPHONIQUE": "Paiement crédit téléphonique", "PAIEMENT_CREDIT_TELEPHONIQUE": "Crédit téléphonique",
"PAIEMENT_ABONNEMENT_TV": "Paiement abonnement TV", "PAIEMENT_ABONNEMENT_TV": "Abonnement TV",
"NON_APPLICABLE": "Non applicable", "NON_APPLICABLE": "Non applicable",
"DATE": "Date", "DATE": "Date",
"DEMAND_DATE": "Date de la demande", "DEMAND_DATE": "Date de la demande",
@ -203,6 +205,9 @@
"PAIEMENT_FACTURE": "Paiement de facture", "PAIEMENT_FACTURE": "Paiement de facture",
"NUMERO_ABONNE": "Numéro d'abonnée", "NUMERO_ABONNE": "Numéro d'abonnée",
"IDENTIFIANT_ETUDIANT": "Identifiant étudiant", "IDENTIFIANT_ETUDIANT": "Identifiant étudiant",
"ENTER_VALID_IDENTIFIANT_ETUDIANT": "Entrer un identifiant étudiant valide",
"ENTER_VALID_NUMERO_ABONNE": "Entrer un numéro d'abonné valide",
"ENTER_VALID_PHONE_NUMBER": "Entrer un numéro de téléphone valide",
"WITHDRAWAL_DESCRIPTION": "Effectuer un retrait", "WITHDRAWAL_DESCRIPTION": "Effectuer un retrait",
"COMMISSION_ACCOUNT_TITLE": "Cpt. commission", "COMMISSION_ACCOUNT_TITLE": "Cpt. commission",
"CONFIRM": "Confirmer", "CONFIRM": "Confirmer",
@ -367,6 +372,7 @@
"NEW_PASSWORD": "Nouveau mot de passe", "NEW_PASSWORD": "Nouveau mot de passe",
"CONFIRM_NEW_PASSWORD": "Confirmerz le nouveau mot de passe", "CONFIRM_NEW_PASSWORD": "Confirmerz le nouveau mot de passe",
"PLEASE_ENTER_THE_PASSWORD": "Veuillez renseigner le mot de passe", "PLEASE_ENTER_THE_PASSWORD": "Veuillez renseigner le mot de passe",
"PLEASE_ENTER_CORRECT_PASSWORD": "Veuillez renseigner un mot de passe correct",
"MODIFY_AMOUNT": " Modifier le montant", "MODIFY_AMOUNT": " Modifier le montant",
"ENTER_NEW_AMOUNT_TO_SEND": " Entrer le nouveau montant à envoyer", "ENTER_NEW_AMOUNT_TO_SEND": " Entrer le nouveau montant à envoyer",
"AMOUNT": "Montant", "AMOUNT": "Montant",

View File

@ -7,6 +7,10 @@ import {
LINK_CARD_PENDING, LINK_CARD_PENDING,
LINK_CARD_RESET, LINK_CARD_RESET,
LINK_CARD_SUCCESS, LINK_CARD_SUCCESS,
PAY_BILL_ERROR,
PAY_BILL_PENDING,
PAY_BILL_RESET,
PAY_BILL_SUCCESS,
WALLET_GET_COMMISSION_ERROR, WALLET_GET_COMMISSION_ERROR,
WALLET_GET_COMMISSION_PENDING, WALLET_GET_COMMISSION_PENDING,
WALLET_GET_COMMISSION_RESET, WALLET_GET_COMMISSION_RESET,
@ -211,3 +215,24 @@ export const fetchGetListOperatorError = (error) => ({
type: GET_OPERATOR_LIST_ERROR, type: GET_OPERATOR_LIST_ERROR,
result: error result: error
}); });
/**
* ---------------------------------------------------
*/
export const fetchPayBillPending = () => ({
type: PAY_BILL_PENDING
});
export const fetchPayBillReset = () => ({
type: PAY_BILL_RESET
});
export const fetchPayBillSuccess = (res) => ({
type: PAY_BILL_SUCCESS,
result: res,
});
export const fetchPayBillError = (error) => ({
type: PAY_BILL_ERROR,
result: error
});

View File

@ -0,0 +1,37 @@
import {PAY_BILL_ERROR, PAY_BILL_PENDING, PAY_BILL_RESET, PAY_BILL_SUCCESS} from "../types/WalletType";
const initialState = {
loading: false,
result: null,
error: null
};
export default (state = initialState, action) => {
switch (action.type) {
case PAY_BILL_PENDING:
return {
...state,
loading: true
}
case PAY_BILL_SUCCESS:
return {
...state,
loading: false,
result: action.result.data,
error: null
}
case PAY_BILL_ERROR:
return {
...state,
loading: false,
result: null,
error: action.result
}
case PAY_BILL_RESET:
return initialState;
default: {
return state;
}
}
};

View File

@ -47,6 +47,7 @@ import EnvoieUserWalletToBank from "./EnvoieUserWalletToBankReducer";
import GetEpargneInProgressReducer from "./GetEpargneInProgressReducer"; import GetEpargneInProgressReducer from "./GetEpargneInProgressReducer";
import GetNanoCreditUserHistoryInProgressReducer from "./GetNanoCreditUserHistoryInProgressReducer"; import GetNanoCreditUserHistoryInProgressReducer from "./GetNanoCreditUserHistoryInProgressReducer";
import GetListOperatorReducer from "./GetListOperatorReducer"; import GetListOperatorReducer from "./GetListOperatorReducer";
import PayBillReducer from "./PayBillReducer";
const persistConfig = { const persistConfig = {
key: 'root', key: 'root',
@ -102,7 +103,8 @@ const rootReducer = persistCombineReducers(persistConfig, {
envoieUserWalletToBank: EnvoieUserWalletToBank, envoieUserWalletToBank: EnvoieUserWalletToBank,
getEpargneInProgressReducer: GetEpargneInProgressReducer, getEpargneInProgressReducer: GetEpargneInProgressReducer,
getNanoCreditUserHistoryInProgressReducer: GetNanoCreditUserHistoryInProgressReducer, getNanoCreditUserHistoryInProgressReducer: GetNanoCreditUserHistoryInProgressReducer,
getListOperatorReducer: GetListOperatorReducer getListOperatorReducer: GetListOperatorReducer,
payBillReducer: PayBillReducer,
}); });
export default rootReducer; export default rootReducer;

View File

@ -42,3 +42,8 @@ export const GET_OPERATOR_LIST_PENDING = 'GET_OPERATOR_LIST_PENDING';
export const GET_OPERATOR_LIST_SUCCESS = 'GET_OPERATOR_LIST_SUCCESS'; export const GET_OPERATOR_LIST_SUCCESS = 'GET_OPERATOR_LIST_SUCCESS';
export const GET_OPERATOR_LIST_ERROR = 'GET_OPERATOR_LIST_ERROR'; export const GET_OPERATOR_LIST_ERROR = 'GET_OPERATOR_LIST_ERROR';
export const GET_OPERATOR_LIST_RESET = 'GET_OPERATOR_LIST_RESET'; export const GET_OPERATOR_LIST_RESET = 'GET_OPERATOR_LIST_RESET';
export const PAY_BILL_PENDING = 'PAY_BILL_PENDING';
export const PAY_BILL_SUCCESS = 'PAY_BILL_SUCCESS';
export const PAY_BILL_ERROR = 'PAY_BILL_ERROR';
export const PAY_BILL_RESET = 'PAY_BILL_RESET';

View File

@ -176,8 +176,6 @@ class Home extends BaseScreen {
AsyncStorage.getAllKeys((err, keys) => { AsyncStorage.getAllKeys((err, keys) => {
AsyncStorage.multiGet(keys, (err, stores) => { AsyncStorage.multiGet(keys, (err, stores) => {
stores.map(async (result, i, store) => { stores.map(async (result, i, store) => {
console.warn("KEY MAP", store);
console.log("KEY SAVE " + store[i][0]);
let key = store[i][0]; let key = store[i][0];
if (i === 0) { if (i === 0) {
if (!_.isEqual(key, '@config:onesignalIds')) { if (!_.isEqual(key, '@config:onesignalIds')) {
@ -1655,7 +1653,7 @@ class Home extends BaseScreen {
translucent={true} translucent={true}
/> />
{/* Start here to comment */} {/* Start here to comment */}
{ {
(this.state.loadingDialog || this.props.loading) ? (this.state.loadingDialog || this.props.loading) ?
<View <View
style={{ style={{

View File

@ -23,7 +23,7 @@ import {IlinkEmitter} from '../../utils/events';
import {readUser} from '../../webservice/AuthApi'; import {readUser} from '../../webservice/AuthApi';
import {getEpargneInProgressAction, getEpargneInProgressReset} from '../../webservice/NanoCreditApi'; import {getEpargneInProgressAction, getEpargneInProgressReset} from '../../webservice/NanoCreditApi';
import {casserEpargneUserAction, casserEpargneUserReset} from '../../webservice/user/NanoCreditApi'; import {casserEpargneUserAction, casserEpargneUserReset} from '../../webservice/user/NanoCreditApi';
import {cutStringWithoutDot, nanoCreditHistoryLabel} from "../../utils/UtilsFunction"; import {cutString, cutStringWithoutDot, nanoCreditHistoryLabel} from "../../utils/UtilsFunction";
import * as Utils from "../../utils/DeviceUtils"; import * as Utils from "../../utils/DeviceUtils";
import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
import thousands from "thousands"; import thousands from "thousands";
@ -280,7 +280,7 @@ class CasserEpargneUser extends Component {
</View> </View>
<View style={{flex: 1, alignItems: 'flex-end'}}> <View style={{flex: 1, alignItems: 'flex-end'}}>
<Text <Text
style={[Typography.caption1, Color.grayColor]}>{ isEqual(this.state.historyItemDetail.type, 'SIMPLE') ? I18n.t('NON_APPLICABLE') : this.state.historyItemDetail.date_fin}</Text> style={[Typography.caption1, Color.grayColor]}>{isEqual(this.state.historyItemDetail.type, 'SIMPLE') ? I18n.t('NON_APPLICABLE') : this.state.historyItemDetail.date_fin}</Text>
</View> </View>
</View> </View>
<View style={{flexDirection: 'row', marginTop: 10}}> <View style={{flexDirection: 'row', marginTop: 10}}>
@ -375,7 +375,7 @@ class CasserEpargneUser extends Component {
<Text style={[Typography.overline, Color.grayColor], {marginTop: 4}}> <Text style={[Typography.overline, Color.grayColor], {marginTop: 4}}>
{ {
isEqual(element, 'montant') ? isEqual(element, 'montant') ?
` ${thousands(item[element], ' ')}` ` ${item[element].length > 8 ? cutString(thousands(item[element], ' '), 6) : thousands(item[element], ' ')} ${this.state.wallet.currency_code}`
: isEqual(element, 'date_creation') ? : isEqual(element, 'date_creation') ?
cutStringWithoutDot(item[element], 16) cutStringWithoutDot(item[element], 16)
: item[element] : item[element]

View File

@ -27,7 +27,12 @@ import {
getNanoCreditUserHistoryInProgressReset, getNanoCreditUserHistoryInProgressReset,
} from "../../webservice/NanoCreditApi"; } from "../../webservice/NanoCreditApi";
import {Typography} from "../../config/typography"; import {Typography} from "../../config/typography";
import {cutStringWithoutDot, displayTransactionType, nanoCreditHistoryLabel} from "../../utils/UtilsFunction"; import {
cutString,
cutStringWithoutDot,
displayTransactionType,
nanoCreditHistoryLabel
} from "../../utils/UtilsFunction";
import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
import thousands from "thousands"; import thousands from "thousands";
import * as Utils from "../../utils/DeviceUtils"; import * as Utils from "../../utils/DeviceUtils";
@ -406,7 +411,7 @@ class RefundNanoCreditUser extends Component {
<Text style={[Typography.overline, Color.grayColor], {marginTop: 4}}> <Text style={[Typography.overline, Color.grayColor], {marginTop: 4}}>
{ {
isEqual(element, 'montant') ? isEqual(element, 'montant') ?
` ${thousands(item[element], ' ')}` ` ${item[element].length > 8 ? cutString(thousands(item[element], ' '), 6) : thousands(item[element], ' ')} ${this.state.wallet.currency_code}`
: isEqual(element, 'date_creation') ? : isEqual(element, 'date_creation') ?
cutStringWithoutDot(item[element], 16) cutStringWithoutDot(item[element], 16)
: item[element] : item[element]

View File

@ -98,7 +98,9 @@ class OperateurOptionSelect extends Component {
this.props.navigation.push(this.state.options[0].screen, { this.props.navigation.push(this.state.options[0].screen, {
title: item.operator_name, title: item.operator_name,
type: this.state.options[0].type type: this.state.options[0].type,
operator_id: item.id_operator,
typeOperator: this.state.operatorType
}); });
} else { } else {
if (this.state.user.category === 'geolocated') if (this.state.user.category === 'geolocated')

View File

@ -1,5 +1,5 @@
import React, {Component} from 'react'; import React, {Component} from 'react';
import {StatusBar, StyleSheet, View} from 'react-native'; import {Alert, StatusBar, StyleSheet, Text, View} from 'react-native';
import I18n from 'react-native-i18n'; import I18n from 'react-native-i18n';
import {Appbar, Provider} from 'react-native-paper'; import {Appbar, Provider} from 'react-native-paper';
import Icon from 'react-native-vector-icons/MaterialCommunityIcons'; import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
@ -8,11 +8,16 @@ import {IlinkEmitter} from "../../utils/events";
import OutlineTextInput from '../../components/OutlineTextInput'; import OutlineTextInput from '../../components/OutlineTextInput';
import CustomButton from '../../components/CustomButton'; import CustomButton from '../../components/CustomButton';
import {ScrollView} from 'react-native-gesture-handler'; import {ScrollView} from 'react-native-gesture-handler';
import {connect} from "react-redux";
import {bindActionCreators} from "redux";
import {payBillAction, payBillReset} from "../../webservice/WalletApi";
import {store} from "../../redux/store";
import isEqual from 'lodash/isEqual';
const route = require('../../route.json'); const route = require('../../route.json');
let slugify = require('slugify'); let slugify = require('slugify');
export default class PaiementFacture extends Component { class PaiementFacture extends Component {
constructor(props) { constructor(props) {
super(props); super(props);
@ -20,9 +25,17 @@ export default class PaiementFacture extends Component {
this.state = { this.state = {
title: this.props.navigation.state.params.title, title: this.props.navigation.state.params.title,
type: this.props.navigation.state.params.type, type: this.props.navigation.state.params.type,
} id_operator: this.props.navigation.state.params.operator_id,
typeOperator: this.props.navigation.state.params.typeOperator,
billNumber: '',
subscriberID: null,
isSubmitClick: false,
montant: '',
password: '',
wallet: store.getState().walletDetailReducer.result.response
};
this.props.payBillReset();
console.log("Paiement facture props", this.props); console.log("Paiement facture props", this.props);
} }
updateLangue() { updateLangue() {
@ -45,31 +58,161 @@ export default class PaiementFacture extends Component {
/>) />)
}); });
isNormalInteger = (str) => {
if (/[ `!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?~]/.test(str))
return false;
else
return true;
}
isMontantValid = () => {
const {montant} = this.state;
if ((parseInt(isEqual(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
return {
errorMessage: '',
isValid: false
};
};
renderErrorNumberBill = () => {
const {type} = this.state;
switch (type) {
case 'PAIEMENT_ECOLE':
return I18n.t('ENTER_VALID_IDENTIFIANT_ETUDIANT');
case 'PAIEMENT_EAU':
return I18n.t('ENTER_VALID_NUMERO_ABONNE');
case 'PAIEMENT_EAU_ELECTRICITE':
return I18n.t('ENTER_VALID_NUMERO_ABONNE');
case 'PAIEMENT_CREDIT_TELEPHONE':
return I18n.t('ENTER_VALID_PHONE_NUMBER');
case 'PAIEMENT_ABONNEMENT_TV':
return I18n.t('ENTER_VALID_NUMERO_ABONNE');
default:
break;
}
};
isBillnumberValid = () => {
const {billNumber} = this.state;
if ((parseInt(isEqual(billNumber, 0)) || billNumber < 0))
return {
errorMessage: this.renderErrorNumberBill(),
isValid: false
};
else if (billNumber.length > 11) {
return {
errorMessage: this.renderErrorNumberBill(),
isValid: false
};
} else
return {
errorMessage: '',
isValid: false
};
};
renderLabel = () => { renderLabel = () => {
const {type} = this.state; const {type} = this.state;
switch (type) { switch (type) {
case 'PAIEMENT_ECOLE': case 'PAIEMENT_ECOLE':
return I18n.t('IDENTIFIANT_ETUDIANT') return I18n.t('IDENTIFIANT_ETUDIANT');
case 'PAIEMENT_EAU': case 'PAIEMENT_EAU':
return I18n.t('NUMERO_ABONNE') return I18n.t('NUMERO_ABONNE');
case 'PAIEMENT_EAU_ELECTRICITE': case 'PAIEMENT_EAU_ELECTRICITE':
return I18n.t('NUMERO_ABONNE') return I18n.t('NUMERO_ABONNE');
case 'PAIEMENT_CREDIT_TELEPHONE': case 'PAIEMENT_CREDIT_TELEPHONE':
return I18n.t('PHONE_NUMBER') return I18n.t('PHONE_NUMBER');
case 'PAIEMENT_ABONNEMENT_TV': case 'PAIEMENT_ABONNEMENT_TV':
return I18n.t('NUMERO_ABONNE') return I18n.t('NUMERO_ABONNE');
default: default:
break; break;
} }
};
renderPayBill = () => {
const {result, error} = this.props;
if (error !== null) {
Alert.alert(
I18n.t("PAYMENT_ERROR"),
error.data.error,
[
{
text: I18n.t("OK"), onPress: () => {
this.props.payBillReset();
}
}
],
{cancelable: false}
)
}
if (result !== null) {
if (result.response !== null) {
Alert.alert(
I18n.t("PAYMENT_DONE"),
result.response,
[
{
text: I18n.t("OK"), onPress: () => {
this.props.payBillReset();
IlinkEmitter.emit("refreshWallet");
this.props.navigation.pop();
}
}
],
{cancelable: false}
)
}
}
};
onPayBill = () => {
console.log("this.isBillnumberValid().isValid", this.isBillnumberValid().isValid);
console.log("this.isMontantValid().isValid", this.isMontantValid().isValid);
console.log("this.state.montant.length > 0", this.state.montant.length > 0);
console.log("this.state.password.length > 0", this.state.password.length > 0);
this.setState({isSubmitClick: true});
if (/*this.isBillnumberValid().isValid && this.isMontantValid().isValid &&*/ this.state.montant.length > 0 && this.state.password.length > 0) {
this.props.payBillAction({
type: 19,
id_wallet_user: this.state.wallet.id,
id_wallet_network: this.state.wallet.id_wallet_network,
no_facture: this.state.billNumber,
type_operator: this.state.typeOperator,
id_operator: this.state.id_operator,
montant: this.state.montant,
password: this.state.password
});
}
} }
render() { render() {
console.log("this.isBillnumberValid().isValid", this.isBillnumberValid().isValid);
console.log("this.isMontantValid().isValid", this.isMontantValid().isValid);
console.log("this.state.montant.length > 0", this.state.montant.length > 0);
console.log("this.state.password.length > 0", this.state.password.length > 0);
console.log("-------------------------------");
return ( return (
<Provider> <Provider>
<View style={{flex: 1}}> <View style={{flex: 1}}>
{this.state.isSubmitClick && this.renderPayBill()}
<StatusBar <StatusBar
backgroundColor={Color.primaryDarkColor} backgroundColor={Color.primaryDarkColor}
barStyle="light-content" barStyle="light-content"
@ -88,33 +231,86 @@ export default class PaiementFacture extends Component {
</Appbar.Header> </Appbar.Header>
<View style={styles.container}> <View style={styles.container}>
<ScrollView style={{padding: 20}}> <ScrollView style={{padding: 20}}>
<View style={{marginTop: 10, marginRight: 20, marginLeft: 20}}> <View style={{marginTop: 10, marginRight: 20, marginLeft: 20}}>
<OutlineTextInput <OutlineTextInput
borderBottomColor={'black'} borderBottomColor={!this.isBillnumberValid().isValid ? 'black' : 'red'}
keyboardType="numeric" value={this.state.billNumber}
label={this.renderLabel()} label={this.renderLabel()}
style={{marginTop: 10}} style={{marginTop: 10}}
placeholder={this.renderLabel()} placeholder={this.renderLabel()}
onChangeText={(billNumber) => {
this.setState({billNumber});
this.isBillnumberValid();
}}
/> />
{
(!this.isBillnumberValid().isValid) &&
<Text
style={{
color: 'red',
marginTop: 2
}}>{this.isBillnumberValid().errorMessage}</Text>
}
{
(this.state.isSubmitClick && this.state.billNumber.length === 0) &&
<Text
style={{color: 'red', marginTop: 2}}>{this.renderErrorNumberBill()}</Text>
}
</View> </View>
<View style={{marginTop: 10, marginRight: 20, marginLeft: 20, marginBottom: 10}}> <View style={{marginTop: 10, marginRight: 20, marginLeft: 20, marginBottom: 10}}>
<OutlineTextInput <OutlineTextInput
borderBottomColor={'black'} borderBottomColor={!this.isMontantValid().isValid ? 'black' : 'red'}
value={this.state.montant}
keyboardType="numeric" keyboardType="numeric"
label={I18n.t('AMOUNT')} label={I18n.t('AMOUNT_LABEL')}
style={{marginTop: 10}} style={{marginTop: 10}}
placeholder={I18n.t('AMOUNT_LABEL_DESCRIPTION')} placeholder={I18n.t('AMOUNT_LABEL_DESCRIPTION')}
onChangeText={(montant) => {
this.setState({montant});
this.isMontantValid();
}}
/> />
{
(!this.isMontantValid.isValid) &&
<Text
style={{color: 'red', marginTop: 2}}>{this.isMontantValid().errorMessage}</Text>
}
{
(this.state.isSubmitClick && this.state.montant.length === 0) &&
<Text
style={{color: 'red', marginTop: 2}}>{I18n.t('PLEASE_ENTER_THE_AMOUNT')}</Text>
}
</View>
<View style={{marginTop: 10, marginRight: 20, marginLeft: 20, marginBottom: 10}}>
<OutlineTextInput
borderBottomColor={(this.state.isSubmitClick && this.state.password.length === 0) ? 'red' : 'black'}
value={this.state.password}
secureTextEntry={true}
label={I18n.t('PASSWORD')}
style={{marginTop: 10}}
placeholder={I18n.t('PLEASE_ENTER_THE_PASSWORD')}
onChangeText={(password) => {
this.setState({password});
this.isMontantValid();
}}
/>
{
(this.state.isSubmitClick && this.state.password.length === 0) &&
<Text
style={{
color: 'red',
marginTop: 2
}}>{I18n.t('PLEASE_ENTER_CORRECT_PASSWORD')}</Text>
}
</View> </View>
<View style={{margin: 10}}> <View style={{margin: 10}}>
<CustomButton outline onPress={() => { <CustomButton loading={this.props.loading} outline onPress={() => this.onPayBill()}>
}}>
{I18n.t('VALIDATE')} {I18n.t('VALIDATE')}
</CustomButton> </CustomButton>
</View> </View>
@ -128,8 +324,21 @@ export default class PaiementFacture extends Component {
</Provider> </Provider>
); );
} }
} }
const mapStateToProps = state => ({
loading: state.payBillReducer.loading,
result: state.payBillReducer.result,
error: state.payBillReducer.error,
});
const mapDispatchToProps = dispatch => bindActionCreators({
payBillAction,
payBillReset,
}, dispatch);
export default connect(mapStateToProps, mapDispatchToProps)(PaiementFacture);
const styles = StyleSheet.create({ const styles = StyleSheet.create({
container: { container: {

View File

@ -735,7 +735,7 @@ class WalletDetail extends Component {
<Text style={[Typography.overline, Color.grayColor], {marginTop: 4}}> <Text style={[Typography.overline, Color.grayColor], {marginTop: 4}}>
{ {
isEqual(element, 'montant') ? isEqual(element, 'montant') ?
`${thousands(item[element], ' ')}` ` ${item[element].length > 8 ? cutString(thousands(item[element], ' '), 6) : thousands(item[element], ' ')} ${this.state.wallet.currency_code}`
: isEqual(element, 'destinataire') ? : isEqual(element, 'destinataire') ?
item[element].length > 13 ? cutString(item[element], 13) : item[element] item[element].length > 13 ? cutString(item[element], 13) : item[element]
: isEqual(element, 'date_creation') ? : isEqual(element, 'date_creation') ?
@ -814,7 +814,7 @@ class WalletDetail extends Component {
</View> </View>
<View style={{flex: 1, alignItems: 'flex-end'}}> <View style={{flex: 1, alignItems: 'flex-end'}}>
<Text <Text
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.montant + ' ' + this.state.wallet.currency_code}</Text> style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.montant + ' ' + wallet.currency_code}</Text>
</View> </View>
</View> </View>
<View style={{flexDirection: 'row', marginTop: 10}}> <View style={{flexDirection: 'row', marginTop: 10}}>
@ -823,7 +823,7 @@ class WalletDetail extends Component {
</View> </View>
<View style={{flex: 1, alignItems: 'flex-end'}}> <View style={{flex: 1, alignItems: 'flex-end'}}>
<Text <Text
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.montant_rembourse + ' ' + this.state.wallet.currency_code}</Text> style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.montant_rembourse + ' ' + wallet.currency_code}</Text>
</View> </View>
</View> </View>
<View style={{flexDirection: 'row', marginTop: 10}}> <View style={{flexDirection: 'row', marginTop: 10}}>
@ -832,7 +832,7 @@ class WalletDetail extends Component {
</View> </View>
<View style={{flex: 1, alignItems: 'flex-end'}}> <View style={{flex: 1, alignItems: 'flex-end'}}>
<Text <Text
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.partiellement_rembourse + ' ' + this.state.wallet.currency_code}</Text> style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.partiellement_rembourse + ' ' + wallet.currency_code}</Text>
</View> </View>
</View> </View>
<View style={{flexDirection: 'row', marginTop: 10}}> <View style={{flexDirection: 'row', marginTop: 10}}>
@ -841,7 +841,7 @@ class WalletDetail extends Component {
</View> </View>
<View style={{flex: 1, alignItems: 'flex-end'}}> <View style={{flex: 1, alignItems: 'flex-end'}}>
<Text <Text
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.taxe + ' ' + this.state.wallet.currency_code}</Text> style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.taxe + ' ' + wallet.currency_code}</Text>
</View> </View>
</View> </View>
<View style={{flexDirection: 'row', marginTop: 10}}> <View style={{flexDirection: 'row', marginTop: 10}}>
@ -850,7 +850,7 @@ class WalletDetail extends Component {
</View> </View>
<View style={{flex: 1, alignItems: 'flex-end'}}> <View style={{flex: 1, alignItems: 'flex-end'}}>
<Text <Text
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.interet + ' ' + this.state.wallet.currency_code}</Text> style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.interet + ' ' + wallet.currency_code}</Text>
</View> </View>
</View> </View>
<View style={{flexDirection: 'row', marginTop: 10}}> <View style={{flexDirection: 'row', marginTop: 10}}>
@ -956,7 +956,7 @@ class WalletDetail extends Component {
</View> </View>
<View style={{flex: 1, alignItems: 'flex-end'}}> <View style={{flex: 1, alignItems: 'flex-end'}}>
<Text <Text
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.montant + ' ' + this.state.wallet.currency_code}</Text> style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.montant + ' ' + wallet.currency_code}</Text>
</View> </View>
</View> </View>
<View style={{flexDirection: 'row', marginTop: 10}}> <View style={{flexDirection: 'row', marginTop: 10}}>
@ -965,7 +965,7 @@ class WalletDetail extends Component {
</View> </View>
<View style={{flex: 1, alignItems: 'flex-end'}}> <View style={{flex: 1, alignItems: 'flex-end'}}>
<Text <Text
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.montant_retire + ' ' + this.state.wallet.currency_code}</Text> style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.montant_retire + ' ' + wallet.currency_code}</Text>
</View> </View>
</View> </View>
<View style={{flexDirection: 'row', marginTop: 10}}> <View style={{flexDirection: 'row', marginTop: 10}}>
@ -974,7 +974,7 @@ class WalletDetail extends Component {
</View> </View>
<View style={{flex: 1, alignItems: 'flex-end'}}> <View style={{flex: 1, alignItems: 'flex-end'}}>
<Text <Text
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.taxe + ' ' + this.state.wallet.currency_code}</Text> style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.taxe + ' ' + wallet.currency_code}</Text>
</View> </View>
</View> </View>
<View style={{flexDirection: 'row', marginTop: 10}}> <View style={{flexDirection: 'row', marginTop: 10}}>
@ -983,7 +983,7 @@ class WalletDetail extends Component {
</View> </View>
<View style={{flex: 1, alignItems: 'flex-end'}}> <View style={{flex: 1, alignItems: 'flex-end'}}>
<Text <Text
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.interet + ' ' + this.state.wallet.currency_code}</Text> style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.interet + ' ' + wallet.currency_code}</Text>
</View> </View>
</View> </View>
<View style={{flexDirection: 'row', marginTop: 10}}> <View style={{flexDirection: 'row', marginTop: 10}}>
@ -1428,7 +1428,7 @@ class WalletDetail extends Component {
<View style={[styles.content]}> <View style={[styles.content]}>
<View style={{paddingTop: 20,}}> <View style={{paddingTop: 5,}}>
<Text <Text
style={[Typography.headline, Typography.semibold]}> style={[Typography.headline, Typography.semibold]}>
{I18n.t('NANO_CREDIT')} {I18n.t('NANO_CREDIT')}
@ -1584,7 +1584,7 @@ class WalletDetail extends Component {
<Text style={[Typography.overline, Color.grayColor], {marginTop: 4}}> <Text style={[Typography.overline, Color.grayColor], {marginTop: 4}}>
{ {
isEqual(element, 'montant') ? isEqual(element, 'montant') ?
`${thousands(item[element], ' ')}` ` ${item[element].length > 8 ? cutString(thousands(item[element], ' '), 6) : thousands(item[element], ' ')} ${this.state.wallet.currency_code}`
: isEqual(element, 'destinataire') ? : isEqual(element, 'destinataire') ?
item[element].length > 13 ? cutString(item[element], 13) : item[element] item[element].length > 13 ? cutString(item[element], 13) : item[element]
: isEqual(element, 'date') ? : isEqual(element, 'date') ?
@ -1599,7 +1599,7 @@ class WalletDetail extends Component {
<Text style={[Typography.overline, Color.grayColor], {marginTop: 4}}> <Text style={[Typography.overline, Color.grayColor], {marginTop: 4}}>
{ {
isEqual(element, 'montant') ? isEqual(element, 'montant') ?
`${thousands(item[element], ' ')}` ` ${item[element].length > 8 ? cutString(thousands(item[element], ' '), 6) : thousands(item[element], ' ')} ${this.state.wallet.currency_code}`
: isEqual(element, 'destinataire') ? : isEqual(element, 'destinataire') ?
item[element].length > 13 ? cutString(item[element], 13) : item[element] item[element].length > 13 ? cutString(item[element], 13) : item[element]
: isEqual(element, 'date') ? : isEqual(element, 'date') ?

View File

@ -53,7 +53,6 @@ import {
optionRetraitUserScreen, optionRetraitUserScreen,
transactionHistoryIlinkLabel transactionHistoryIlinkLabel
} from '../../utils/UtilsFunction'; } from '../../utils/UtilsFunction';
import DeviceInfo from 'react-native-device-info';
import {readUser} from '../../webservice/AuthApi'; import {readUser} from '../../webservice/AuthApi';
let moment = require('moment-timezone'); let moment = require('moment-timezone');
@ -554,7 +553,7 @@ class WalletDetailUser extends Component {
<View style={[styles.content]}> <View style={[styles.content]}>
<View style={{paddingTop: 20,}}> <View style={{paddingTop: 5,}}>
<Text <Text
style={[Typography.headline, Typography.semibold]}> style={[Typography.headline, Typography.semibold]}>
{I18n.t('NANO_CREDIT')} {I18n.t('NANO_CREDIT')}
@ -840,7 +839,7 @@ class WalletDetailUser extends Component {
<Text style={[Typography.overline, Color.grayColor], {marginTop: 4}}> <Text style={[Typography.overline, Color.grayColor], {marginTop: 4}}>
{ {
isEqual(element, 'montant') ? isEqual(element, 'montant') ?
`${thousands(item[element], ' ')}` ` ${item[element].length > 8 ? cutString(thousands(item[element], ' '), 6) : thousands(item[element], ' ')}`
: isEqual(element, 'destinataire') ? : isEqual(element, 'destinataire') ?
item[element].length > 13 ? cutString(item[element], 13) : item[element] item[element].length > 13 ? cutString(item[element], 13) : item[element]
: isEqual(element, 'date') ? : isEqual(element, 'date') ?

View File

@ -32,6 +32,7 @@ import Icons from 'react-native-vector-icons/Ionicons'
import {Typography} from '../../config/typography'; import {Typography} from '../../config/typography';
import LottieView from 'lottie-react-native'; import LottieView from 'lottie-react-native';
import { import {
cutString,
cutStringWithoutDot, cutStringWithoutDot,
displayToast, displayToast,
displayTransactionType, displayTransactionType,
@ -241,7 +242,7 @@ class WalletOptionSelect extends Component {
<View style={[styles.content]}> <View style={[styles.content]}>
<View style={styles.contentTitle}> <View style={[styles.contentTitle], {paddingTop: options.title.length > 20 ? 0 : 5}}>
<Text style={[Typography.headline, Typography.semibold]}> <Text style={[Typography.headline, Typography.semibold]}>
{I18n.t(options.title)} {I18n.t(options.title)}
</Text> </Text>
@ -285,7 +286,7 @@ class WalletOptionSelect extends Component {
<View style={[styles.content]}> <View style={[styles.content]}>
<View style={styles.contentTitle}> <View style={[styles.contentTitle], {paddingTop: options.title.length > 20 ? 0 : 5}}>
<Text style={[Typography.headline, Typography.semibold]}> <Text style={[Typography.headline, Typography.semibold]}>
{I18n.t(options.title)} {I18n.t(options.title)}
</Text> </Text>
@ -454,7 +455,7 @@ class WalletOptionSelect extends Component {
<Text style={[Typography.overline, Color.grayColor], {marginTop: 4}}> <Text style={[Typography.overline, Color.grayColor], {marginTop: 4}}>
{ {
isEqual(element, 'montant') ? isEqual(element, 'montant') ?
` ${thousands(item[element], ' ')} ${this.state.wallet.currency_code}` ` ${item[element].length > 8 ? cutString(thousands(item[element], ' '), 6) : thousands(item[element], ' ')} ${this.state.wallet.currency_code}`
: isEqual(element, 'date_creation') ? : isEqual(element, 'date_creation') ?
cutStringWithoutDot(item[element], 16) cutStringWithoutDot(item[element], 16)
: item[element] : item[element]
@ -469,7 +470,7 @@ class WalletOptionSelect extends Component {
<Text style={[Typography.overline, Color.grayColor], {marginTop: 4}}> <Text style={[Typography.overline, Color.grayColor], {marginTop: 4}}>
{ {
isEqual(element, 'montant') ? isEqual(element, 'montant') ?
` ${thousands(item[element], ' ')} ${this.state.wallet.currency_code}` ` ${item[element].length > 8 ? cutString(thousands(item[element], ' '), 6) : thousands(item[element], ' ')} ${this.state.wallet.currency_code}`
: isEqual(element, 'date_creation') ? : isEqual(element, 'date_creation') ?
cutStringWithoutDot(item[element], 16) cutStringWithoutDot(item[element], 16)
: item[element] : item[element]

View File

@ -40,6 +40,8 @@
"ENTER_VALID_AMOUNT": "Enter a valid amount", "ENTER_VALID_AMOUNT": "Enter a valid amount",
"ENTER_AMOUNT_SUPERIOR_ZEROR": "Enter amount superior to zero", "ENTER_AMOUNT_SUPERIOR_ZEROR": "Enter amount superior to zero",
"AMOUNT_SUPERIOR_TO_PRINCIPAL_ACCOUNT": "Amount greater than that of the agent's main account", "AMOUNT_SUPERIOR_TO_PRINCIPAL_ACCOUNT": "Amount greater than that of the agent's main account",
"PAYMENT_DONE": "Payment done",
"PAYMENT_ERROR": "Payment error",
"MAKE_DEPOSIT": "Make a deposit", "MAKE_DEPOSIT": "Make a deposit",
"MAKE_WITHDRAWAL": "Make withdrawal", "MAKE_WITHDRAWAL": "Make withdrawal",
"WITHDRAWAL_TYPE": "Withdrawal mode", "WITHDRAWAL_TYPE": "Withdrawal mode",
@ -196,6 +198,9 @@
"PAIEMENT_FACTURE": "Bill payment", "PAIEMENT_FACTURE": "Bill payment",
"NUMERO_ABONNE": "Subscriber number", "NUMERO_ABONNE": "Subscriber number",
"IDENTIFIANT_ETUDIANT": "Student ID", "IDENTIFIANT_ETUDIANT": "Student ID",
"ENTER_VALID_IDENTIFIANT_ETUDIANT": "Enter a valid student ID",
"ENTER_VALID_NUMERO_ABONNE": "Enter a valid subscriber number",
"ENTER_VALID_PHONE_NUMBER": "Enter a valid phone number",
"DEMAND_SEND": "Demand send", "DEMAND_SEND": "Demand send",
"EPARGNE_DEPOSE": "Savings deposited", "EPARGNE_DEPOSE": "Savings deposited",
"BREAK_EPARGNE": "Break my saving", "BREAK_EPARGNE": "Break my saving",
@ -356,6 +361,7 @@
"PASSWORD": "Password", "PASSWORD": "Password",
"CONFIRM_PASSWORD": "Confirm the password", "CONFIRM_PASSWORD": "Confirm the password",
"PLEASE_ENTER_THE_PASSWORD": "Please enter the password", "PLEASE_ENTER_THE_PASSWORD": "Please enter the password",
"PLEASE_ENTER_CORRECT_PASSWORD": "Please enter correct password",
"PASSWORD_MODIFY": "Change your password", "PASSWORD_MODIFY": "Change your password",
"OLD_PASSWORD": "Old password", "OLD_PASSWORD": "Old password",
"NEW_PASSWORD": "New password", "NEW_PASSWORD": "New password",

View File

@ -61,6 +61,8 @@
"MAKE_DEPOSIT": "Effectuer un dépôt", "MAKE_DEPOSIT": "Effectuer un dépôt",
"MAKE_WITHDRAWAL": "Effectuer un retrait", "MAKE_WITHDRAWAL": "Effectuer un retrait",
"WITHDRAWAL_TYPE": "Mode de paiement", "WITHDRAWAL_TYPE": "Mode de paiement",
"PAYMENT_DONE": "Paiement effectué",
"PAYMENT_ERROR": "Erreur de paiement",
"CHOOSE_SOURCE": "Choisir la source", "CHOOSE_SOURCE": "Choisir la source",
"CHANGE_SOURCE_CARD": "Changer le type du numéro de saisie", "CHANGE_SOURCE_CARD": "Changer le type du numéro de saisie",
"CREDIT_CARD": "Carte de crédit", "CREDIT_CARD": "Carte de crédit",
@ -95,13 +97,13 @@
"TRANSFER_IN_ACCOUNT": "Transfert dans le compte", "TRANSFER_IN_ACCOUNT": "Transfert dans le compte",
"WITHDRAWAL_IN_CASH": "Retrait en cash", "WITHDRAWAL_IN_CASH": "Retrait en cash",
"WITHDRAWAL_IN_CASH_DESCRIPTION": "Retrait d'argent en cash", "WITHDRAWAL_IN_CASH_DESCRIPTION": "Retrait d'argent en cash",
"WITHDRAWAL_WALLET_TO_CASH": "Retrait de votre wallet vers cash", "WITHDRAWAL_WALLET_TO_CASH": "Wallet vers cash",
"WITHDRAWAL_WALLET_TO_CASH_DESCRIPTION": "Retirer de l'argent de votre Wallet vers cash", "WITHDRAWAL_WALLET_TO_CASH_DESCRIPTION": "Retirer de l'argent de votre Wallet vers cash",
"WITHDRAWAL_CARD_TO_WALLET": "Retrait de votre carte vers wallet", "WITHDRAWAL_CARD_TO_WALLET": "Carte vers wallet",
"WITHDRAWAL_BANK_TO_WALLET": "Retrait de votre banque vers wallet", "WITHDRAWAL_BANK_TO_WALLET": "Banque vers wallet",
"WITHDRAWAL_BANK_TO_CASH": "Retrait de votre banque vers cash", "WITHDRAWAL_BANK_TO_CASH": "Banque vers cash",
"WITHDRAWAL_CARD_TO_WALLET_DESCRIPTION": "Retrait d'argent de votre carte vers wallet", "WITHDRAWAL_CARD_TO_WALLET_DESCRIPTION": "Retrait d'argent de votre carte vers wallet",
"WITHDRAWAL_CARD_TO_CASH": "Retrait de votre carte vers cash", "WITHDRAWAL_CARD_TO_CASH": "Carte vers cash",
"WITHDRAWAL_CARD_TO_CASH_AGENT": "Retrait carte vers cash", "WITHDRAWAL_CARD_TO_CASH_AGENT": "Retrait carte vers cash",
"WITHDRAWAL_CARD_TO_CASH_DESCRIPTION": "Retrait de l'argent de votre carte vers cash", "WITHDRAWAL_CARD_TO_CASH_DESCRIPTION": "Retrait de l'argent de votre carte vers cash",
"WITHDRAWAL_CARD_TO_CASH_DESCRIPTION_AGENT": "Retrait de l'argent de carte vers cash", "WITHDRAWAL_CARD_TO_CASH_DESCRIPTION_AGENT": "Retrait de l'argent de carte vers cash",
@ -112,13 +114,13 @@
"DEPOSIT_CASH_TO_VISA": "Cash vers carte visa", "DEPOSIT_CASH_TO_VISA": "Cash vers carte visa",
"DEPOSIT_CASH_TO_VISA_DESCRIPTION": "Envoie d'argent de Cash vers carte visa", "DEPOSIT_CASH_TO_VISA_DESCRIPTION": "Envoie d'argent de Cash vers carte visa",
"DEPOSIT_CASH_TO_BANK": "Cash vers banque", "DEPOSIT_CASH_TO_BANK": "Cash vers banque",
"DEPOSIT_WALLET_TO_WALLET": "Votre Wallet vers wallet", "DEPOSIT_WALLET_TO_WALLET": "Wallet vers wallet",
"ENVOIE_WALLET_TO_WALLET": "Envoie Wallet vers wallet", "ENVOIE_WALLET_TO_WALLET": "Envoie Wallet vers wallet",
"DEPOSIT_WALLET_TO_CASH": "Votre Wallet vers cash", "DEPOSIT_WALLET_TO_CASH": "Wallet vers cash",
"ENVOIE_WALLET_TO_CASH": "Envoie Wallet vers cash", "ENVOIE_WALLET_TO_CASH": "Wallet vers cash",
"DEPOSIT_WALLET_TO_CARD": "Votre Wallet vers carte", "DEPOSIT_WALLET_TO_CARD": "Wallet vers carte",
"ENVOIE_WALLET_TO_CARD": "Envoie Wallet vers carte", "ENVOIE_WALLET_TO_CARD": "Envoie Wallet vers carte",
"DEPOSIT_WALLET_TO_BANK": "Votre Wallet vers banque", "DEPOSIT_WALLET_TO_BANK": "Wallet vers banque",
"ENVOIE_WALLET_TO_BANK": "Envoie Wallet vers banque", "ENVOIE_WALLET_TO_BANK": "Envoie Wallet vers banque",
"DEPOSIT_CASH_TO_CASH": "Cash vers cash", "DEPOSIT_CASH_TO_CASH": "Cash vers cash",
"ENVOIE_CASH_TO_CASH": "Envoie d'argent en cash vers cash", "ENVOIE_CASH_TO_CASH": "Envoie d'argent en cash vers cash",
@ -161,9 +163,9 @@
"TYPE_IDENTIFIANT": "Type d'identifiant", "TYPE_IDENTIFIANT": "Type d'identifiant",
"PAYS_DESTINATION": "Pays destination", "PAYS_DESTINATION": "Pays destination",
"ACTIVE_WALLET": "Réseau payeur", "ACTIVE_WALLET": "Réseau payeur",
"DEPOSIT_TO_CASH": "Votre Wallet vers cash", "DEPOSIT_TO_CASH": "Wallet vers cash",
"DEPOSIT_TO_CARD": "Votre Wallet vers carte", "DEPOSIT_TO_CARD": "Wallet vers carte",
"DEPOSIT_TO_BANK": "Votre Wallet vers banque", "DEPOSIT_TO_BANK": "Wallet vers banque",
"NANO_CREDIT": "Nano crédit", "NANO_CREDIT": "Nano crédit",
"NANO_CREDIT_LIST": "Liste des nano crédit", "NANO_CREDIT_LIST": "Liste des nano crédit",
"SAVINGS_LIST": "Liste des épargnes", "SAVINGS_LIST": "Liste des épargnes",
@ -182,11 +184,11 @@
"CAUTIONNEMENT_DONE": "Cautionnement effectué", "CAUTIONNEMENT_DONE": "Cautionnement effectué",
"ID_DEMAND": "Identifiant de la demande", "ID_DEMAND": "Identifiant de la demande",
"ID_SAVINGS": "Identifiant de l'épargne", "ID_SAVINGS": "Identifiant de l'épargne",
"PAIEMENT_EAU": "Paiement eau", "PAIEMENT_EAU": "Eau",
"PAIEMENT_ELECTRICITY": "Paiement électricité", "PAIEMENT_ELECTRICITY": "Electricité",
"PAIEMENT_ECOLE": "Paiement école", "PAIEMENT_ECOLE": "Ecole",
"PAIEMENT_CREDIT_TELEPHONIQUE": "Paiement crédit téléphonique", "PAIEMENT_CREDIT_TELEPHONIQUE": "Crédit téléphonique",
"PAIEMENT_ABONNEMENT_TV": "Paiement abonnement TV", "PAIEMENT_ABONNEMENT_TV": "Abonnement TV",
"NON_APPLICABLE": "Non applicable", "NON_APPLICABLE": "Non applicable",
"DATE": "Date", "DATE": "Date",
"DEMAND_DATE": "Date de la demande", "DEMAND_DATE": "Date de la demande",
@ -203,6 +205,9 @@
"PAIEMENT_FACTURE": "Paiement de facture", "PAIEMENT_FACTURE": "Paiement de facture",
"NUMERO_ABONNE": "Numéro d'abonnée", "NUMERO_ABONNE": "Numéro d'abonnée",
"IDENTIFIANT_ETUDIANT": "Identifiant étudiant", "IDENTIFIANT_ETUDIANT": "Identifiant étudiant",
"ENTER_VALID_IDENTIFIANT_ETUDIANT": "Entrer un identifiant étudiant valide",
"ENTER_VALID_NUMERO_ABONNE": "Entrer un numéro d'abonné valide",
"ENTER_VALID_PHONE_NUMBER": "Entrer un numéro de téléphone valide",
"WITHDRAWAL_DESCRIPTION": "Effectuer un retrait", "WITHDRAWAL_DESCRIPTION": "Effectuer un retrait",
"COMMISSION_ACCOUNT_TITLE": "Cpt. commission", "COMMISSION_ACCOUNT_TITLE": "Cpt. commission",
"CONFIRM": "Confirmer", "CONFIRM": "Confirmer",
@ -367,6 +372,7 @@
"NEW_PASSWORD": "Nouveau mot de passe", "NEW_PASSWORD": "Nouveau mot de passe",
"CONFIRM_NEW_PASSWORD": "Confirmerz le nouveau mot de passe", "CONFIRM_NEW_PASSWORD": "Confirmerz le nouveau mot de passe",
"PLEASE_ENTER_THE_PASSWORD": "Veuillez renseigner le mot de passe", "PLEASE_ENTER_THE_PASSWORD": "Veuillez renseigner le mot de passe",
"PLEASE_ENTER_CORRECT_PASSWORD": "Veuillez renseigner un mot de passe correct",
"MODIFY_AMOUNT": " Modifier le montant", "MODIFY_AMOUNT": " Modifier le montant",
"ENTER_NEW_AMOUNT_TO_SEND": " Entrer le nouveau montant à envoyer", "ENTER_NEW_AMOUNT_TO_SEND": " Entrer le nouveau montant à envoyer",
"AMOUNT": "Montant", "AMOUNT": "Montant",

View File

@ -205,6 +205,7 @@ export const readUser = () => {
}) })
}); });
} }
export const createGeolocatedAccount = (user) => { export const createGeolocatedAccount = (user) => {
return queryData(user, memberActionUrl) return queryData(user, memberActionUrl)

View File

@ -74,6 +74,7 @@ export const getBankUrl = testBaseUrl + '/walletService/wallets/users/operators/
export const getHistoryNanoPendingCreditUrl = testBaseUrl + '/walletService/groups/nanoCredit/demands_in_progress'; export const getHistoryNanoPendingCreditUrl = testBaseUrl + '/walletService/groups/nanoCredit/demands_in_progress';
export const getHistoryEpargnePendingUrl = testBaseUrl + '/walletService/groups/nanoCredit/savings/demands_in_progress'; export const getHistoryEpargnePendingUrl = testBaseUrl + '/walletService/groups/nanoCredit/savings/demands_in_progress';
export const getOperatorListUrl = testBaseUrl + '/walletService/wallets/users/operators'; export const getOperatorListUrl = testBaseUrl + '/walletService/wallets/users/operators';
export const payBillUrl = testBaseUrl + '/walletService/transactions/ilink';
export const authKeyUrl = testBaseUrl + '/oauth/token'; export const authKeyUrl = testBaseUrl + '/oauth/token';
export const videoUrl = "https://www.youtube.com/watch?v=wwGPDPsSLWY"; export const videoUrl = "https://www.youtube.com/watch?v=wwGPDPsSLWY";

View File

@ -2,6 +2,7 @@ import {
commissionAmount, commissionAmount,
getOperatorListUrl, getOperatorListUrl,
linkCardUrl, linkCardUrl,
payBillUrl,
walletActionUrl, walletActionUrl,
walletDetailUrl, walletDetailUrl,
walletUserSimpleActionUrl walletUserSimpleActionUrl
@ -15,6 +16,10 @@ import {
fetchLinkCardPending, fetchLinkCardPending,
fetchLinkCardReset, fetchLinkCardReset,
fetchLinkCardSuccess, fetchLinkCardSuccess,
fetchPayBillError,
fetchPayBillPending,
fetchPayBillReset,
fetchPayBillSuccess,
fetchWalleGetCommissionError, fetchWalleGetCommissionError,
fetchWalletGetCommissionPending, fetchWalletGetCommissionPending,
fetchWalletGetCommissionSuccess, fetchWalletGetCommissionSuccess,
@ -226,3 +231,40 @@ export const getOperatorListReset = () => {
dispatch(fetchGetListOperatorReset()); dispatch(fetchGetListOperatorReset());
} }
} }
export const payBillAction = (data) => {
const auth = store.getState().authKeyReducer;
const authKey = auth !== null ? `${auth.authKey.token_type} ${auth.authKey.access_token}` : '';
console.log("Data send", data);
return dispatch => {
dispatch(fetchPayBillPending());
axios({
url: payBillUrl,
method: 'POST',
data,
headers: {
'Authorization': authKey,
'X-Localization': I18n.currentLocale()
}
})
.then(response => {
console.log(response);
dispatch(fetchPayBillSuccess(response));
})
.catch(error => {
if (error.response)
dispatch(fetchPayBillError(error.response));
else if (error.request)
dispatch(fetchPayBillError(error.request))
else
dispatch(fetchPayBillError(error.message))
});
}
}
export const payBillReset = () => {
return dispatch => {
dispatch(fetchPayBillReset());
}
}