{"version":3,"sources":["misc/rules.js","modules/Validator.js","misc/CreateReducer.js","data/auth/actionTypes.js","data/paymentRequest/actionTypes.js","data/template/actionType.js","data/ActionTypes.js","data/auth/reducers.js","data/paymentRequest/reducers.js","data/template/reducers.js","data/Store.js","configs/http.js","data/auth/actions.js","data/paymentRequest/actions.js","data/template/actions.js","data/ActionCreators.js","component/auth/Login.js","layouts/Auth.js","layouts/widgets/SideNav.js","layouts/widgets/Navbar.js","layouts/widgets/Footer.js","layouts/Dashboard.js","misc/helpers.js","component/Dashboard/Home.js","component/History/PaymentHistory.js","component/Pay/Pay.js","component/Pay/Verify.js","component/More/ChandaCalculator.js","router/index.js","App.js","reportWebVitals.js","index.js"],"names":["required","Component","require","value","undefined","length","CreateReducer","initialState","handlers","resetState","state","action","type","hasOwnProperty","SIGNUP_REQUEST","SIGNUP_SUCCESS","SIGNUP_FAILURE","LOGIN_REQUEST","LOGIN_SUCCESS","LOGIN_FAILURE","LOGOUT_REQUEST","GET_AUTHENTICATED_REQUEST","GET_AUTHENTICATED_SUCCESS","GET_AUTHENTICATED_FAILURE","GET_AUTH_USER_REQUEST","GET_AUTH_USER_SUCCESS","GET_AUTH_USER_FAILURE","SET_UN_AUTHORIZED_TYPE","SET_SEEN_ONBOARDING","GET_PAYMENT_REQUEST","GET_PAYMENT_SUCCESS","GET_PAYMENT_FAILURE","GET_TEMPLATE_REQUEST","GET_TEMPLATE_SUCCESS","GET_TEMPLATE_FAILURE","ActionTypes","Object","assign","AuthActionTypes","PaymentActionTypes","TemplateActionTypes","isAuthorized","data","seenOnboarding","signup","isLoading","message","failed","auth","hasFetched","isLoggedIn","isFetching","STORE_USER_SUCCESS","recentPayments","paymentTemplate","persistedState","serializedState","localStorage","getItem","JSON","parse","e","console","log","loadFromLocal","_store","reducers","combineReducers","AuthReducers","PaymentReducers","TemplateReducers","composeEnhancers","window","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","enhancer","applyMiddleware","thunkMiddleware","createStore","configureStore","subscribe","stringify","setItem","saveToLocal","getState","url","endpoints","SIGNUP","LOGIN","USER_DETAILS","PAYMENT_REQUEST","PAYMENT_DETAILS","PAYMENT_DETAILS_WITH_DATES","GET_PAYMENT_TEMPLATE","VERIFY_PAYMENT","DOWNLOAD_RECEIPT","DASHBOARD_DATA","headers","a","removeItem","location","parseError","error","Promise","reject","response","status","dispatch","logouts","instance","axios","create","baseURL","interceptors","use","Error","parseBody","request","config","Authorization","token","http","CancelToken","setUpAuthorizedRequest","setUpAuthorized","setSeenOnboardingRequest","setSeenOnboarding","getSeenOnboarding","logout","getAuthenticatedFailure","user","HttpConfigs","method","then","resp","alert","catch","err","login","loginSuccess","getAuthenticated","setTimeout","doGetAuthUser","getAuthUserSuccess","getAuthUserFailure","get","getRecentPayments","content","getPaymentTemplate","ActionCreators","AuthActions","PaymentActions","TemplateActions","Login","touched","form","username","password","validation","formatText","text","replace","submit","event","preventDefault","validator","allValid","showMessages","forceUpdate","setState","post","getUserDetails","errorMessage","toast","props","snacksMessage","showMessage","this","SimpleReactValidator","Rules","valid","field","fieldHasError","fields","indexOf","push","target","name","input","trim","className","src","alt","onSubmit","bind","htmlFor","id","autoFocus","onChange","handleOnTextChange","onBlur","handleOnBlur","role","autoComplete","class","disabled","style","padding","connect","bindActionCreators","children","SideNav","href","pathname","to","activeClassName","data-feather","Navbar","navigation","data-toggle","aria-haspopup","aria-expanded","aria-labelledby","surname","names","email","onClick","Footer","Date","getFullYear","thousand","num","toString","monthNames","thisDate","YEARS","years","i","Home","updateYear","year","fetchDashboardData","canShow","monthsArray","keys","constructor","monthlyPaymentList","totalAmount","setupData","getRowsData","map","item","index","parseInt","amount","paymentRequestType","paymentType","color","getColor","moment","dateOf","format","transactions","getPaymentRequest","lists","forEach","month","getMonth","substring","val","labels","datasets","label","backgroundColor","width","height","options","maintainAspectRatio","legend","display","scales","xAxes","barPercentage","categoryPercentage","gridLines","ticks","fontColor","fontSize","yAxes","DialogTitle","withStyles","theme","root","margin","spacing","closeButton","position","right","top","palette","grey","classes","onClose","disableTypography","Typography","variant","IconButton","aria-label","DialogContent","MuiDialogContent","DialogActions","MuiDialogActions","customTheme","createMuiTheme","primary","main","light","dark","secondary","useStyles1","makeStyles","flexShrink","marginLeft","TablePaginationActions","useTheme","count","page","rowsPerPage","onChangePage","direction","Math","ceil","max","today","pastYear","PaymentHistory","handleClose","currentHistory","open","downloadReceipt","loadingReceipt","responseType","download","success","fetchPayment","startDate","endDate","last_page","last","handleChangePage","newPage","fetchData","handleChangeRowsPerPage","handleDateChangeStart","date","handleDateChangeEnd","histories","loading","totalPages","totalElements","anchorEl","openmenu","currentMember","filterBy","params","selectedDate","showFilter","rowscount","utils","DateFnsUtils","fullPage","marginTop","Grid","container","lg","md","sm","xs","maxDate","KeyboardButtonProps","minDate","xmlns","viewBox","fill","stroke","stroke-width","stroke-linecap","stroke-linejoin","points","x1","y1","x2","y2","d","Table","whiteSpace","TableHead","TableRow","TableCell","TableBody","history","align","totalFee","paymentMonth","paymentYear","paymentDate","TablePagination","rowsPerPageOptions","component","onChangeRowsPerPage","ActionsComponent","Dialog","dividers","gutterBottom","chandaFee","welfareFee","sportFee","taleemFee","scholarshipFee","vehicleFee","tablighFee","ijtemaFee","landAndBuildingFee","atfalSubsidyFee","mgqsFee","Button","qs","Pay","handleDateChange","handleChange","persist","handleSelectMonth","selected","months","key","handleError","isFormValid","r","banks","description","isCreating","isDeleting","bankAccountAccount","paymentTypes","members","narration","activeStep","total","naration","beneficiary","monthsList","paymentMonthList","transactionAmount","bankAccountId","receiptURL","isUploading","showTransactionDone","authorizationUrl","showAddEmail","onChangeFile","search","ignoreQueryPrefix","setupMonths","newMonths","elem","bankAccount","reverse","reference","sum","getSumAmount","getSteps","ref","node","handleNext","onError","selectAllLabel","selectSomeItems","overrideStrings","allItemsAreSelected","selectAll","clearSearch","clearSelected","validatorListener","validators","errorMessages","MenuItem","files","cloudinaryUpload","photo","uri","FormData","append","secure_url","bankAccounts","accountNumber","accept","FormControl","FormLabel","RadioGroup","payment","FormControlLabel","control","Radio","fees","values","reduce","b","Card","CardContent","aria-describedby","DialogContentText","handleSubmit","stepIndex","renderPaymentForm","renderPaymentMethods","renderPaymentDescription","renderSummary","GET_MEMBER","req","details","callBackUrl","steps","Stepper","marginBottom","alternativeLabel","Step","StepLabel","getStepContent","handleBack","size","determineSubmition","isValidField","Verify","verified","failure","trxref","verifyTransaction","responseCode","ChandaCalculator","getAuthUser","path","exact","Auth","from","Dashboard","App","store","Store","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.07231386.chunk.js","sourcesContent":["var moment = require('moment');\n\nexport const CARD_TYPES = {\n DISCOVER: 'discover',\n MASTERCARD: 'mastercard',\n VISA: 'visa',\n AMERICAN_EXPRESS: 'americanexpress',\n};\n\nconst CARDS_RANGES = {\n discover: [[6011], [622126, 622925], [644, 649], [65]],\n mastercard: [[50, 55]],\n visa: [[4]],\n americanexpress: [[34], [37]],\n};\n\nconst cardChecker = (card, value) => {\n if (CARD_TYPES[card] == undefined) return false;\n var num, v2;\n var ranges = CARDS_RANGES[card];\n var state = false;\n\n //\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (range.length == 1) {\n v2 = value.substr(0, range[0].toString().length);\n if (v2 == range[0]) {\n state = true;\n break;\n }\n } else if (range.length == 2) {\n v2 = value.substr(0, range[1].toString().length);\n if (v2 >= range[0] && v2 <= range[1]) {\n state = true;\n break;\n }\n } else {\n }\n }\n\n //\n return state;\n};\n\nexport const isMastercard = value => {\n return cardChecker(CARD_TYPES.MASTERCARD, value);\n};\n\nexport const isVisacard = value => {\n return cardChecker(CARD_TYPES.VISA, value);\n};\n\nexport const isAmericanExpress = value => {\n return cardChecker(CARD_TYPES.AMERICAN_EXPRESS, value);\n};\n\nexport const isDiscoverCard = value => {\n return cardChecker(CARD_TYPES.DISCOVER, value);\n};\n\nexport const isEmail = value => {\n if (typeof value == 'string' && value.length < 1) return true;\n var re = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(value);\n};\n\nexport const hasDigit = value => {\n if (typeof value == 'string' && value.length < 1) return true;\n var re = /\\d+/;\n return re.test(value);\n}\n\nexport const hasSpecialCharacter = value => {\n if (typeof value == 'string' && value.length < 1) return true;\n var re = /[ `!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?~]/;\n return re.test(value);\n}\n\nexport const isUsername = value => {\n var regex = /^[A-Za-z0-9]+(?:[\\_\\-][A-Za-z0-9]+)*$/;\n return regex.test(value);\n};\n\nexport const isPhone = value => {\n var re = /^[\\+]?[(]?[0-9]{6,14}[)]?$/im;\n return re.test(value);\n};\n\nexport const isPhoneNational = value => {\n var re = /^[0]?[0-9]{6,12}$/im;\n return re.test(value);\n};\n\nexport const isNGMobile = value => {\n var re = /^[0-9]{11}?$/im;\n return re.test(value);\n};\n\nexport const isNumber = value => {\n var regex = /^[0-9]*$/im;\n return regex.test(value);\n};\n\nexport const isNumeric = value => {\n var re = /^[0-9\\b]+$/im;\n return re.test(value);\n};\n\nexport const required = value => {\n if (value == undefined) return false;\n if (value == null) return false;\n value = value + '';\n return value.length > 0;\n};\n\nexport const requiredWith = (parent, value) => {\n if (!required(parent)) {\n return true;\n }\n return required(value);\n};\n\nexport const maxLength = (length, value) => {\n if (typeof value != 'string') return false;\n return value && value.length <= length;\n};\n\nexport const minLength = (length, value) => {\n if (typeof value != 'string') return false;\n return value && value.length >= length;\n};\n\nexport const between = (min, max, value) => {\n if (typeof value != 'string') return false;\n return value && value.length >= min && value.length <= max;\n};\n\nexport const match = (first, value) => {\n return value == first;\n};\n\nexport const notMatch = (first, value) => {\n return value != first;\n};\n\nexport const accept = value => {\n return value ? true : false;\n};\n\nexport const max = (limit, value) => {\n return value <= limit;\n};\n\nexport const min = (limit, value) => {\n return value >= limit;\n};\n\nexport const isIn = (list, value) => {\n return list.indexOf(value) != -1 ? true : false;\n};\n\nexport const afterDate = (start, value) => {\n var s_unix = moment(new Date(start)).unix();\n var n_unix = moment(new Date(value)).unix();\n\n return n_unix > s_unix;\n};\n\nexport const beforeDate = (start, value) => {\n var s_unix = moment(new Date(start)).unix();\n var n_unix = moment(new Date(value)).unix();\n\n return n_unix < s_unix;\n};\n\nexport const base64Image = (formats, value) => {\n // var regex = new RegExp('\\\"data:image\\/('+formats+');base64,([^\\\"]*)\\\"', 'i');\n let rx = new RegExp(\n '(data:image/(' +\n formats +\n ');base64,[A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)',\n 'i',\n );\n return rx.test(value);\n};\n\nexport const sometimes = (rule, value) => {\n if (value !== undefined && value !== null) {\n return rule(value);\n }\n return true;\n};\n","import React, {Component} from 'react';\nimport PropTypes from 'prop-types';\nimport { clone } from 'lodash';\n\nclass Validator extends Component\n{\n constructor()\n {\n super();\n this.state = {\n touched: []\n };\n // \n this._onChange = this._onChange.bind(this);\n this._valid = this._valid.bind(this);\n this._updateTouched = this._updateTouched.bind(this);\n }\n\n componentDidMount() {\n if(this.props.touched)\n {\n var touched = Object.keys(this.props.form);\n this.setState({touched: touched});\n }\n this._onChange(this.props, this.state);\n }\n\n componentDidUpdate(prevProps, prevState)\n {\n this._updateTouched(prevProps.form, this.props.form);\n }\n\n render()\n {\n return null;\n }\n\n _onChange()\n {\n var states = { valid: true, fields: {} };\n var form = this.props.form;\n var rules = this.props.rules;\n var messages = this.props.messages;\n var touched = this.state.touched;\n var fields = Object.keys(form);\n\n for(var i = 0; i < fields.length; i++)\n {\n var field = fields[i];\n\n if(!form.hasOwnProperty(field))\n { continue; }\n\n if(!rules[field] || !messages[field])\n { continue; }\n\n var validation = this._valid(form[field], rules[field], messages[field]);\n states.fields[field] = {\n field: field,\n value: form[field],\n touched: touched.indexOf(field) != -1 ? true : false,\n error: validation.error, \n valid: validation.valid\n };\n\n if(!validation.valid) \n { states.valid = false; }\n }\n\n // fire on state change listener\n if(this.props.onChange)\n { this.props.onChange(states); }\n }\n \n _valid(value, rules, messages)\n {\n // \n var valid = true, error = null, rule;\n \n if(rules && messages)\n {\n // \n for(var i in rules)\n {\n if(!rules.hasOwnProperty(i))\n { continue; }\n\n rule = rules[i];\n\n if(!rule(value))\n { valid = false; error = messages[i]; break; }\n }\n }\n\n // \n return { error: error, valid: valid };\n }\n\n _updateTouched(prevForm, newform)\n {\n var touched = clone(this.state.touched);\n var wasTouched = false;\n\n for(var field in prevForm)\n {\n if(prevForm[field] != newform[field] && (this.props.rules[field] && this.props.messages[field]))\n { touched.push(field); wasTouched = true; }\n }\n\n if(wasTouched)\n { this.setState({touched: touched}); this._onChange(); }\n }\n}\n\nValidator.propTypes = {\n rules: PropTypes.object.isRequired,\n messages: PropTypes.object.isRequired,\n form: PropTypes.object.isRequired,\n onChange: PropTypes.func\n};\n\nexport default Validator;","export default function CreateReducer(initialState, handlers, resetState) {\n return function reducer(state = initialState, action) {\n if (action.type == 'LOGOUT_SUCCESS' && resetState) {\n return (state = initialState);\n }\n\n if (handlers.hasOwnProperty(action.type)) {\n return handlers[action.type](state, action, initialState);\n } else {\n return state;\n }\n };\n}\n","export const SIGNUP_REQUEST = 'SIGNUP_REQUEST';\nexport const SIGNUP_SUCCESS = 'SIGNUP_SUCCESS';\nexport const SIGNUP_FAILURE = 'SIGNUP_FAILURE';\n\nexport const LOGIN_REQUEST = 'LOGIN_REQUEST';\nexport const LOGIN_SUCCESS = 'LOGIN_SUCCESS';\nexport const LOGIN_FAILURE = 'LOGIN_FAILURE';\n\nexport const LOGOUT_REQUEST = 'LOGOUT_REQUEST';\n\nexport const GET_AUTHENTICATED_REQUEST = 'GET_AUTHENTICATED_REQUEST';\nexport const GET_AUTHENTICATED_SUCCESS = 'GET_AUTHENTICATED_SUCCESS';\nexport const GET_AUTHENTICATED_FAILURE = 'GET_AUTHENTICATED_FAILURE';\n\n\nexport const GET_AUTH_USER_REQUEST = 'GET_AUTH_USER_REQUEST';\nexport const GET_AUTH_USER_SUCCESS = 'GET_AUTH_USER_SUCCESS';\nexport const GET_AUTH_USER_FAILURE = 'GET_AUTH_USER_FAILURE';\n\nexport const SET_UN_AUTHORIZED_TYPE = 'SET_UN_AUTHORIZED_TYPE';\nexport const SET_SEEN_ONBOARDING = 'SET_SEEN_ONBOARDING';\n\n\n\n","export const GET_PAYMENT_REQUEST = 'GET_PAYMENT_REQUEST';\nexport const GET_PAYMENT_SUCCESS = 'GET_PAYMENT_SUCCESS';\nexport const GET_PAYMENT_FAILURE = 'GET_PAYMENT_FAILURE';\n","export const GET_TEMPLATE_REQUEST = 'GET_TEMPLATE_REQUEST';\nexport const GET_TEMPLATE_SUCCESS = 'GET_TEMPLATE_SUCCESS';\nexport const GET_TEMPLATE_FAILURE = 'GET_TEMPLATE_FAILURE';\n","import * as AuthActionTypes from './auth/actionTypes';\nimport * as PaymentActionTypes from './paymentRequest/actionTypes';\nimport * as TemplateActionTypes from './template/actionType';\n\n\n\nexport const ActionTypes = Object.assign(\n {},\n AuthActionTypes,\n PaymentActionTypes,\n TemplateActionTypes\n);\n","import CreateReducer from '../../misc/CreateReducer';\nimport {ActionTypes} from '../ActionTypes';\n/**\n * This reducer is used for monitoring the sign up state.\n */\n\nconst initialStateAuth = {\n data: false,\n};\nexport const isAuthorized = CreateReducer(\n initialStateAuth,\n {\n [ActionTypes.SET_UN_AUTHORIZED_TYPE]: (state, action) => {\n return Object.assign({}, state, action);\n },\n },\n true,\n);\n\nconst initialStateSeen = {\n data: false,\n};\nexport const seenOnboarding = CreateReducer(\n initialStateSeen,\n {\n [ActionTypes.SET_SEEN_ONBOARDING]: (state, action) => {\n return Object.assign({}, state, action);\n },\n },\n true,\n);\n\nconst initialState = {\n isLoading: false,\n message: 'hello',\n failed: false,\n};\nexport const signup = CreateReducer(\n initialState,\n {\n [ActionTypes.SIGNUP_REQUEST]: (state, action) => {\n return Object.assign({}, state, action);\n },\n [ActionTypes.SIGNUP_SUCCESS]: (state, action) => {\n var data = Object.assign({}, state, action);\n delete data.data;\n return data;\n },\n [ActionTypes.SIGNUP_FAILURE]: (state, action) => {\n return Object.assign({}, state, action);\n },\n },\n true,\n);\n\n/**\n * This is used to monitor the authentication\n * status of the mobile app.\n */\nexport const auth = CreateReducer(\n {\n isLoading: false,\n hasFetched: false,\n isLoggedIn: false,\n data: null,\n message: null,\n failed: false,\n },\n {\n [ActionTypes.LOGIN_REQUEST]: (state, action) => {\n return Object.assign({}, state, action);\n },\n [ActionTypes.LOGIN_SUCCESS]: (state, action) => {\n return Object.assign({}, state, action);\n },\n [ActionTypes.LOGIN_FAILURE]: (state, action) => {\n return Object.assign({}, state, action);\n },\n\n [ActionTypes.GET_AUTHENTICATED_SUCCESS]: (state, action) => {\n return Object.assign({}, state, {\n data: action.data,\n isLoggedIn: action.data != null,\n isFetching: false,\n hasFetched: true,\n failed: false,\n message: null,\n });\n },\n [ActionTypes.GET_AUTH_USER_SUCCESS]: (state, action) => {\n return Object.assign({}, state, {\n data: action.data,\n isLoggedIn: true,\n });\n },\n [ActionTypes.SIGNUP_SUCCESS]: (state, action) => {\n return Object.assign({}, state, {\n data: action.data,\n isLoggedIn: true,\n isFetching: false,\n failed: false,\n message: null,\n });\n },\n [ActionTypes.LOGOUT_REQUEST]: (state, action) => {\n return Object.assign({}, state, {\n data: null,\n isLoggedIn: false,\n isFetching: false,\n failed: false,\n message: null,\n });\n },\n [ActionTypes.STORE_USER_SUCCESS]: (state, action) => {\n var data = Object.assign({}, state);\n data.data = Object.assign({}, data.data, action.data);\n return data;\n },\n },\n true,\n);\n","import CreateReducer from '../../misc/CreateReducer';\nimport {ActionTypes} from '../ActionTypes';\n\nexport const recentPayments = CreateReducer(\n {\n isLoading: false,\n data: null,\n message: null,\n failed: false,\n },\n {\n [ActionTypes.GET_PAYMENT_REQUEST]: (state, action) => {\n return Object.assign({}, state, action);\n },\n [ActionTypes.GET_PAYMENT_SUCCESS]: (state, action) => {\n return Object.assign({}, state, action);\n },\n [ActionTypes.GET_PAYMENT_FAILURE]: (state, action) => {\n return Object.assign({}, state, action);\n },\n },\n true,\n);\n","import CreateReducer from '../../misc/CreateReducer';\nimport {ActionTypes} from '../ActionTypes';\n\nexport const paymentTemplate = CreateReducer(\n {\n isLoading: false,\n data: null,\n message: null,\n failed: false,\n },\n {\n [ActionTypes.GET_TEMPLATE_REQUEST]: (state, action) => {\n return Object.assign({}, state, action);\n },\n [ActionTypes.GET_TEMPLATE_SUCCESS]: (state, action) => {\n return Object.assign({}, state, action);\n },\n [ActionTypes.GET_TEMPLATE_FAILURE]: (state, action) => {\n return Object.assign({}, state, action);\n },\n },\n true,\n);\n","import {createStore, applyMiddleware, combineReducers, compose} from 'redux';\nimport thunkMiddleware from 'redux-thunk';\nimport * as AuthReducers from './auth/reducers';\nimport * as PaymentReducers from './paymentRequest/reducers';\nimport * as TemplateReducers from './template/reducers';\n\nfunction saveToLocal(state) {\n try {\n const serializedState = JSON.stringify(state)\n localStorage.setItem('state', serializedState)\n } catch (e) {\n console.log(e)\n }\n}\n\nfunction loadFromLocal() {\n try {\n const serializedState = localStorage.getItem('state');\n if (serializedState === null) return undefined\n return JSON.parse(serializedState)\n } catch (e) {\n console.log(e)\n return undefined\n }\n}\nconst persistedState = loadFromLocal();\n\n\n// configures the store\nconst configureStore = (initialState = {}) => {\n // combine reducers\n let reducers = combineReducers(\n Object.assign(\n {},\n AuthReducers,\n PaymentReducers,\n TemplateReducers\n ),\n );\n\n const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\n\n // create enhancer\n let enhancer = composeEnhancers(applyMiddleware(thunkMiddleware));\n\n // create store\n return createStore(reducers, persistedState, enhancer);\n};\n\n// configure store\nconst _store = configureStore();\n\n_store.subscribe(() => saveToLocal(_store.getState()))\n\n// export store\nexport default _store;\n","import axios from 'axios';\n\nimport _store from '../data/Store';\n\nimport {ActionTypes} from '../data/ActionTypes';\n/**\n * here we have the base url for all http request\n * that will be made to the REST API\n */\nconst DEV_url = 'https://maalportal.khuddam.ng/prod-service';\nconst LIVE_url = 'https://maalportal.khuddam.ng/prod-service';\nexport const url = DEV_url;\n\nexport const callback_url = 'https://maalportal.khuddam.ng/verify';\n\n\n/**\n * here we have all the possible enpoints that can be\n * used to access data on the REST API\n */\n// &status=APPROVED\nexport const endpoints = {\n SIGNUP: '/v1/auth/sign-up',\n LOGIN: '/auth-service/api/auth/authenticate',\n USER_DETAILS: '/auth-service/api/v1/users/current',\n PAYMENT_REQUEST: '/payment-service/api/v1/payment-requests?isSelfUser=true',\n PAYMENT_DETAILS:\n '/payment-service/api/v1/payment-details?isSelfUser=true&page=:page&size=:size&status=APPROVED',\n PAYMENT_DETAILS_WITH_DATES:\n '/payment-service/api/v1/payment-details?isSelfUser=true&page=:page&startDate=:startDate&endDate=:endDate&size=:size&status=APPROVED',\n\n GET_PAYMENT_REQUEST:\n '/payment-service/api/v1/payment-requests?isSelfUser=true&size=5',\n GET_PAYMENT_TEMPLATE: '/payment-service/api/v1/payment-requests/template',\n VERIFY_PAYMENT:\n '/paystack-service/transactions?trxref=:trxref&reference=:reference',\n DOWNLOAD_RECEIPT:\n 'payment-service/api/v1/payment-details/download-receipt/:id?isSelfUser=true',\n DASHBOARD_DATA:\n 'report-service/api/v1/dashboard?isSelfUser=true&paymentYear=:year',\n};\n\n/**\n * the in key is used to validate every request made to the REST API\n * this ensures that the request is secure and permitted.\n */\nexport const apiKey = '';\n\n/**\n * default headers for http request\n */\nexport const headers = {\n 'Content-Type': 'application/json',\n};\n\nfunction logout() {\n return {\n type: 'LOGOUT_REQUEST',\n };\n}\nasync function logouts() {\n localStorage.removeItem(\"state\");\n window.location = '/'\n}\n\nconst setUpAuthorizedRequest = (data) => {\n return {\n type: ActionTypes.SET_UN_AUTHORIZED_TYPE,\n data: data,\n\n };\n};\n\n/**\n * parse error response\n */\nfunction parseError(error) {\n console.log(error);\n if (!error) {\n return Promise.reject('An unknown error occured.');\n }\n\n if (typeof error === 'string') {\n return Promise.reject(error);\n }\n\n if (error && error.response) {\n console.log(error.response);\n\n if (error.response.status === 401) {\n _store.dispatch(logout());\n _store.dispatch(setUpAuthorizedRequest(true))\n logouts();\n\n }\n if (error.response.data && error.response.data.error) {\n return Promise.reject(error.response.data.error);\n }\n\n if (error.response.data && error.response.data.message) {\n return Promise.reject(error.response.data.message);\n }\n\n return Promise.reject('An unknown error occured.');\n }\n\n return Promise.reject(error.message || 'An unknown error occured.');\n}\n\n/**\n * parse response\n */\nfunction parseBody(response) {\n const {data} = response;\n // _store.dispatch(setUpAuthorizedRequest(true))\n\n console.log(response);\n\n if (data) {\n console.log('yes');\n console.log(data);\n return data;\n } else {\n console.log('no');\n\n return parseError(new Error(data.error));\n }\n}\n\nlet instance = axios.create({\n baseURL: url,\n});\n\n/**\n * add a response interceptor for axios instace\n */\ninstance.interceptors.response.use(\n (response) => {\n return parseBody(response);\n },\n (error) => {\n // if (__DEV__ && DEBUG) {\n // console.log([error]);\n // }\n return parseError(error);\n },\n);\nfunction loadFromLocal() {\n try {\n const serializedState = localStorage.getItem('authData');\n if (serializedState === null) return undefined\n return JSON.parse(serializedState)\n } catch (e) {\n console.log(e)\n return undefined\n }\n}\n\n// request header\ninstance.interceptors.request.use(\n async (config) => {\n try {\n // get stored user\n // let user = await asyncGet(STORE_KEYS.AUTH_USER);\n\n\n const {auth} = _store.getState();\n console.log(auth);\n // add default headers\n config.headers = Object.assign({}, config.headers, headers);\n // check if a user was found\n if (auth.data) {\n // add user login token to request header\n config.headers = Object.assign({}, config.headers, {\n Authorization: `Bearer ${auth.data.token}`,\n });\n }\n // return transformed config\n return config;\n } catch (error) {\n // reject error if failed\n return Promise.reject(error);\n }\n },\n (error) => {\n return Promise.reject(error);\n },\n);\n\n/**\n * export instance as http\n */\nexport const http = instance;\n\nexport const cancelToken = axios.CancelToken;\n","import axios from 'axios';\nimport * as HttpConfigs from '../../configs/http';\nimport {ActionTypes} from '../ActionTypes';\nimport {endpoints} from '../../configs/http';\n\n\nimport {http} from '../../configs/http';\n\n\n/**\n * Action creators and middleware for user sign up\n */\n\nconst setUpAuthorizedRequest = (data) => {\n return {\n type: ActionTypes.SET_UN_AUTHORIZED_TYPE,\n data: data,\n };\n};\n\nexport const setUpAuthorized = (data = false) => {\n return (dispatch) => {\n // dispatch pending\n dispatch(setUpAuthorizedRequest(data));\n };\n};\n\nconst setSeenOnboardingRequest = (data) => {\n return {\n type: ActionTypes.SET_SEEN_ONBOARDING,\n data: data,\n };\n};\n\nexport const setSeenOnboarding = (data = false) => {\n return async (dispatch) => {\n // dispatch pending\n dispatch(setSeenOnboardingRequest(data));\n\n };\n};\nexport const getSeenOnboarding = () => {\n console.log('getting');\n return async (dispatch) => {\n // dispatch pending\n console.log('2');\n\n };\n};\n\nconst logoutRequest = () => {\n return {\n type: ActionTypes.LOGOUT_REQUEST,\n };\n};\n\nexport const logout = () => {\n return (dispatch) => {\n // dispatch pending\n dispatch(logoutRequest());\n };\n};\n\nconst signupRequest = () => {\n return {\n type: ActionTypes.SIGNUP_REQUEST,\n isLoading: true,\n failed: false,\n message: null,\n };\n};\n/**\n * Action creators adn middleware for logging in\n * registered users into their accounts.\n */\n\nconst loginRequest = () => {\n return {\n type: ActionTypes.LOGIN_REQUEST,\n isLoading: true,\n failed: false,\n message: null,\n data: null,\n };\n};\nconst loginSuccess = (data) => {\n return {\n type: ActionTypes.LOGIN_SUCCESS,\n isLoggedIn: true,\n data: data,\n };\n};\n\nconst signupSuccess = (data) => {\n return {\n type: ActionTypes.SIGNUP_SUCCESS,\n isFetching: false,\n data: data,\n };\n};\n\n/**\n * Action creators and middle ware for retrieving already\n * authenticated user info, and decrypting for usage\n */\n\nconst getAuthenticatedRequest = () => {\n return {\n type: ActionTypes.GET_AUTHENTICATED_REQUEST,\n isLoading: true,\n hasFetched: false,\n failed: false,\n message: null,\n };\n};\n\nconst getAuthenticatedSuccess = (data) => {\n return {\n type: ActionTypes.GET_AUTHENTICATED_SUCCESS,\n isLoading: false,\n hasFetched: true,\n failed: false,\n data: data,\n };\n};\n\nconst getAuthenticatedFailure = (message) => {\n return {\n type: ActionTypes.GET_AUTHENTICATED_FAILURE,\n isLoading: false,\n hasFetched: true,\n failed: true,\n message: message,\n };\n};\n\nexport const signup = (user) => {\n return (dispatch) => {\n // dispatch pending\n dispatch(signupRequest());\n\n // make http request\n axios\n .request({\n url: HttpConfigs.url + HttpConfigs.endpoints.SIGNUP,\n method: 'POST',\n data: user,\n headers: HttpConfigs.headers,\n })\n .then(async (resp) => {\n alert(JSON.stringify(resp));\n // if response status is not ok\n // if(!resp.data || !resp.data.status)\n // {\n // message = resp.data && resp.data.message ? resp.data.message : 'An known error occurred.';\n // message = resp.data.errors ? resp.data.errors[0] : message;\n // dispatch( signupFailure( message ) );\n // return;\n // }\n //\n // // validata user json web token presence\n // if(!resp.data.token)\n // {\n // message = resp.data && resp.data.message ? resp.data.message : 'Something seems to have gone wrong on our, end please try again in a moment.';\n // dispatch( signupFailure( message ) );\n // return;\n // }\n //\n // // save the loggedin user's token and basic info\n // try\n // {\n // // fab new user\n // let user = Object.assign( {}, resp.data.data, {\n // token: resp.data.token\n // });\n //\n // // store token in local storage\n // await asyncStore( STORE_KEYS.AUTH_USER, user );\n //\n // /**\n // * Here we will install the referrer code if\n // * it matches the the install referrer\n // * we will only store the referral code if it matches the\n // * the install code. This assumes the install\n // * code has been used on this device.\n // */\n // let storedReferrer = await asyncGet( STORE_KEYS.REFERRER );\n // let installReferrer = Platform.select({\n // android: RNDeviceInfo.getInstallReferrer(),\n // ios: storedReferrer\n // });\n // if( user.referred_user && installReferrer == storedReferrer){\n // await asyncStore( STORE_KEYS.REFERRER, storedReferrer );\n // }\n //\n // // dispatch signup success\n // setTimeout(() => { dispatch( signupSuccess( user ) ); }, 200);\n // }catch(err){\n // let message = err && err.message ? err.message : 'An unknown error occured.';\n // dispatch( signupFailure(message) );\n // }\n })\n .catch((err) => {\n\n console.log(err);\n\n\n // let message = err && err.message ? err.message : 'An unknown error occured.';\n //\n // if(err.response && err.response.data && err.response.data.errors){\n // message = err.response.data.errors[0];\n // }\n //\n // if(message.toLowerCase().indexOf('status code') != -1){\n // message = 'An error occured on the server, please try again in a bit.';\n // }\n\n // dispatch( signupFailure(message) );\n });\n };\n};\n\nexport const login = (data) => {\n return (dispatch) => {\n // dispatch pending\n dispatch(loginSuccess(data));\n };\n};\nfunction loadFromLocal() {\n try {\n const serializedState = localStorage.getItem('authData');\n if (serializedState === null) return undefined\n return JSON.parse(serializedState)\n } catch (e) {\n console.log(e)\n return undefined\n }\n}\n\nexport const getAuthenticated = () => {\n return async (dispatch) => {\n dispatch(getAuthenticatedRequest());\n try {\n\n // //dispatch( loginSuccess(user));\n //load user from server\n setTimeout(() => {\n dispatch(doGetAuthUser());\n console.log('hhhhhhsss');\n }, 2000);\n } catch (err) {\n let message =\n err && err.message\n ? err.message\n : 'An unknown error occured, close and launch application again.';\n dispatch(getAuthenticatedFailure(message));\n }\n };\n};\n\n/**\n * Action creators adn middleware for fetching the logged in user's information\n * registered users into their accounts.\n */\nconst getAuthUserRequest = () => {\n return {\n type: ActionTypes.GET_AUTH_USER_REQUEST,\n isFetching: true,\n failed: false,\n message: null,\n data: null,\n };\n};\n\nconst getAuthUserSuccess = (data) => {\n return {\n type: ActionTypes.GET_AUTH_USER_SUCCESS,\n isFetching: false,\n failed: false,\n data: data,\n };\n};\n\nconst getAuthUserFailure = (message) => {\n return {\n type: ActionTypes.GET_AUTH_USER_FAILURE,\n isFetching: false,\n failed: true,\n message: message,\n };\n};\n\nexport const doGetAuthUser = () => {\n return (dispatch, getState) => {\n // return;\n const {auth} = getState();\n console.log(auth);\n // dispatch pending\n dispatch(getAuthUserRequest());\n // make http request\n http\n .get(endpoints.USER_DETAILS)\n .then(async (resp) => {\n console.log(resp);\n // if response status is not ok\n if (!resp) {\n dispatch(getAuthUserFailure('ERROR'));\n return;\n }\n\n // if(resp.data.deleted)\n // {\n //\n // dispatch( getAuthUserFailure() );\n // Alert.alert(\n // 'Your account has been deleted, please contact system\\'s admin for support.'\n // );\n // // store token in local storage\n // await asyncStore( STORE_KEYS.AUTH_USER, null );\n // dispatch(login(null));\n // return;\n // }\n\n // save the loggedin user's token and basic info\n try {\n // fab new user\n // let data = Object.assign( {}, auth.data.user, resp);\n //\n // console.log(data)\n var data = {};\n data.user = resp;\n data.token = auth.data.token;\n\n\n\n // // store token in local storage\n // await asyncStore(STORE_KEYS.AUTH_USER, data);\n // dispatch getAuthUser success\n console.log('new useeee');\n dispatch(getAuthUserSuccess(data));\n } catch (err) {\n let message =\n err && err.message ? err.message : 'An unknown error occured.';\n dispatch(getAuthUserFailure(message));\n }\n })\n .catch((err) => {\n console.log(err);\n dispatch(getAuthUserFailure(err));\n });\n };\n};\n","import {ActionTypes} from '../ActionTypes';\nimport {endpoints, http} from '../../configs/http';\n\nconst getPaymentRequest = () => {\n return {\n type: ActionTypes.GET_PAYMENT_REQUEST,\n isLoading: true,\n failed: false,\n message: null,\n };\n};\n\nconst getPaymentSuccess = (data) => {\n return {\n type: ActionTypes.GET_PAYMENT_SUCCESS,\n data: data,\n failed: false,\n isLoading: false,\n };\n};\n\nconst getPaymentFailure = (message) => {\n return {\n type: ActionTypes.GET_PAYMENT_FAILURE,\n isLoading: false,\n failed: true,\n message: message,\n };\n};\n\nexport const getRecentPayments = () => {\n return (dispatch) => {\n // dispatch pending\n dispatch(getPaymentRequest());\n http\n .get(endpoints.GET_PAYMENT_REQUEST)\n .then(async (resp) => {\n dispatch(getPaymentSuccess(resp.content));\n // await asyncStore(STORE_KEYS.RECENT_PAYMENTS, resp.content);\n })\n .catch(async (err) => {\n console.log(err);\n\n // let payments = await asyncGet(STORE_KEYS.RECENT_PAYMENTS);\n // if (payments) {\n // dispatch(getPaymentSuccess(payments));\n // }\n dispatch(getPaymentFailure(err));\n });\n };\n};\n","import {ActionTypes} from '../ActionTypes';\nimport {endpoints, http} from '../../configs/http';\n\n\nconst getTemplateRequest = () => {\n return {\n type: ActionTypes.GET_TEMPLATE_REQUEST,\n isLoading: true,\n failed: false,\n message: null,\n };\n};\n\nconst getTemplateSuccess = (data) => {\n return {\n type: ActionTypes.GET_TEMPLATE_SUCCESS,\n data: data,\n failed: false,\n isLoading: false,\n };\n};\n\nconst getTemplateFailure = (message) => {\n return {\n type: ActionTypes.GET_TEMPLATE_FAILURE,\n isLoading: false,\n failed: true,\n message: message,\n };\n};\n\nexport const getPaymentTemplate = () => {\n return (dispatch) => {\n // dispatch pending\n dispatch(getTemplateRequest());\n http\n .get(endpoints.GET_PAYMENT_TEMPLATE)\n .then(async (resp) => {\n dispatch(getTemplateSuccess(resp));\n // await asyncStore(STORE_KEYS.TEMPLATE_DATA, resp);\n })\n .catch(async (err) => {\n console.log(err);\n\n // let template = await asyncGet(STORE_KEYS.TEMPLATE_DATA);\n // if (template) {\n // dispatch(getTemplateSuccess(template));\n // }\n dispatch(getTemplateFailure(err));\n });\n };\n};\n","import * as AuthActions from './auth/actions';\nimport * as PaymentActions from './paymentRequest/actions';\nimport * as TemplateActions from './template/actions';\n\nexport const ActionCreators = Object.assign(\n {},\n AuthActions,\n PaymentActions,\n TemplateActions\n);\n","import React, {Component} from 'react';\nimport Validator from '../../modules/Validator';\nimport * as Rules from '../../misc/rules';\nimport * as HttpConfigs from '../../configs/http';\nimport {http, endpoints} from '../../configs/http';\nimport {connect} from 'react-redux';\nimport {bindActionCreators} from 'redux';\nimport {ActionCreators} from '../../data/ActionCreators';\nimport SimpleReactValidator from \"simple-react-validator\";\nimport axios from \"axios\";\nimport { ToastContainer, toast } from 'react-toastify';\nimport 'react-toastify/dist/ReactToastify.css';\n\nclass Login extends Component {\n state = {\n touched: [],\n form: {\n username: '',\n password: '',\n },\n validation: null,\n isLoading: false,\n };\n componentDidMount() {\n\n this.validator = new SimpleReactValidator();\n }\n setupValidator() {\n\n\n }\n\n\n handleValidatorOnChange(validation) {\n this.setState({validation});\n }\n\n rules() {\n return {\n username: {\n required: Rules.required,\n },\n password: {\n required: Rules.required,\n },\n };\n }\n messages() {\n return {\n username: {\n required: 'Please enter your MKAN ID.',\n },\n password: {\n required: 'Please enter your password.',\n },\n };\n }\n\n valid() {\n var {validation} = this.state;\n if (!validation || !validation.valid) {\n return false;\n }\n return true;\n }\n\n fieldError(field) {\n if (!this.fieldHasError(field)) {\n return;\n }\n var field = this.state.validation.fields[field] || null;\n if (!field) {\n return;\n }\n return field.error;\n }\n handleOnBlur(field) {\n\n console.log(field)\n var {touched} = this.state;\n if (touched.indexOf(field) == -1) {\n touched.push(field);\n this.setState({touched});\n }\n }\n\n fieldHasError(field) {\n var {touched, validation} = this.state;\n if (!validation || !validation.fields || !validation.fields[field]) {\n return false;\n }\n if (touched.indexOf(field) !== -1 && !validation.fields[field].valid) {\n return true;\n }\n return false;\n }\n handleChange(event) {\n const { name, value } = event.target;\n this.setState({\n [name]: value\n });\n }\n formatText = (text) => {\n return text.replace(/[^+\\d]/g, '');\n };\n handleOnTextChange(field, input) {\n const { name, value } = input.target;\n var form = Object.assign({}, this.state.form);\n form[field] = value.trim();\n this.setState({form});\n console.log(form)\n console.log(this.state.validation)\n }\n\n submit = (event) => {\n event.preventDefault();\n if (!this.validator.allValid()) {\n this.validator.showMessages();\n // rerender to show messages for the first time\n // you can use the autoForceUpdate option to do this automatically`\n this.forceUpdate();\n return;\n }\n\n this.setState({\n isLoading: true,\n });\n var form = Object.assign({}, this.state.form);\n\n // make http request\n http\n .post(endpoints.LOGIN, form, {\n headers: HttpConfigs.headers,\n })\n .then(async (resp) => {\n console.log(resp);\n // await asyncStore(STORE_KEYS.LOGIN_DATA, form);\n this.getUserDetails(resp.token);\n // this.setState({\n // showMessage: false,\n // });\n })\n .catch((err) => {\n console.log(err);\n this.setState({\n isLoading: false,\n });\n let errorMessage =\n (typeof err === 'string' && err) ||\n 'An error occured, please try again in a moment.';\n // alert(JSON.stringify(error));\n console.log(errorMessage);\n toast.error(errorMessage)\n // this.setState({\n // snacksMessage: errorMessage,\n // showMessage: true,\n // });\n });\n\n // setTimeout(() => {\n // this.setState({\n // isLoading: false,\n // });\n // this.props.navigation.navigate('home');\n // }, 2000);\n };\n\n getUserDetails = (token) => {\n // this.setState({\n // loading:true\n // });\n\n axios({\n headers: {\n Authorization: 'Bearer ' + token,\n 'Content-Type': 'application/json',\n },\n method: 'get',\n url: HttpConfigs.url + endpoints.USER_DETAILS,\n })\n .then(async (user) => {\n this.setState({\n isLoading: false,\n });\n\n console.log(user.data);\n // var result =jwtDecode(user.data.token);\n // console.log(result)\n\n var data = {};\n data.user = user.data;\n data.token = token;\n this.props.login(data);\n window.location = \"/dashboard\";\n //\n // await asyncStore(STORE_KEYS.AUTH_USER, data);\n // try {\n // const serializedState = JSON.stringify(data)\n // localStorage.setItem('authData', serializedState)\n // } catch (e) {\n // console.log(e)\n // }\n\n // data.access_token = token;\n // data.user = user.data;\n // data.refresh_token = token;\n // data.names = \"Admin\";\n // data.role = \"Member\";\n // data.memberId = result.sub;\n // // dispatch(setUserData(res));\n //\n // this.props.setUserData(data);\n // history.push({\n // pathname: \"/\"\n // });\n })\n .catch((error) => {\n this.setState({\n isLoading: false,\n });\n\n if (error && error.response) {\n if (error.response.data && error.response.data.error) {\n this.setState({\n snacksMessage: error.response.data.error,\n showMessage: true,\n });\n return false;\n }\n\n if (error.response.data && error.response.data.message) {\n this.setState({\n snacksMessage: error.response.data.message,\n showMessage: true,\n });\n return false;\n }\n\n this.setState({\n snacksMessage: 'An unknown error occured.',\n showMessage: true,\n });\n\n return false;\n }\n });\n };\n\n\n render() {\n const {form, isLoading} = this.state\n return (\n\n
\n\n {/*Sendchamp*/}\n
\n {'MAKN\n
\n
Welcome back! Log in to your\n maal account.
\n
\n\n\n
\n \n\n
\n \n\n {/* @error('email')*/}\n {this.validator &&\n \n \n {this.validator.message(\n \"username\",\n form.username,\n \"required\"\n )}\n \n \n }\n\n {/* @enderror*/}\n
\n
\n\n
\n \n\n
\n \n\n {this.validator &&\n \n {this.validator.message(\n \"password\",\n form.password,\n \"required\"\n )}\n \n }\n\n\n {/* @error('password')*/}\n {/* */}\n {/* {{$message}}*/}\n {/**/}\n {/* @enderror*/}\n
\n
\n\n\n
\n
\n \n\n
\n
\n
\n
\n\n {/*
*/}\n {/**/}\n {/*{{__(\"Don't have an account? Create\")}}*/}\n {/**/}\n
\n
\n
\n \n
\n );\n }\n}\n\n\nconst mapStateToProps = (state) => {\n const {auth} = state;\n return {auth};\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return bindActionCreators(\n {\n login: ActionCreators.login,\n setUpAuthorized: ActionCreators.setUpAuthorized\n },\n dispatch,\n );\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Login);\n\n","import React from 'react';\n\nexport default ({ children }) => {\n\n return (\n
\n
\n
\n
\n
\n
\n
\n
\n
\n {children}\n
\n
\n
\n
\n
\n
\n
\n
\n
\n );\n\n}\n\n","import React, {Component} from 'react';\nimport {Link, NavLink} from \"react-router-dom\";\n\nclass SideNav extends Component {\n render() {\n return (\n\n \n\n )\n\n }\n}\n\nexport default SideNav;\n","import React, {Component} from 'react';\n\nimport {connect} from 'react-redux';\nimport {bindActionCreators} from 'redux';\nimport {ActionCreators} from '../../data/ActionCreators';\n\nclass Navbar extends Component {\n render() {\n const {auth, navigation} = this.props;\n return (\n \n );\n }\n}\n\n\n\n// map store state to component props\nconst mapStateToProps = (state) => {\n // get required state from store state\n var {auth} = state;\n // return state\n return {\n auth,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return bindActionCreators(\n {\n getAuthenticated: ActionCreators.getAuthenticated,\n login: ActionCreators.login,\n setSeenOnboarding: ActionCreators.setSeenOnboarding,\n },\n dispatch,\n );\n};\nexport default connect(mapStateToProps, mapDispatchToProps)(Navbar);\n","import React, {Component} from 'react';\n\nclass Footer extends Component {\n render() {\n return (\n \n );\n }\n}\n\nexport default Footer;\n","import React from 'react';\nimport SideNav from \"./widgets/SideNav\";\nimport Navbar from \"./widgets/Navbar\";\nimport Footer from \"./widgets/Footer\";\n\nexport default ({ children }) => {\n\n return (\n
\n \n\n\n
\n\n \n\n
\n {children}\n
\n\n
\n
\n );\n}\n","\nexport const thousand = (num) => {\n if (typeof num !== 'string') {\n num = num.toString();\n }\n return num.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n};\n\n// American Numbering System\nvar th = ['', 'thousand', 'million', 'billion', 'trillion'];\n// uncomment this line for English Number System\n// var th = ['','thousand','million', 'milliard','billion'];\n\n// var dg = ['zero','one','two','three','four',\n// 'five','six','seven','eight','nine'];\n// var tn = ['ten','eleven','twelve','thirteen', 'fourteen','fifteen','sixteen',\n// 'seventeen','eighteen','nineteen'];\n// var tw = ['twenty','thirty','forty','fifty',\n// 'sixty','seventy','eighty','ninety'];\n//\n// function toWords(s){s = s.toString(); s =\n// s.replace(/[\\, ]/g,''); if (s != parseFloat(s)) return 'not a number'; var x =\n// s.indexOf('.'); if (x == -1) x = s.length; if (x > 15) return 'too big'; var n =\n// s.split(''); var str = ''; var sk = 0; for (var i=0; i < x; i++) {if\n// ((x-i)%3==2) {if (n[i] == '1') {str += tn[Number(n[i+1])] + ' '; i++; sk=1;}\n// else if (n[i]!=0) {str += tw[n[i]-2] + ' ';sk=1;}} else if (n[i]!=0) {str +=\n// dg[n[i]] +' '; if ((x-i)%3==0) str += 'hundred ';sk=1;} if ((x-i)%3==1) {if (sk)\n// str += th[(x-i-1)/3] + ' ';sk=0;}} if (x != s.length) {var y = s.length; str +=\n// 'point '; for (var i=x+1; istr.replace(/\\s+/g,' ');\n// }\n\nvar a = [\n '',\n 'one ',\n 'two ',\n 'three ',\n 'four ',\n 'five ',\n 'six ',\n 'seven ',\n 'eight ',\n 'nine ',\n 'ten ',\n 'eleven ',\n 'twelve ',\n 'thirteen ',\n 'fourteen ',\n 'fifteen ',\n 'sixteen ',\n 'seventeen ',\n 'eighteen ',\n 'nineteen ',\n];\nvar b = [\n '',\n '',\n 'twenty',\n 'thirty',\n 'forty',\n 'fifty',\n 'sixty',\n 'seventy',\n 'eighty',\n 'ninety',\n];\nexport const inWords = (num) => {\n if ((num = num.toString()).length > 9) {\n return 'overflow';\n }\n var n = ('000000000' + num)\n .substr(-9)\n .match(/^(\\d{2})(\\d{2})(\\d{2})(\\d{1})(\\d{2})$/);\n if (!n) {\n return;\n }\n var str = '';\n str +=\n n[1] != 0\n ? (a[Number(n[1])] || b[n[1][0]] + ' ' + a[n[1][1]]) + 'crore '\n : '';\n str +=\n n[2] != 0\n ? (a[Number(n[2])] || b[n[2][0]] + ' ' + a[n[2][1]]) + 'million '\n : '';\n str +=\n n[3] != 0\n ? (a[Number(n[3])] || b[n[3][0]] + ' ' + a[n[3][1]]) + 'thousand '\n : '';\n str +=\n n[4] != 0\n ? (a[Number(n[4])] || b[n[4][0]] + ' ' + a[n[4][1]]) + 'hundred '\n : '';\n str +=\n n[5] != 0\n ? (str != '' ? 'and ' : '') +\n (a[Number(n[5])] || b[n[5][0]] + ' ' + a[n[5][1]]) +\n 'naira only'\n : 'naira only';\n return str;\n}\n","import React, {Component} from 'react';\nimport {connect} from 'react-redux';\nimport {bindActionCreators} from 'redux';\nimport {ActionCreators} from '../../data/ActionCreators';\nimport {Bar} from 'react-chartjs-2';\n\nimport {endpoints, http} from '../../configs/http';\n\nimport {thousand} from '../../misc/helpers';\nimport moment from \"moment\";\nimport {NavLink} from \"react-router-dom\";\n\n\n\nconst data = {\n labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],\n datasets: [\n {\n label: 'My First dataset',\n backgroundColor: 'rgba(255,99,132,0.2)',\n borderColor: 'rgba(255,99,132,1)',\n borderWidth: 1,\n hoverBackgroundColor: 'rgba(255,99,132,0.4)',\n hoverBorderColor: 'rgba(255,99,132,1)',\n data: [65, 59, 80, 81, 56, 55, 40]\n }\n ]\n};\n\nconst monthNames = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n];\n\nconst thisDate = new Date();\n\nconst YEARS = () => {\n let currentYear = new Date().getFullYear();\n let years = [];\n for (var i = currentYear; i >= 2020; i--) {\n years.push(i);\n }\n return years;\n};\n\nclass Home extends Component {\n\n constructor(props) {\n super(props);\n this.state = {\n transactions: [],\n year: thisDate.getFullYear(),\n monthlyPaymentList: null,\n totalAmount: null,\n monthsArray: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n canShow: false\n };\n }\n\n\n updateYear = (event) => {\n this.setState({year: event.target.value});\n console.log(event)\n\n this.fetchDashboardData(event.target.value)\n\n this.setState({\n canShow: false,\n monthsArray: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n })\n };\n\n componentDidMount() {\n this.props.getAuthenticated();\n this.props.getPaymentTemplate();\n this.props.getPaymentRequest();\n // this.setupData()\n this.fetchDashboardData(this.state.year);\n }\n\n fetchDashboardData = (year = thisDate.getFullYear()) => {\n this.setState({\n\n\n });\n let url = endpoints.DASHBOARD_DATA.replace(':year', year);\n\n http\n .get(url)\n .then(async (resp) => {\n console.log(Object.keys(resp).length);\n console.log(resp);\n if (Object.keys(resp).length !== 0 && resp.constructor === Object) {\n console.log('yes');\n this.setState({\n monthlyPaymentList: resp.monthlyPaymentList,\n totalAmount: resp.totalAmount,\n canShow: true,\n });\n\n this.setupData(resp.monthlyPaymentList);\n } else {\n console.log('no');\n this.setState({\n monthlyPaymentList: null,\n totalAmount: null,\n canShow: true,\n });\n }\n })\n .catch((err) => {\n console.log(err);\n this.setState({\n isFetching: false,\n\n });\n let errorMessage =\n (typeof err === 'string' && err) ||\n 'An error occured, please try again in a moment.';\n // alert(JSON.stringify(error));\n console.log(errorMessage);\n // this.setState({\n // snacksMessage: errorMessage,\n // showMessage: true,\n // errorMessage: errorMessage,\n // });\n });\n };\n\n setupData(lists) {\n\n var monthsArray = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n lists.forEach(getSections);\n function getSections(item, index) {\n console.log(item.month)\n if (item.month === 'January') {\n monthsArray[0] = parseInt(item.amount);\n } else if (item.month === 'February') {\n monthsArray[1] = parseInt(item.amount);\n }\n else if (item.month === 'March') {\n monthsArray[2] = parseInt(item.amount);\n }\n else if (item.month === 'April') {\n monthsArray[3] = parseInt(item.amount);\n }\n else if (item.month === 'May') {\n monthsArray[4] = parseInt(item.amount);\n }\n else if (item.month === 'June') {\n monthsArray[5] = parseInt(item.amount);\n }\n else if (item.month === 'July') {\n monthsArray[6] = parseInt(item.amount);\n }\n else if (item.month === 'August') {\n monthsArray[7] = parseInt(item.amount);\n }\n else if (item.month === 'September') {\n monthsArray[8] = parseInt(item.amount);\n }\n else if (item.month === 'October') {\n monthsArray[9] = parseInt(item.amount);\n }\n else if (item.month === 'November') {\n monthsArray[10] = parseInt(item.amount);\n }\n else if (item.month === 'December') {\n monthsArray[11] = parseInt(item.amount);\n }\n }\n this.setState({\n monthsArray\n })\n console.log(monthsArray);\n }\n\n getMonth(){\n if (thisDate.getMonth() == 0){\n return \"January\"\n }\n else {\n return \"Jan - \"+ monthNames[thisDate.getMonth()].substring(0,3)\n }\n }\n // setupData(){\n // var gridLineColor = 'rgba(77, 138, 240, .1)';\n // // Monthly sales chart start\n // if(true) {\n // var monthlySalesChart = document.getElementById('monthly-sales-chart').getContext('2d');\n // new Chart(monthlySalesChart, {\n // type: 'bar',\n // data: {\n // labels: ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],\n // datasets: [{\n // label: 'Sales',\n // data: [150,110,90,115,125,160,190,140,100,110,120,120],\n // backgroundColor: \"#10b759\"\n // }]\n // },\n // options: {\n // maintainAspectRatio: false,\n // legend: {\n // display: false,\n // labels: {\n // display: false\n // }\n // },\n // scales: {\n // xAxes: [{\n // display: true,\n // barPercentage: .3,\n // categoryPercentage: .6,\n // gridLines: {\n // display: false\n // },\n // ticks: {\n // fontColor: '#8392a5',\n // fontSize: 10\n // }\n // }],\n // yAxes: [{\n // gridLines: {\n // color: gridLineColor\n // },\n // ticks: {\n // fontColor: '#8392a5',\n // fontSize: 10,\n // min: 80,\n // max: 200\n // }\n // }]\n // }\n // }\n // }\n // );\n // }\n // }\n\n getColor(status) {\n if (status == 'INITIATED') {\n return \"#85bfde\";\n } else if (status == 'PENDING') {\n return \"#E6A40B\";\n } else if (status == 'SUCCESS' || status == 'APPROVED') {\n return \"#229858\";\n } else if (\n status == 'CANCELLED' ||\n status == 'DECLINED' ||\n status == 'FAILED'\n ) {\n return \"#ff5230\";\n }\n return \"#000000\";\n }\n\n getRowsData = function() {\n const {data} = this.props.recentPayments;\n return data.map((item, index) => {\n return (\n \n {/*{index + 1}*/}\n {`₦${thousand(parseInt(item.amount))}`}\n\n {item.paymentRequestType} {item.paymentType.name} Payment \n \n {item.status}\n \n \n {moment(item.dateOf).format('MMMM Do YYYY')}\n\n\n \n );\n });\n };\n\n\n render() {\n const {monthlyPaymentList,monthsArray, totalAmount, canShow} = this.state;\n const {data} = this.props.recentPayments;\n return (\n
\n\n\n\n\n
\n
\n
\n
\n
\n
Yearly payment analysis
\n
\n \n {/**/}\n \n
\n
\n

Check out how you have been able to spread your payments

\n
\n {/**/}\n \n
\n
\n
\n
\n
\n
\n
\n
\n
Want More?
\n
\n\n
\n
\n\n\n You have paid\n\n {canShow ?\n
\n {totalAmount ?\n

₦{thousand(totalAmount)}

\n\n :\n

\n ₦0\n

\n }\n
\n\n :\n\n
---
\n }\n {this.state.year !== thisDate.getFullYear() ?\n
\n For the month of Jan - Dec{' '}\n {this.state.year}\n
\n :\n
\n For the month of {this.getMonth()}{' '}\n {this.state.year}\n
\n }\n\n\n Make New Payment\n
\n
\n
\n
\n {data &&\n
\n
\n
\n\n
\n
Payment Requests
\n

Track your most recent transactions

\n
\n \n \n \n \n \n \n \n \n \n \n\n {this.getRowsData()}\n\n {/**/}\n {/* */}\n {/* */}\n {/* */}\n {/* */}\n {/**/}\n \n
AmountTypeStatusDate
1SedncashTransactionActivated
\n
\n
\n
\n
\n
\n }\n\n
\n );\n }\n}\n\n\n\n// map store state to component props\nconst mapStateToProps = (state) => {\n // get required state from store state\n var {auth, recentPayments} = state;\n // return state\n return {\n auth,\n recentPayments,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return bindActionCreators(\n {\n getAuthenticated: ActionCreators.getAuthenticated,\n getPaymentRequest: ActionCreators.getRecentPayments,\n getPaymentTemplate: ActionCreators.getPaymentTemplate,\n },\n dispatch,\n );\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Home);\n\n","import React, {Component} from 'react';\nimport {\n IconButton,\n Table,\n TableHead,\n TableBody,\n TableRow,\n TableCell,\n Icon,\n TablePagination, Grid\n} from \"@material-ui/core\";\nimport PropTypes from 'prop-types';\nimport { makeStyles, useTheme } from '@material-ui/core/styles';\nimport FirstPageIcon from '@material-ui/icons/FirstPage';\nimport KeyboardArrowLeft from '@material-ui/icons/KeyboardArrowLeft';\nimport KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight';\nimport LastPageIcon from '@material-ui/icons/LastPage';\nimport {endpoints, http} from '../../configs/http';\nimport {thousand} from \"../../misc/helpers\";\nimport moment from \"moment\";\nimport DateFnsUtils from '@date-io/date-fns';\nimport {\n MuiPickersUtilsProvider,\n KeyboardTimePicker,\n KeyboardDatePicker,\n} from '@material-ui/pickers';\n\nimport { createMuiTheme } from '@material-ui/core'\nimport MuiThemeProvider from '@material-ui/core/styles/MuiThemeProvider';\nimport Button from \"@material-ui/core/Button\";\nimport Dialog from \"@material-ui/core/Dialog\";\nimport MuiDialogTitle from \"@material-ui/core/DialogTitle\";\nimport MuiDialogContent from \"@material-ui/core/DialogContent\";\nimport MuiDialogActions from \"@material-ui/core/DialogActions\";\nimport Typography from \"@material-ui/core/Typography\";\nimport CloseIcon from \"@material-ui/icons/Close\";\n\nimport { withStyles } from \"@material-ui/core/styles\";\nimport {ValidatorForm} from \"react-material-ui-form-validator\";\nimport download from 'downloadjs'\nimport {Loader} from \"react-overlay-loader\";\nimport {toast, ToastContainer} from \"react-toastify\";\nconst styles = theme => ({\n root: {\n margin: 0,\n padding: theme.spacing(2)\n },\n closeButton: {\n position: \"absolute\",\n right: theme.spacing(1),\n top: theme.spacing(1),\n color: theme.palette.grey[500]\n }\n});\n\nconst DialogTitle = withStyles(styles)(props => {\n const { children, classes, onClose } = props;\n return (\n \n {children}\n {onClose ? (\n \n \n \n ) : null}\n \n );\n});\n\nconst DialogContent = withStyles(theme => ({\n root: {\n padding: theme.spacing(2)\n }\n}))(MuiDialogContent);\n\nconst DialogActions = withStyles(theme => ({\n root: {\n margin: 0,\n padding: theme.spacing(1)\n }\n}))(MuiDialogActions);\n\n\nexport const customTheme = createMuiTheme({\n palette: {\n primary: {\n main: '#229858',\n light: '#229858',\n dark: '#229858',\n },\n secondary: {\n main: '#229858',\n },\n },\n})\n\n\nconst useStyles1 = makeStyles((theme) => ({\n root: {\n flexShrink: 0,\n marginLeft: theme.spacing(2.5),\n },\n}));\n\nfunction TablePaginationActions(props) {\n const classes = useStyles1();\n const theme = useTheme();\n const { count, page, rowsPerPage, onChangePage } = props;\n\n const handleFirstPageButtonClick = (event) => {\n onChangePage(event, 0);\n };\n\n const handleBackButtonClick = (event) => {\n onChangePage(event, page - 1);\n };\n\n const handleNextButtonClick = (event) => {\n onChangePage(event, page + 1);\n };\n\n const handleLastPageButtonClick = (event) => {\n onChangePage(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1));\n };\n\n return (\n\n
\n \n {theme.direction === 'rtl' ? : }\n \n \n {theme.direction === 'rtl' ? : }\n \n = Math.ceil(count / rowsPerPage) - 1}\n aria-label=\"next page\"\n >\n {theme.direction === 'rtl' ? : }\n \n = Math.ceil(count / rowsPerPage) - 1}\n aria-label=\"last page\"\n >\n {theme.direction === 'rtl' ? : }\n \n
\n\n );\n}\n\nTablePaginationActions.propTypes = {\n count: PropTypes.number.isRequired,\n onChangePage: PropTypes.func.isRequired,\n page: PropTypes.number.isRequired,\n rowsPerPage: PropTypes.number.isRequired,\n};\nlet today = new Date();\nlet pastYear = new Date('Apr 30, 1990');\n\n\nclass PaymentHistory extends Component {\n\n constructor() {\n super();\n this.state = {\n page : 0,\n histories : [\n\n ],\n rowsPerPage: 5,\n loading: false,\n status: \"APPROVED,SUCCESS\",\n totalPages: 0,\n open:false,\n totalElements:0,\n anchorEl:null,\n openmenu:false,\n currentMember: null,\n filterBy: \"\",\n params: \"\",\n selectedDate: new Date(),\n\n error: true,\n startDate: null,\n endDate: null,\n showFilter: false,\n currentHistory: null,\n loadingReceipt: false\n\n\n\n\n };\n this.handleChangePage = this.handleChangePage.bind(this);\n this.handleChangeRowsPerPage = this.handleChangeRowsPerPage.bind(this);\n this.fetchData = this.fetchData.bind(this);\n this.handleClose = this.handleClose.bind(this);\n }\n handleClose = () => {\n this.setState({ currentHistory: null,open: false });\n };\n\n fetchData(page, rowscount){\n // const {filterBy, params} = this.state;\n this.setState({\n loading:true\n });\n\n let url = endpoints.PAYMENT_DETAILS.replace(':page', page).replace(\n ':size',\n rowscount,\n );\n if (this.state.startDate && this.state.endDate) {\n url = endpoints.PAYMENT_DETAILS_WITH_DATES.replace(':page', page)\n .replace(':startDate', moment(this.state.startDate).format(\"YYYY-MM-DD\"))\n .replace(':endDate', moment(this.state.endDate).format(\"YYYY-MM-DD\")).replace(\n ':size',\n rowscount,\n );\n }\n\n\n http.get(url\n\n )\n .then(response => {\n console.log(response.content);\n this.setState({\n error: false,\n loading:false,\n histories: response.content,\n totalPages: response.totalPages,\n totalElements: response.totalElements\n });\n\n })\n .catch(error => {\n this.setState({\n loading:false,\n error: true\n });\n // let errorMessage =\n // (typeof error === \"string\" && error) ||\n // \"An error occured, please try again in a moment.\";\n //\n // const Toast = Swal.mixin({\n // toast: true,\n // position: \"top-end\",\n // showConfirmButton: false,\n // timer: 3000\n // });\n //\n // Toast.fire({\n // icon: \"error\",\n // title: errorMessage\n // });\n });\n }\n\n downloadReceipt = (id, month, year) => {\n this.handleClose()\n console.log(\"here\")\n this.setState({\n loadingReceipt: true\n })\n http\n .get(endpoints.DOWNLOAD_RECEIPT.replace(\":id\", id),{\n responseType: 'blob',\n })\n .then(async (resp) => {\n\n console.log(resp)\n var name = month + \"\"+year+ \"MKAN-RECEIPT.PDF\"\n download(resp, name, \"application/pdf\")\n this.setState({\n loadingReceipt: false,\n });\n\n console.log(\"yes hhh\")\n toast.success(\"Receipt downloaded\")\n })\n .catch((err) => {\n this.setState({\n loadingReceipt: false,\n });\n let errorMessage =\n (typeof err === 'string' && err) ||\n 'An error occured, please try again in a moment.';\n // alert(JSON.stringify(error));\n console.log(errorMessage);\n toast.error(errorMessage)\n\n });\n }\n componentDidMount() {\n const {page,rowsPerPage} = this.state;\n this.fetchData(page, rowsPerPage);\n }\n\n fetchPayment = () => {\n console.log('fetttc');\n this.setState({\n isFetching: true,\n });\n let url = endpoints.PAYMENT_DETAILS.replace(':page', 0).replace(\n ':size',\n 20,\n );\n if (this.state.startDate && this.state.endDate) {\n url = endpoints.PAYMENT_DETAILS_WITH_DATES.replace(':page', 0)\n .replace(':startDate', this.state.startDate)\n .replace(':endDate', this.state.endDate).replace(\n ':size',\n 20,\n );\n }\n\n http\n .get(url)\n .then(async (resp) => {\n\n\n this.setState({\n isFetching: false,\n showMessage: false,\n transactions: resp.content,\n last_page: resp.last,\n page: this.state.page + 1,\n });\n\n console.log(\"yes hhh\")\n })\n .catch((err) => {\n this.setState({\n isFetching: false,\n last_page: false,\n });\n let errorMessage =\n (typeof err === 'string' && err) ||\n 'An error occured, please try again in a moment.';\n // alert(JSON.stringify(error));\n console.log(errorMessage);\n this.setState({\n snacksMessage: errorMessage,\n showMessage: true,\n errorMessage: errorMessage,\n });\n });\n };\n handleChangePage = (event, newPage) => {\n this.setState({\n page: newPage\n });\n this.fetchData(newPage, this.state.rowsPerPage);\n };\n handleChangeRowsPerPage = event => {\n // setRowsPerPage(+event.target.value);\n this.setState({\n rowsPerPage:+event.target.value\n });\n\n this.fetchData(this.state.page, +event.target.value);\n };\n handleDateChangeStart = (date) => {\n const { endDate, rowsPerPage} = this.state\n this.setState({\n startDate : date\n }, ()=>{\n if (endDate){\n this.setState({\n page : 0\n })\n this.fetchData(0, rowsPerPage);\n }\n })\n };\n\n handleDateChangeEnd = (date) => {\n const { startDate, rowsPerPage} = this.state\n this.setState({\n endDate : date\n }, ()=>{\n if (startDate){\n this.setState({\n page : 0\n })\n this.fetchData(0, rowsPerPage);\n }\n })\n };\n\n render() {\n const {page, rowsPerPage, histories, totalPages,loading,currentMember,totalElements, error, selectedDate, showFilter, startDate, endDate, currentHistory, loadingReceipt} = this.state;\n return (\n \n \n \n
\n
\n\n \n\n
\n
\n
\n
\n
Payment History
\n\n
\n {loading &&\n
\n \n
\n }\n\n
\n \n \n \n Amount\n Description\n Date\n Action\n \n \n\n\n {histories.length > 0 &&\n \n {histories\n .map((history, index) => (\n \n \n {`₦${thousand(\n parseInt(history.totalFee)\n )}`}\n\n \n \n Payment for {history.paymentMonth} {history.paymentYear}\n \n \n {moment(history.paymentDate).format(\"MMMM Do YYYY\")}\n \n \n
\n this.setState({\n currentHistory: history,\n open: true\n })}\n className=\"btn btn-primary btn-icon-text mb-2 mb-md-0 \">\n\n View\n \n\n {/**/}\n {/* // this.handleOpenMenu(event, member)*/}\n {/* }*/}\n {/*>*/}\n {/* more_vert*/}\n {/**/}\n {/**/}\n {/* */}\n {/* View Details*/}\n {/* */}\n\n {/**/}\n
\n
\n
\n ))}\n
\n }\n
\n\n \n
\n\n {/**/}\n {/* */}\n {/* */}\n {/* */}\n {/* */}\n {/* */}\n {/* */}\n {/* */}\n {/* */}\n {/* */}\n {/* */}\n {/* */}\n {/* */}\n {/* */}\n {/* */}\n {/* */}\n {/* */}\n {/*
IDSender IDPurposeStatus
1SedncashTransactionActivated
*/}\n
\n
\n
\n
\n
\n\n {currentHistory &&\n \n \n PAYMENT DETAILS FOR {moment(currentHistory.paymentDate).format(\"MMMM YYYY\")}\n \n \n \n \n \n {/**/}\n {/* Payment Type*/}\n {/* Online Payment*/}\n {/**/}\n \n Month\n {currentHistory.paymentMonth}\n \n \n Year\n {currentHistory.paymentYear}\n \n \n Date Paid\n {moment(currentHistory.paymentDate).format(\"MMMM Do YYYY\")}\n \n \n\n\n
\n
\n \n \n \n \n FEE\n AMOUNT\n \n \n \n \n Chanda\n {currentHistory.chandaFee}\n \n \n Welfare\n {currentHistory.welfareFee}\n \n \n Sport\n {currentHistory.sportFee}\n \n \n Ta'leem Tarbiyya\n {currentHistory.taleemFee}\n \n \n Scholarship Fee\n {currentHistory.scholarshipFee}\n \n \n Vehicle Fee\n {currentHistory.vehicleFee}\n \n \n Tabligh Fee\n {currentHistory.tablighFee}\n \n \n Ijtema Fee\n {currentHistory.ijtemaFee}\n \n \n Land and building Fee\n {currentHistory.landAndBuildingFee}\n \n \n Atfal Subsidy Fee\n {currentHistory.atfalSubsidyFee}\n \n \n MGQS Fee\n {currentHistory.mgqsFee}\n \n\n \n
\n
\n\n
\n \n \n \n \n \n }\n\n\n
\n
\n\n
\n \n
\n );\n }\n}\n\nexport default PaymentHistory;\n","import React, {Component} from \"react\";\n\nimport {SelectValidator, TextValidator, ValidatorForm} from \"react-material-ui-form-validator\";\nimport {Button, CircularProgress, Grid, TableCell, TableHead, TableRow} from \"@material-ui/core\";\nimport DialogContent from \"@material-ui/core/DialogContent\";\nimport Select from \"@material-ui/core/Select\";\nimport {callback_url, endpoints, http} from '../../configs/http';\n\nimport MenuItem from \"@material-ui/core/MenuItem\";\nimport Stepper from '@material-ui/core/Stepper';\nimport Step from '@material-ui/core/Step';\nimport StepLabel from '@material-ui/core/StepLabel';\nimport Typography from \"@material-ui/core/Typography\";\nimport moment from \"moment\";\nimport Card from \"@material-ui/core/Card\";\nimport CardContent from \"@material-ui/core/CardContent\";\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport RadioGroup from \"@material-ui/core/RadioGroup\";\nimport FormControlLabel from \"@material-ui/core/FormControlLabel\";\nimport Radio from \"@material-ui/core/Radio\";\nimport FormLabel from \"@material-ui/core/FormLabel\";\nimport FormControl from \"@material-ui/core/FormControl\";\n\nimport TextField from \"@material-ui/core/TextField\";\n\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\n\nimport {connect} from 'react-redux';\nimport {bindActionCreators} from 'redux';\nimport {ActionCreators} from '../../data/ActionCreators';\n\nimport MultiSelect from \"react-multi-select-component\";\nimport {KeyboardDatePicker, MuiPickersUtilsProvider} from \"@material-ui/pickers\";\nimport MuiThemeProvider from '@material-ui/core/styles/MuiThemeProvider';\nimport DateFnsUtils from \"@date-io/date-fns\";\nimport {customTheme} from \"../History/PaymentHistory\";\nimport axios from 'axios';\nimport {ToastContainer, toast} from 'react-toastify';\nimport {thousand} from \"../../misc/helpers\";\nimport {Loader} from 'react-overlay-loader';\nimport 'react-overlay-loader/styles.css';\n\nvar qs = require('qs');\n\nclass Pay extends Component {\n\n\n constructor(props) {\n super(props);\n this.state = {\n banks: [],\n name: \"\",\n description: \"\",\n disabled: true,\n isCreating: false,\n isDeleting: false,\n bankAccountAccount: \"\",\n open: false,\n paymentType: \"\",\n paymentTypes: [],\n members: [],\n narration: \"\",\n loading: false,\n activeStep: 0,\n chandaFee: '',\n welfareFee: '',\n sportFee: '',\n months: [], years: [],\n taleemFee: '', tablighFee: '', landAndBuildingFee: '',\n vehicleFee: '', atfalSubsidyFee: '', scholarshipFee: '', ijtemaFee: '', paymentMonth: \"\", paymentYear: \"\",\n total: 0, naration: '', beneficiary: {},\n selected: [],\n monthsList: [],\n form: {\n atfalSubsidyFee: '',\n chandaFee: '',\n ijtemaFee: '',\n landAndBuildingFee: '',\n paymentMonth: '',\n paymentType: '',\n paymentYear: '',\n scholarshipFee: '',\n sportFee: '',\n tablighFee: '',\n taleemFee: '',\n\n vehicleFee: '',\n welfareFee: '',\n mgqsFee: '',\n paymentMonthList: [],\n },\n transactionAmount: 0,\n\n selectedDate: new Date(),\n dateOf: moment(new Date()).format('DD/MM/YYYY'),\n bankAccountId: '',\n receiptURL: '',\n isUploading: false,\n showTransactionDone: false,\n authorizationUrl: null,\n showAddEmail: false,\n email: ''\n\n\n }\n this.onChangeFile = this.onChangeFile.bind(this);\n }\n\n\n componentDidMount() {\n if (this.props.paymentTemplate.data == null) {\n this.props.getPaymentTemplate();\n }\n console.log(qs.parse(this.props.location.search, {ignoreQueryPrefix: true}).search)\n this.setupMonths()\n }\n\n setupMonths() {\n const {data} = this.props.paymentTemplate;\n\n if (data) {\n const newMonths = data.months.map((elem) => ({\n label: elem,\n value: elem,\n }));\n\n console.log(newMonths)\n\n this.setState({\n monthsList: newMonths,\n\n });\n }\n }\n\n\n getTemplates() {\n this.setState({\n loading: true\n });\n http.get(endpoints.GET_PAYMENT_TEMPLATE\n )\n .then(response => {\n this.setState({\n loading: false,\n banks: response.data.bankAccount,\n paymentTypes: response.data.paymentTypes,\n months: response.data.months,\n years: response.data.years.reverse()\n });\n\n })\n .catch(error => {\n this.setState({\n loading: false\n });\n let errorMessage =\n (typeof error === \"string\" && error) ||\n \"An error occured, please try again in a moment.\";\n\n // const Toast = Swal.mixin({\n // toast: true,\n // position: \"top-end\",\n // showConfirmButton: false,\n // timer: 3000\n // });\n //\n // Toast.fire({\n // icon: \"error\",\n // title: errorMessage\n // });\n });\n }\n\n getSteps() {\n const {paymentType} = this.state\n if (paymentType === \"\" || paymentType === \"1\")\n return ['Payment Details', 'How do you want to make payment', 'Preview']\n\n else\n return ['Payment Details', 'How do you want to make payment', 'Payment Description', 'Preview']\n }\n\n onSuccess(reference) {\n // const Toast = Swal.mixin({\n // toast: true,\n // position: \"top-end\",\n // showConfirmButton: false,\n // timer: 3000\n // });\n // Toast.fire({\n // icon: \"success\",\n // title: \"Payment Request Successful\"\n // });\n this.setState({open: false})\n }\n\n getSumAmount() {\n var form = Object.assign({}, this.state.form);\n let sum = 0;\n\n [\n 'atfalSubsidyFee',\n 'chandaFee',\n 'ijtemaFee',\n 'landAndBuildingFee',\n 'mgqsFee',\n 'scholarshipFee',\n 'sportFee',\n 'tablighFee',\n 'taleemFee',\n 'vehicleFee',\n 'welfareFee',\n ].forEach((name) => {\n let value = form[name];\n\n if (value !== '') {\n sum += parseInt(value);\n }\n });\n\n return sum;\n }\n\n isValidField() {\n const {activeStep, selected, form, paymentType, narration, dateOf, bankAccountId, receiptURL} = this.state\n if (activeStep === 0) {\n if (selected.length === 0 || form.paymentYear === '' || this.getSumAmount() === 0) {\n return false\n }\n return true\n } else if (activeStep === 1) {\n if (paymentType !== '') {\n return true\n }\n } else if (activeStep === 2 && this.getSteps().length > 3) {\n if (narration !== '' && dateOf !== '' && bankAccountId !== '' && receiptURL !== '') {\n return true\n }\n }\n return false\n }\n\n renderPaymentForm() {\n const {data, isLoading} = this.props.paymentTemplate;\n const {\n form,\n monthsList,\n selected,\n } = this.state;\n return (\n
\n (this.form = node)}\n onSubmit={() => this.handleNext()}\n onError={this.handleError}\n >\n \n\n \n \n \n \n \n {\n data.years.reverse().map((year, index) => (\n {year}\n ))\n }\n\n \n \n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n\n \n\n
\n )\n }\n\n handleDateChange = (date) => {\n\n this.setState({\n selectedDate: date,\n dateOf: moment(date).format('DD/MM/YYYY'),\n })\n };\n\n onChangeFile(e) {\n // this.setState({attachment: e.target.files[0]});\n console.log(e.target.files[0])\n this.cloudinaryUpload(e.target.files[0])\n }\n\n cloudinaryUpload(photo) {\n console.log(photo.uri);\n const data = new FormData();\n data.append('file', photo);\n data.append('upload_preset', 'foijw9mb');\n // foijw9mb\n data.append('cloud_name', 'dfghp0bgq');\n this.setState({\n loading: true,\n });\n\n axios\n .post('https://api.cloudinary.com/v1_1/dfghp0bgq/image/upload', data, {\n 'Content-Type': 'multipart/form-data',\n })\n .then(async (resp) => {\n console.log(resp);\n this.setState({\n loading: false,\n receiptURL: resp.data.secure_url,\n });\n toast.success(\"Image uploaded\")\n })\n .catch((error) => {\n console.log(error);\n this.setState({\n loading: false,\n });\n let errorMessage =\n (typeof error === 'string' && error) ||\n 'An error occured, please try again in a moment.';\n // alert(JSON.stringify(error));\n console.log(errorMessage);\n toast.error(\"Image not uploaded, try again\")\n });\n }\n\n renderPaymentDescription() {\n const {data, isLoading} = this.props.paymentTemplate;\n const {\n form,\n monthsList,\n selected,\n dateOf,\n selectedDate,\n narration,\n bankAccountId\n } = this.state;\n return (\n\n \n
\n (this.form = node)}\n onSubmit={() => this.handleNext()}\n onError={this.handleError}\n >\n

