import React, { Component } from 'react' import Images from '../../assets/Images' import { TextField, withStyles, Snackbar } from '@material-ui/core' import MuiAlert from '@material-ui/lab/Alert'; import api from '../../api' import Autocomplete from '@material-ui/lab/Autocomplete' import Constant from '../../library/Constant' import { format } from 'date-fns'; import UploadFile from "../../library/Upload"; import { ExcelRenderer } from 'react-excel-renderer'; import * as R from 'ramda' import PropagateLoader from "react-spinners/PropagateLoader" const Alert = withStyles({ })((props) => ); export default class CreateManagementDoc extends Component { constructor(props) { super(props) this.state = { perusahaan: null, perusahaanData: null, getPerusahaan: null, errorPerusahaan: false, msgErrorPerusahaan: '', document: null, documentData: null, getDocument: null, errorDocument: false, msgErrorDocument: '', listPeriode: null, periode: null, errorPeriode: false, msgErrorPeriode: '', listMonth: null, monthId: null, errorMonth: false, msgErrorMonth: '', description: '', errorDesc: false, msgErrorDesc: '', file: null, alert: false, tipeAlert: '', messageAlert: '', fileType: '', konfirmasi: false, docId: '', sizeUpload: "1", disabledPeriode: false } } componentDidMount() { this.getDataCompany() this.getDataDocument() this.getPeriode() this.getMonth() this.getFileSize() } getFileSize() { let body = { group: 'MAX_FILE_SIZE', company_id: 0, type: 'MAX_FILE_SIZE' } api.create().getAllSettingByType(body).then(response => { // console.log(response); if (response.data) { if (response.data.status === "success") { if (response.data.data.length == 0) { this.setState({ sizeUpload: "1" }) } else { this.setState({ sizeUpload: response.data.data[0].value }) } // sizeUpload: response.data.data[0] ? response.data.data[0].value === undefined ? "1" : response.data.data[0].value : "1" } else { this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning', loading: false }, () => { if (response.data.message.includes("Someone Logged In") || response.data.message.includes("Token Expired")) { setTimeout(() => { localStorage.removeItem(Constant.TOKEN) window.location.reload(); }, 1000); } }) } } }) } getDataCompany() { api.create().getPerusahaanUserActive().then((response) => { if (response.data) { if (response.data.status == 'success') { let data = response.data.data let typeData = data.map((item) => { return { company_id: item.company_id, company_name: item.company_name } }) // typeData.push({ // company_id: 0, // company_name: 'Default' // }) let typeProps = { options: typeData.sort((a, b) => a.company_name - b.company_name), getOptionLabel: (option) => option.company_name, }; this.setState({ perusahaan: typeProps, perusahaanData: response.data.data }) } else { this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => { if (response.data.message.includes("Someone Logged In") || response.data.message.includes("Token Expired")) { setTimeout(() => { localStorage.removeItem(Constant.TOKEN) window.location.reload(); }, 1000); } }) } } else { this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' }) } }) } getDataDocument() { // let payload = { // "setting_group_id": 7, // "setting_type_id": 167, // "company_id": 0 // } api.create().getDocumentCategory().then(response => { // console.log(response); if (response.data) { if (response.data.status == 'success') { let data = response.data.data let typeData = [] data.map((item) => { if (String(item.value).toLocaleLowerCase().includes('manual book tia')){ if( this.props.allsubcoCreate ){ typeData.push( { document_category_id: item.setting_id, document_category_name: item.value }) } } else { typeData.push( { document_category_id: item.setting_id, document_category_name: item.value }) } }) // console.log(typeData) let typeProps = { options: typeData.sort((a, b) => a.document_category_id - b.document_category_id), getOptionLabel: (option) => option.document_category_name, }; this.setState({ document: typeProps, documentData: response.data.data }) } else { this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => { if (response.data.message.includes("Someone Logged In") || response.data.message.includes("Token Expired")) { setTimeout(() => { localStorage.removeItem(Constant.TOKEN) window.location.reload(); }, 1000); } }) } } else { this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' }) } }) } getPeriode() { api.create().getPeriodeTransaction().then(response => { let dateNow = new Date let year = format(dateNow, 'yyyy') if (response.data) { if (response.data.status === "success") { let data = response.data.data let periodeData = data.map((item) => { return { periode: item, } }) let defaultProps = { options: periodeData, getOptionLabel: (option) => option.periode, }; let index = data.sort((a, b) => a - b).findIndex((val) => val == year) this.setState({ listPeriode: defaultProps, periode: index == -1 ? periodeData[0] : periodeData[index] }) } else { this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning', loading: false }, () => { if (response.data.message.includes("Someone Logged In") || response.data.message.includes("Token Expired")) { setTimeout(() => { localStorage.removeItem(Constant.TOKEN) window.location.reload(); }, 1000); } }) } } }) } getMonth() { api.create().getMonthTransaction().then(response => { let dateNow = new Date // let bulan = format(dateNow, 'MMMM') if (response.data) { if (response.data.status === "success") { let data = response.data.data let monthData = data.map((item) => { return { month_id: item.month_id, month_name: item.month_name } }) let defaultProps = { options: monthData, getOptionLabel: (option) => option.month_name, }; // let index = data.sort((a, b) => a - b).findIndex((val) => val == bulan) // this.setState({ listMonth: defaultProps, month: index == -1 ? monthData[0] : monthData[index] }) this.setState({ listMonth: defaultProps }) } else { this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning', loading: false }, () => { if (response.data.message.includes("Someone Logged In") || response.data.message.includes("Token Expired")) { setTimeout(() => { localStorage.removeItem(Constant.TOKEN) window.location.reload(); }, 1000); } }) } } }) } clearMessage() { this.setState({ errorPerusahaan: false, msgErrorPerusahaan: '', errorDocument: false, msgErrorDocument: '', errorMonth: false, msgErrorMonth: '', errorPeriode: false, msgErrorPeriode: '', }) } fileHandler = (event) => { let fileObj = event let length = event.name.split(".").length let fileType = event.name.split(".")[length - 1] if (fileType === 'zip' || 'rar') { this.setState({ file: event, fileType: String(fileType) }) } else { ExcelRenderer(fileObj, (err, resp) => { // console.log(fileType) if (err) { // console.log(err); } else { this.setState({ file: event, fileType: String(fileType) }) } }) } } validasi() { if (this.state.disabledPeriode === true) { if (R.isNil(this.state.getDocument)) { this.setState({ errorDocument: true, msgErrorDocument: 'Category Cannot be Empty' }) } else if (R.isNil(this.state.file)) { this.setState({ alert: true, messageAlert: 'File Cannot be Empty', tipeAlert: 'warning' }) } else { const formData = new FormData(); formData.append("file", this.state.file); formData.append("companyId", 1); formData.append("settingId", this.state.getDocument.document_category_id); formData.append("description", this.state.description); formData.append("extension", this.state.fileType); formData.append("documentPeriode", null); formData.append("documentMonth", null); this.setState({ formData }, () => { this.props.createDocument(this.state.formData, this.props.setting_id, this.props.name) }) var object = {}; formData.forEach(function (value, key) { object[key] = value; }); var json = JSON.stringify(object); // console.log(object) } } else { if (R.isNil(this.state.getPerusahaan)) { this.setState({ errorPerusahaan: true, msgErrorPerusahaan: 'Company Cannot be Empty' }) } else if (R.isNil(this.state.getDocument)) { this.setState({ errorDocument: true, msgErrorDocument: 'Category Cannot be Empty' }) } else if (R.isNil(this.state.periode)) { this.setState({ errorPeriode: true, msgErrorPeriode: 'Period Cannot be Empty' }) } else if (R.isNil(this.state.monthId)) { this.setState({ errorMonth: true, msgErrorMonth: 'Month Cannot be Empty' }) } else if (R.isNil(this.state.file)) { this.setState({ alert: true, messageAlert: 'File Cannot be Empty', tipeAlert: 'warning' }) } else { const formData = new FormData(); formData.append("file", this.state.file); formData.append("companyId", this.state.getPerusahaan.company_id); formData.append("settingId", this.state.getDocument.document_category_id); formData.append("description", this.state.description); formData.append("extension", this.state.fileType); formData.append("documentPeriode", this.state.periode.periode); formData.append("documentMonth", this.state.monthId.month_id); this.setState({ formData }, () => { this.props.createDocument(this.state.formData, this.props.setting_id, this.props.name) }) } } this.props.handleLoading(0) } deleteFile(e) { this.setState({ file: null }) } closeAlert() { this.setState({ alert: false }) } render() { const loadingComponent = (
); return (
Create
{this.state.disabledPeriode === false ?
this.setState({ getPerusahaan: newInputValue }, () => this.clearMessage())} renderInput={(params) => } value={this.state.getPerusahaan} />
: true} {this.state.disabledPeriode === false ?
this.setState({ getDocument: newInputValue }, () => newInputValue === null ? this.setState({ disabledPeriode: false }) : newInputValue.document_category_name === 'Manual Book TIA 4.0' ? this.setState({ disabledPeriode: true }, () => this.clearMessage()) : this.setState({ disabledPeriode: false }, () => this.clearMessage()) )} renderInput={(params) => } value={this.state.getDocument} />
:
this.setState({ getDocument: newInputValue }, () => newInputValue === null ? this.setState({ disabledPeriode: false }) : newInputValue.document_category_name === 'Manual Book TIA 4.0' ? this.setState({ disabledPeriode: true }, () => this.clearMessage()) : this.setState({ disabledPeriode: false }, () => this.clearMessage()) )} renderInput={(params) => } value={this.state.getDocument} />
} {this.state.disabledPeriode === false ?
this.setState({ monthId: newInputValue }, () => this.clearMessage())} style={{ width: 250 }} renderInput={(params) => } value={this.state.monthId} />
: true} {this.state.disabledPeriode === false ?
this.setState({ periode: newInputValue }, () => this.clearMessage())} style={{ width: 250 }} renderInput={(params) => } value={this.state.periode} />
: true}
{ this.fileHandler(dt) this.setState({ uploadStatus: 'idle', percentage: '0' }) }} onDelete={(e) => { this.deleteFile(e) }} onUpload={() => alert('sukses')} sizeUpload={Number(this.state.sizeUpload)} />
{ this.setState({ description: e.target.value }) this.clearMessage() }} error={this.state.errorDesc} helperText={this.state.msgErrorDesc} >
this.closeAlert()}> this.closeAlert()} severity={this.state.tipeAlert}> {this.state.messageAlert}
) } }