import React, { Component } from 'react'; import { TextField, Typography } from '@material-ui/core'; import { DateTimePicker, KeyboardDatePicker, DatePicker } from "@material-ui/pickers"; import Autocomplete from '@material-ui/lab/Autocomplete'; import * as R from 'ramda' import format from "date-fns/format"; import localeID from "date-fns/locale/id" import api from "../../api"; import Images from '../../assets/Images'; import Constant from '../../library/Constant'; export default class CreateApprovalMatrix extends Component { constructor(props) { super(props) this.state = { userId: null, typeId: null, operatorId: null, order: '', approvedBy: null, types: null, operators: null, startDate: null, endDate: null, userData: [], value: null, date: new Date(), errorOrder: false, msgErrOrder: '', errorType: false, msgErrType: '', errorApproved: false, msgErrApproved: '', errorOperator: false, msgErrOperator: '', errorStartDate: false, errorEndDate: false, msgErrorStartDate: "", msgErrorEndDate: "" } } componentDidMount() { this.getUserData() this.getTypeData() this.getOperatorData() let date = format(new Date, 'yyyy-MM-dd') this.setState({ startDate: date, endDate: date }) } getUserData() { api.create().getApprovedByAM().then((response) => { if(response.data) { if (response.ok) { if (response.data.status == 'success') { let data = response.data.data let userData = data.map((item) => { return { user_id: item.user_id, fullname: item.fullname == null? "(NO_NAME)" : item.fullname } }) let defaultProps = { options: userData, getOptionLabel: (option) => option.fullname, }; this.setState({ approvedBy: defaultProps, userData: response.data.data}) } else { if (response.data.message.includes("Someone Logged In") || response.data.message.includes("Token Expired")) { this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => { setTimeout(() => { localStorage.removeItem(Constant.TOKEN) window.location.reload(); }, 1000); }) } else { this.setState({ alert: true, messageAlert: 'Approver Name: ' + response.data.message, tipeAlert: 'error' }) } } } else { this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' }) } } else { this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' }) } }) } getTypeData() { api.create().getTypeAM().then((response) => { if (response.data) { if (response.ok) { if (response.data.status == 'success') { let data = response.data.data let typeData = data.map((item) => { return { approval_type_id: item.approval_type_id, approval_type_name: item.approval_type_name } }) let typeProps = { options: typeData, getOptionLabel: (option) => option.approval_type_name, }; this.setState({ types: typeProps, typeData: response.data.data }) } else { if (response.data.message.includes("Someone Logged In") || response.data.message.includes("Token Expired")) { this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => { setTimeout(() => { localStorage.removeItem(Constant.TOKEN) window.location.reload(); }, 1000); }) } else { this.setState({ alert: true, messageAlert: 'Approval Type: ' + response.data.message, tipeAlert: 'warning' }) } } } else { this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' }) } } else { this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' }) } }) } getOperatorData() { api.create().getOperatorAM().then((response) => { if (response.data) { if (response.ok) { if (response.data.status == 'success') { let data = response.data.data let operatorData = data.map((item) => { return { operator_type_id: item.operator_type_id, operator_type_name: item.operator_type_name } }) let operatorProps = { options: operatorData, getOptionLabel: (option) => option.operator_type_name, }; this.setState({ operators: operatorProps, operatorData: response.data.data }) } else { if (response.data.message.includes("Someone Logged In") || response.data.message.includes("Token Expired")) { this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => { setTimeout(() => { localStorage.removeItem(Constant.TOKEN) window.location.reload(); }, 1000); }) } else { this.setState({ alert: true, messageAlert: 'Operator: ' + response.data.message, tipeAlert: 'warning' }) } } } else { this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' }) } } else { this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' }) } }) } handleChange(e, type) { let data = this.state let isDate = type !== '' ? true : false if (isDate && type == 'start_date') { this.setState({ startDate: format(e, 'yyyy-MM-dd'), endDate: null }, () => { this.clearError() // console.log(this.state.startDate) }) } else if (isDate && type == 'end_date') { this.setState({ endDate: format(e, 'yyyy-MM-dd')}, () => { this.clearError() // console.log(this.state.endDate) }) } else { // this.setState({...data, tempData: {...this.state.tempData, [e.target.name] : e.target.value}}) } } clearError() { this.setState({ errorOrder: false, msgErrOrder: "", errorType: false, msgErrType: '', errorApproved: false, msgErrApproved: '', errorOperator: false, msgErrOperator: '', errorStartDate: false, errorEndDate: false, msgErrorStartDate: "", msgErrorEndDate: "" }) } validasi() { if (R.isNil(this.state.typeId)) { this.setState({ errorType: true, msgErrType: 'Approval Type Cannot be Empty' }) } else if (R.isEmpty(this.state.order)) { this.setState({ errorOrder: true, msgErrOrder: 'Order Cannot be Empty'}) } else if (R.isNil(this.state.userId)) { this.setState({ errorApproved: true, msgErrApproved: 'Approver Name Cannot be Empty' }) } else if (R.isNil(this.state.operatorId)) { this.setState({ errorOperator: true, msgErrOperator: 'Operator Cannot be Empty. Please Choose - Option' }) } else if (R.isNil(this.state.startDate)) { this.setState({ errorStartDate: true, msgErrorStartDate: 'Valid From Cannot be Empty' }) } else if (R.isNil(this.state.endDate)) { this.setState({ errorEndDate: true, msgErrorEndDate: 'Valid To Cannot be Empty' }) } else { let payload = { "approval_type_id": this.state.typeId.approval_type_id, "orders": this.state.order, "user_id": this.state.userId.user_id, "operator_type_id": this.state.operatorId.operator_type_id, "start_date": this.state.startDate, "end_date": this.state.endDate } this.props.createAM(payload) } } render() { return (