Total Amount to pay: {`₦${thousand(this.getSumAmount())}`}

\n \n\n\n\n \n \n \n \n \n \n\n \n \n {\n data.bankAccounts.map((item, index) => (\n {item.name + ' ' + item.accountNumber}\n ))\n }\n\n \n \n\n\n \n\n
\n \n\n
\n this.onChangeFile(e)}\n\n\n />\n\n {this.state.receiptURL !== ''\n &&\n \n }\n\n\n
\n
\n {/**/}\n
\n\n\n
\n\n \n\n
\n\n
\n\n )\n }\n\n renderPaymentMethods() {\n const {\n form,\n monthsList,\n selected,\n paymentType\n } = this.state;\n const {data, isLoading} = this.props.paymentTemplate;\n return (\n
\n (this.form = node)}\n onSubmit={() => this.handleNext()}\n onError={this.handleError}\n >\n \n\n \n\n \n Payment Option\n \n {\n\n data.paymentTypes.map((payment, index) => (\n } label={payment.name}/>\n ))\n }\n\n \n \n\n \n \n\n \n
\n )\n }\n\n renderSummary() {\n const {\n showTransactionDone,\n showAddEmail,\n form,\n monthsList,\n selected,\n paymentTypes, chandaFee, welfareFee, sportFee, taleemFee, tablighFee, landAndBuildingFee,\n vehicleFee, atfalSubsidyFee, scholarshipFee, years, months, ijtemaFee, open, banks, bankAccountAccount, beneficiary, paymentType, paymentYear, paymentMonth\n } = this.state;\n const fees = {\n 'Chanda': chandaFee,\n 'welfare': welfareFee,\n 'sport': sportFee,\n 'taleem': taleemFee,\n 'tabligh': tablighFee,\n 'land And Building': landAndBuildingFee,\n 'vehicle': vehicleFee,\n 'atfalSubsidy': atfalSubsidyFee,\n 'scholarship': scholarshipFee,\n 'ijtema': ijtemaFee\n }\n const total = Object.values(fees).reduce((a, b) => parseInt(a) + parseInt(b)\n )\n return (\n
\n \n \n \n \n
\n Payment For:\n\n {\n form.paymentMonthList.map((val, index) => (\n {val} \n ))\n }\n\n , {form.paymentYear}\n
\n
\n \n
\n \n \n \n \n \n \n \n\n\n \n\n \n \n \n {`₦${thousand(form.chandaFee)}`}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n\n \n \n \n \n\n \n
FeeAmount
\n Chanda (Majlis)\n
\n Khidmat Khalq (Welfare)\n \n {`₦${thousand(form.welfareFee)}`}\n
\n Seehat Jismani (Sport)\n \n {`₦${thousand(form.sportFee)}`}\n
\n Taleem Tarbiyya\n \n {`₦${thousand(form.taleemFee)}`}\n
\n Ijtema Fee\n \n {`₦${thousand(form.ijtemaFee)}`}\n
\n Tabligh\n \n {`₦${thousand(form.tablighFee)}`}\n
\n Landing and Building\n \n {`₦${thousand(form.landAndBuildingFee)}`}\n
\n Vehicle\n \n {`₦${thousand(form.vehicleFee)}`}\n
\n Atfal Subsidy\n \n {`₦${thousand(form.atfalSubsidyFee)}`}\n
\n Scholarship\n \n {`₦${thousand(form.scholarshipFee)}`}\n
\n MGQS\n \n {`₦${thousand(form.mgqsFee)}`}\n
\n Total\n \n {`₦${thousand(this.getSumAmount())}`}\n
\n
\n
\n\n\n
\n\n \n {\"Transaction Summary\"}\n \n \n Jazakallah Khairan. You have now successfully initiated a payment.\n Please proceed to pay online\n \n \n \n\n {/**/}\n {/* {({initializePayment}) => }*/}\n {/**/}\n \n \n\n {\n window.location = '/dashboard'\n }}\n aria-labelledby=\"payment-success\"\n aria-describedby=\"payment-success-description\">\n {\"Transaction Complete\"}\n \n \n Jazakallah Khairan. You payment has been received.\n Check the payment request table on dashboad page to know when approved\n \n \n \n\n \n \n \n \n \n\n {\n this.setState({\n showAddEmail: false\n })\n }}\n aria-labelledby=\"payment-success\"\n aria-describedby=\"payment-success-description\">\n No Email on your profile\n \n \n
\n \n\n
\n \n\n\n
\n
\n\n
\n
\n \n\n \n \n \n \n \n\n
\n
\n
\n )\n }\n\n getStepContent(stepIndex) {\n const {\n form,\n monthsList,\n selected,\n paymentTypes, chandaFee, welfareFee, sportFee, taleemFee, tablighFee, landAndBuildingFee, mgqsFee,\n vehicleFee, atfalSubsidyFee, scholarshipFee, years, months, ijtemaFee, open, banks, bankAccountAccount, beneficiary, paymentType, paymentYear, paymentMonth\n } = this.state;\n const fees = {\n 'Chanda': chandaFee,\n 'welfare': welfareFee,\n 'sport': sportFee,\n 'taleem': taleemFee,\n 'tabligh': tablighFee,\n 'land And Building': landAndBuildingFee,\n 'vehicle': vehicleFee,\n 'atfalSubsidy': atfalSubsidyFee,\n 'scholarship': scholarshipFee,\n 'ijtema': ijtemaFee,\n 'mgqsFee': mgqsFee\n }\n const total = Object.values(fees).reduce((a, b) => parseInt(a) + parseInt(b)\n )\n\n const {data, isLoading} = this.props.paymentTemplate;\n\n // const config = this.getConfig(beneficiary?.email, total * 100)\n //\n //\n // const componentProps = {\n // ...config,\n // text: 'Maal Portal',\n // onSuccess: (reference) => this.onSuccess(reference),\n // onClose: () => null\n // };\n switch (stepIndex) {\n case 0:\n return (\n data ?\n this.renderPaymentForm()\n :\n\n
\n Cannot get payment template, reload page\n\n
\n )\n case 1:\n return (\n this.renderPaymentMethods()\n )\n case 2:\n return (\n this.getSteps().length > 3 ?\n\n this.renderPaymentDescription()\n\n :\n\n this.renderSummary()\n )\n case 3:\n return (\n this.renderSummary()\n )\n\n }\n }\n\n getMembers() {\n this.setState({\n loading: true\n });\n http.get(endpoints.GET_MEMBER\n )\n .then(response => {\n this.setState({\n error: false,\n loading: false,\n members: response.data.content,\n });\n\n })\n .catch(error => {\n this.setState({\n loading: false,\n error: true\n });\n let errorMessage =\n (typeof error === \"string\" && error) ||\n \"An error occured, please try again in a moment.\";\n\n // const Toast = Swal.mixin({\n // toast: true,\n // position: \"top-end\",\n // showConfirmButton: false,\n // timer: 3000\n // });\n //\n // Toast.fire({\n // icon: \"error\",\n // title: errorMessage\n // });\n });\n }\n\n\n handleNext() {\n if (this.state.activeStep === 0) {\n var form = Object.assign({}, this.state.form);\n let sum = 0;\n\n [\n 'atfalSubsidyFee',\n 'chandaFee',\n 'ijtemaFee',\n 'landAndBuildingFee',\n 'mgqsFee',\n 'scholarshipFee',\n 'sportFee',\n 'tablighFee',\n 'taleemFee',\n 'vehicleFee',\n 'welfareFee',\n ].forEach((name) => {\n let value = form[name];\n\n if (value !== '') {\n sum += parseInt(value);\n form[name] = value;\n } else {\n form[name] = '0';\n }\n });\n\n this.setState({\n form,\n transactionAmount: sum.toString()\n })\n\n\n }\n\n this.setState((state) => {\n return {activeStep: state.activeStep + 1}\n })\n\n }\n\n handleBack() {\n this.setState((state) => {\n return {activeStep: state.activeStep - 1}\n })\n }\n\n handleChange = event => {\n event.persist();\n this.setState({[event.target.name]: event.target.value});\n\n };\n\n handleOnTextChange(field, input) {\n const {name, value} = input.target;\n var form = Object.assign({}, this.state.form);\n form[field] = value;\n this.setState({form});\n console.log(form)\n }\n\n handleSelectMonth = selected => {\n console.log(selected)\n this.setState({selected});\n var months = []\n for (var key in selected) {\n months.push(selected[key].value)\n console.log(selected[key].value)\n // ...\n }\n\n console.log(months)\n\n var form = Object.assign({}, this.state.form);\n form['paymentMonthList'] = months;\n form.paymentMonth = months[0];\n this.setState({form});\n\n };\n\n handleError = () => {\n let isValid = this.form.isFormValid()\n isValid.then((r) => {\n if (r) this.setState({disabled: false});\n })\n\n };\n\n determineSubmition() {\n const {paymentType} = this.state;\n const {auth} = this.props;\n\n console.log(auth.data.user.email);\n //online payment\n if (paymentType === \"1\") {\n if (auth.data.user.email !== '') {\n this.handleSubmit();\n } else {\n this.setState({\n showAddEmail: true,\n });\n }\n } else {\n this.handleSubmit();\n }\n }\n\n\n handleSubmit() {\n if (this.state.activeStep !== this.getSteps().length - 1) {\n return\n }\n\n const {\n form,\n bankAccountId,\n paymentType,\n narration,\n dateOf,\n receiptURL,\n email\n } = this.state\n\n\n form.narration = narration\n\n var req = {\n bankAccountId: bankAccountId,\n paymentType: paymentType,\n transactionAmount: this.getSumAmount(),\n narration: narration,\n details: [form],\n receiptURL: receiptURL,\n dateOf: dateOf,\n callBackUrl: callback_url\n }\n if (email !== '') {\n req.email = email\n }\n this.setState({\n loading: true\n })\n http.post(endpoints.PAYMENT_REQUEST, req\n )\n .then(resp => {\n // this.setState({open: true})\n if (!resp.authorizationUrl) {\n this.setState({\n showTransactionDone: true,\n });\n } else {\n this.setState({\n authorizationUrl: resp.authorizationUrl,\n\n });\n window.location = resp.authorizationUrl\n }\n this.setState({\n loading: false\n })\n\n\n })\n .catch(error => {\n this.setState({\n loading: false\n })\n console.log(error)\n let errorMessage =\n (typeof error === \"string\" && error) ||\n \"An error occured, please try again in a moment.\";\n toast.error(errorMessage)\n\n // const Toast = Swal.mixin({\n // toast: true,\n // position: \"top-end\",\n // showConfirmButton: false,\n // timer: 3000\n // });\n //\n // Toast.fire({\n // icon: \"error\",\n // title: errorMessage\n // });\n });\n\n\n }\n\n render() {\n const {steps, activeStep, disabled, loading} = this.state;\n return (\n \n
\n \n

Make Payment

\n {/*{this.getSteps().length}*/}\n {/*{activeStep}*/}\n
\n\n \n {this.getSteps().map((label) => (\n \n {label}\n \n ))}\n \n
{this.getStepContent(activeStep)}
\n
\n {\n activeStep === 0 ? '' : this.handleBack()}>Back\n }\n\n {\n activeStep === this.getSteps().length - 1 ?\n :\n !this.isValidField() ?\n \n : \n }\n\n\n
\n\n {/**/}\n \n
\n
\n
\n );\n }\n}\n\n\n// map store state to component props\nconst mapStateToProps = (state) => {\n // get required state from store state\n var {auth, paymentTemplate} = state;\n // return state\n return {\n auth,\n paymentTemplate,\n };\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return bindActionCreators(\n {\n getPaymentTemplate: ActionCreators.getPaymentTemplate,\n },\n dispatch,\n );\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Pay);\n","import React, {Component} from 'react';\nimport {endpoints, http} from '../../configs/http';\nimport {toast, ToastContainer} from \"react-toastify\";\nimport {NavLink} from \"react-router-dom\";\nimport {Loader} from \"react-overlay-loader\";\nimport {MuiPickersUtilsProvider} from \"@material-ui/pickers\";\nvar qs = require('qs');\n\nclass Verify extends Component {\n constructor() {\n super();\n this.state = {\n\n loading: false,\n\n verified: false,\n failure: false\n\n\n\n\n\n };\n\n }\n componentDidMount() {\n // console.log(qs.parse(this.props.location.search, { ignoreQueryPrefix: true }).search)\n console.log(qs.parse(this.props.location.search, { ignoreQueryPrefix: true }).trxref)\n\n\n\n this.verifyTransaction()\n\n }\n\n verifyTransaction(){\n let trxref = qs.parse(this.props.location.search, { ignoreQueryPrefix: true }).trxref\n\n if(!trxref){\n return\n }\n this.setState({\n loading: true,\n failure: false\n })\n\n http\n .get(endpoints.VERIFY_PAYMENT.replace(':reference', trxref).replace(':trxref',trxref))\n .then(async (resp) => {\n console.log(resp);\nconsole.log(resp.responseCode )\n if (resp.responseCode !== \"FAILED\") {\n this.setState({\n loading: false,\n verified: true,\n failure: false,\n })\n }\n else{\n this.setState({\n loading: false,\n verified: false,\n failure: true\n })\n }\n\n })\n .catch((error) => {\n let errorMessage =\n (typeof error === 'string' && error) ||\n 'An error occured, please try again in a moment.';\n // alert(JSON.stringify(error));\n console.log(errorMessage);\n toast.error(errorMessage)\n this.setState({\n loading: false,\n failure: true,\n verified: false,\n })\n });\n }\n\n render() {\n const {loading, verified, failure} = this.state\n return (\n
\n \n {verified &&\n
\n
\n
\n

Success

\n \n

Jazakhumullahu Khayran

\n

Your payment has been confirmed

\n Proceed\n

\n
\n\n
\n
\n }\n\n {\n failure &&\n
\n
\n
\n

Verification failed

\n \n

Your payment was not verified

\n

Please click below button to try verifying again

\n this.verifyTransaction()}> Try again\n

