import React from 'react'; import withStyles from "@material-ui/core/styles/withStyles"; import { styles } from './styles'; import Grid from '@material-ui/core/Grid'; import Paper from '@material-ui/core/Paper'; import Typography from '@material-ui/core/Typography'; import TextField from '@material-ui/core/TextField'; import Visibility from '@material-ui/icons/Visibility'; import VisibilityOff from '@material-ui/icons/VisibilityOff'; import Button from '@material-ui/core/Button'; import Hidden from '@material-ui/core/Hidden'; import InputAdornment from '@material-ui/core/InputAdornment'; import IconButton from '@material-ui/core/IconButton'; import CircularProgress from '@material-ui/core/CircularProgress'; import Snackbar from '@material-ui/core/Snackbar'; import { Link } from 'react-router-dom' import { inject, observer } from "mobx-react"; import schema from 'async-validator' import { startCase } from 'lodash'; import { Upload, Icon, message } from 'antd'; import AutoComplete from './../../components/AutoComplete'; import {appConfig} from "../../config/app"; import {LINKS} from "../../routes"; // const province = require("./../../../../assets/data/province.json"); // const city = require("./../../../../assets/data/city.json"); // const district = require("./../../../../assets/data/district.json"); // const subdistrict = require("./../../../../assets/data/subdistrict.json"); @inject('appstate') @observer class RegisterPage extends React.Component { state = { showPassword: false, showConfirmPassword: false, openDialog: false, isLoading: false, fileList_ktp: [], fileList_photo: [], query: {}, errors: { email_exists: '', phone_exists: '', }, // form confirmPassword: "", phone_number: "", email: "", password: "", full_name: "", no_ktp: '', upload_ktp: '', upload_photo: '', address: '', province: '', city: '', district: '', sub_district: '', zip_code: '', }; constructor(props) { super(props); this.authStore = props.appstate.auth; this.http = props.appstate.http; this.place = props.appstate.places; } componentDidMount() { let {location:{search}} = this.props; search = search.substr(1); const query = search.split("&") .map(q => q.split('=')) .reduce((all, q) => { all[q[0]] = q[1]; return all; }, {}); this.setState({query}); this.place.getAllProvince(); } onChangeProvince = (value) => { this.setState({ province: value }); this.place.getCitiesByProvince(value); }; onChangeCity = (value) => { this.setState({ city: value }); this.place.getDistrictByCity(value); }; onChangeDistrict = (value) => { this.setState({ district: value }); this.place.getSubdistrictByDistrict(value); }; onChangeSubdistrict = (value) => { this.setState({ subdistrict: value }); }; handleChange = name => event => { this.setState({ [name]: event.target.value, }); }; viewPassword = () => { this.setState({ showPassword: !this.state.showPassword }) }; viewConfirmPassword = () => { this.setState({ showConfirmPassword: !this.state.showConfirmPassword }) }; register = () => { // return this.props.history.push(LINKS.LOGIN); // if (this.state.password.length < 8) { // return message.warning("password need atleast 8 characters"); // } // if (this.state.upload_photo === '') { // return message.warning("please upload photo"); //} // if (this.state.phone_number === '') { return this.setState({ errors: { ...this.state.errors, phone_exists: 'Harap isi nomor handphone anda' } }) } if (this.state.email === '') { return this.setState({ errors: { ...this.state.errors, email_exists: 'Harap isi email anda' } }) } this.setState({ isLoading: true }); let data = { fullname: this.state.full_name, email: this.state.email, phone_number: this.state.phone_number, password: this.state.password, nric_number: this.state.no_ktp, // nric_photo_path: this.state.upload_ktp, // photo: this.state.upload_photo, // address: this.state.address, // province_id: this.state.province, // city_id: this.state.city, // district_id: this.state.district, // subdistrict_id: this.state.subdistrict, // zip_code: this.state.zip_code, referal: this.state.query.referal, additional_data: {} }; this.authStore.register(data).then(res => { //message.success("Please check your email to confirm your account");this.props.history.push(LINKS.LOGIN); setTimeout(() => { this.setState({ isLoading: false }); this.props.history.push(LINKS.REGISTER_COMPLETED); // this.props.history.push(LINKS.LOGIN); }, 250); }).catch(err => { this.setState({ isLoading: false }); if (err.type === 'BodyValidationError') { message.error(err.detail[0].message); } else { if (err.message.toLowerCase().includes('email')) { this.setState({ errors: { ...this.state.errors, email_exists: 'Email sudah terdaftar' } }) } else if (err.message.toLowerCase().includes('phone number')) { this.setState({ errors: { ...this.state.errors, phone_exists: 'Nomer handphone sudah terdaftar' } }) } // message.error(err.message); } }); }; handleChangeUploadKtp = (info) => { if (info.file.status === 'uploading') { this.setState({ loading: true }); return; } if (info.file.status === 'done') { // Get this url from response in real world. getBase64(info.file.originFileObj, imageUrl => this.setState({ upload_ktp, loading: false, })); } }; handleChangeUploadPhoto = (info) => { if (info.file.status === 'uploading') { this.setState({ loading: true }); return; } if (info.file.status === 'done') { // Get this url from response in real world. getBase64(info.file.originFileObj, imageUrl => this.setState({ upload_photo, loading: false, })); } }; uploadOnChange = (key, info) => { let fileList = info.fileList; this.setState({ [`fileList_${key}`]: fileList }) }; createUploadProps = (key) => { return { name: 'file', multiple: false, action: appConfig.apiUrl + 'upload', customRequest: ({file, onProgress, onSuccess}) => { this.setState({ uploading: true }); this.http.upload(file) .then(res => { this.setState({ [`upload_${key}`]: appConfig.apiUrl + res.path.slice(1,res.path.length) }); return res; }) .then(res => { message.success(`${file.name} file uploaded successfully.`); const fileList = this.state[`fileList_${key}`]; console.log(key, fileList, this.state); const selectedIndex = fileList.findIndex(f => f.name === file.name); fileList[selectedIndex].status = "done"; fileList[selectedIndex].path = res.path; onSuccess(fileList[selectedIndex]); // form.setFieldsValue({path: res.path}); this.setState({ uploading: false, // fileList: [] [`fileList_${key}`]: [fileList[selectedIndex]] }); }); return { abort: () => {} } }, fileList: this.state[`fileList_${key}`], onChange: (info) => this.uploadOnChange(key, info), onRemove: file => true }; }; render() { const { classes } = this.props; const uploadButtonKtp = (