\n
\n\n
\n
\n }\n\n \n
\n );\n }\n}\n\nexport default Verify;\n","import React, {Component} from 'react';\n\nclass ChandaCalculator extends Component {\n render() {\n return (\n
\n

Coming soon

\n
\n );\n }\n}\n\nexport default ChandaCalculator;\n","import React from 'react'\nimport {BrowserRouter as Router, Redirect, Route, Switch} from 'react-router-dom'\nimport Login from '../component/auth/Login'\nimport AuthContainer from '../layouts/Auth'\nimport DashboardContainer from '../layouts/Dashboard'\nimport Home from \"../component/Dashboard/Home\";\nimport PaymentHistory from \"../component/History/PaymentHistory\";\n\nimport {connect} from 'react-redux';\nimport {bindActionCreators} from 'redux';\nimport {ActionCreators} from '../../src/data/ActionCreators';\nimport Pay from \"../component/Pay/Pay\";\nimport Verify from \"../component/Pay/Verify\";\nimport ChandaCalculator from \"../component/More/ChandaCalculator\";\n\n\nexport const RootStack = (auth) => {\n\n return (\n \n \n {auth.auth.data === null ? (\n\n \n \n \n \n \n \n\n\n \n \n \n )\n :\n\n \n \n \n \n \n \n \n \n \n \n\n \n \n \n }\n\n \n\n \n \n )\n\n}\n\n// export default RootStack;\nconst mapStateToProps = (state) => {\n const {auth, isAuthorized,seenOnboarding} = state;\n return {auth, isAuthorized,seenOnboarding};\n};\n\nconst mapDispatchToProps = (dispatch) => {\n return bindActionCreators(\n {\n getAuthUser: ActionCreators.getAuthenticated,\n setUpAuthorized: ActionCreators.setUpAuthorized,\n logout: ActionCreators.logout,\n },\n dispatch,\n );\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(RootStack);\n","import React from \"react\";\nimport Routers from \"./router\";\nimport {Provider as StoreProvider} from 'react-redux';\nimport Store from './data/Store';\n\nfunction App() {\n return (\n \n
\n \n
\n
\n );\n}\n\nexport default App;\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}