import React, { Component } from 'react'; import { TextField, Typography } from '@material-ui/core'; import Autocomplete from '@material-ui/lab/Autocomplete'; import api from '../../../api'; import { DatePicker } from '@material-ui/pickers'; import { format } from 'date-fns'; import * as R from 'ramda' import Images from '../../../assets/Images'; import Constant from '../../../library/Constant'; export default class CreateParameter extends Component { constructor(props) { super(props) this.state = { enableParameter: false, id: '', description: '', value: '', order: null, minValue: '', maxValue: '', startDate: '', endDate: null, date: new Date(), approvedBy: null, getApprovedBy: null, types: null, getTypes: null, perusahaan: null, getPerusahaan: null, parameter: null, getParameter: null, operators: null, getOperators: null, tempData: null, errorParameter: false, errorDeskripsi: false, errorValue: false, errorMinValue: false, errorOrder: false, errorMaxValue: false, errorStartDate: false, errorEndDate: false, errorGroup: false, errorPerusahaan: false, msgErrorPerusahaan: '', msgErrorGroup: '', msgErrorParameter: '', msgErrorDeskripsi: '', msgErrorValue: '', msgErrorMinValue: '', msgErrorOrder: '', msgErrorMaxValue: '', msgErrorStartDate: '', msgErrorEndDate: '' } } componentDidMount() { if (this.props.type === 'edit') { this.getDetailParameter() } else { let date = format(new Date, 'yyyy-MM-dd') this.setState({ startDate: date, endDate: date }) this.getDataGroup() this.getDataPerusahaan() } } getDetailParameter() { api.create().getDetailParameter(this.props.data[0]).then((response) => { // console.log(response); if (response.data) { if (response.ok) { if (response.data.status === 'success') { let data = response.data.data this.setState({ tempData: response.data.data, getSettingGroupID: response.data.data.setting_group_id, getCompanyID: data.company_id, settingType: data.setting_type, getSettingTypeID: data.setting_type_id }, () => { this.getAllGroup() this.getPerusahaan() // console.log(this.state.tempData) }) } 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.data.message, tipeAlert: 'error' }) } } else { this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' }) } }) } getAllGroup() { api.create().getAllGroup().then(response => { // console.log(response); if (response.data) { if (response.ok) { if (response.data.status == 'success') { let data = response.data.data let typeData = data.map((item) => { return { setting_group_id: item.setting_group_id, setting_group_name: item.setting_group_name } }) let index = typeData.findIndex((val) => val.setting_group_id == this.state.getSettingGroupID) let typeProps = { options: typeData, getOptionLabel: (option) => option.setting_group_name, }; this.setState({ types: typeProps, typeData: response.data.data, getTypes: index == -1 ? typeData[0] : typeData[index] }, () => { this.getParameterByGroup(this.state.getTypes.setting_group_id) }) } 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.data.message, tipeAlert: 'error' }) } } else { this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' }) } }) } getPerusahaan() { api.create().getPerusahaanActive().then(response => { if (response.data) { if (response.ok) { if (response.data.status == 'success') { let data = response.data.data let perusahaanData = data.map((item) => { return { company_id: item.company_id, company_name: item.company_name } }) perusahaanData.push({ company_id: 0, company_name: 'Default' }) let index = perusahaanData.sort((a, b) => a.company_id - b.company_id).findIndex((val) => val.company_id == this.state.getCompanyID) let typeProps = { options: perusahaanData, getOptionLabel: (option) => option.company_name, }; this.setState({ perusahaan: typeProps, perusahaanData: response.data.data, getPerusahaan: index == -1 ? null : perusahaanData[index], msgErrorPerusahaan: index === -1 ? 'Company has been Inactive' : "", errorPerusahaan: index === -1 ? true : false }) } 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.data.message, tipeAlert: 'error' }) } } else { this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' }) } }) } getDataGroup() { api.create().getAllGroup().then((response) => { if (response.data) { if (response.ok) { if (response.data.status == 'success') { let data = response.data.data let typeData = data.map((item) => { return { setting_group_id: item.setting_group_id, setting_group_name: item.setting_group_name } }) let typeProps = { options: typeData, getOptionLabel: (option) => option.setting_group_name, }; this.setState({ types: typeProps, typeData: 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.data.message, tipeAlert: 'error' }) } } else { this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' }) } }) } getDataPerusahaan() { api.create().getPerusahaanActive().then((response) => { if (response.data) { if (response.ok) { 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_id - b.company_id), 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.data.message, tipeAlert: 'error' }) } } else { this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' }) } }) } getParameterByGroup(id) { api.create().getParameterByGroup(id).then(response => { // console.log(id, response); if (response.data) { if (response.ok) { if (response.data.status == 'success') { let data = response.data.data let typeData = data.map((item) => { return { setting_type_id: item.setting_type_id, setting_type_name: item.setting_type_name } }) let index = typeData.findIndex((val) => val.setting_type_id == this.state.getSettingTypeID) let typeProps = { options: typeData, getOptionLabel: (option) => option.setting_type_name, }; this.setState({ enableParameter: true, parameter: typeProps, parameterData: response.data.data, getParameter: index == -1 ? null : typeData[index] }) } 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.data.message, 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({ ...data, tempData: { ...this.state.tempData, start_date: format(e, 'yyyy-MM-dd'), end_date: null }, errorParameter: false, errorDeskripsi: false, errorValue: false, errorMinValue: false, errorOrder: false, errorMaxValue: false, errorStartDate: false, errorEndDate: false, errorGroup: false, errorPerusahaan: false, msgErrorPerusahaan: '', msgErrorGroup: '', msgErrorParameter: '', msgErrorDeskripsi: '', msgErrorValue: '', msgErrorMinValue: '', msgErrorOrder: '', msgErrorMaxValue: '', msgErrorStartDate: '', msgErrorEndDate: '' }) } else if (isDate && type == 'end_date') { this.setState({ ...data, tempData: { ...this.state.tempData, end_date: format(e, 'yyyy-MM-dd') }, errorParameter: false, errorDeskripsi: false, errorValue: false, errorMinValue: false, errorOrder: false, errorMaxValue: false, errorStartDate: false, errorEndDate: false, errorGroup: false, errorPerusahaan: false, msgErrorPerusahaan: '', msgErrorGroup: '', msgErrorParameter: '', msgErrorDeskripsi: '', msgErrorValue: '', msgErrorMinValue: '', msgErrorOrder: '', msgErrorMaxValue: '', msgErrorStartDate: '', msgErrorEndDate: '' }) } else { this.setState({ ...data, tempData: { ...this.state.tempData, [e.target.name]: e.target.value }, errorParameter: false, errorDeskripsi: false, errorValue: false, errorMinValue: false, errorOrder: false, errorMaxValue: false, errorStartDate: false, errorEndDate: false, errorGroup: false, errorPerusahaan: false, msgErrorPerusahaan: '', msgErrorGroup: '', msgErrorParameter: '', msgErrorDeskripsi: '', msgErrorValue: '', msgErrorMinValue: '', msgErrorOrder: '', msgErrorMaxValue: '', msgErrorStartDate: '', msgErrorEndDate: '' }) } } clearMessage() { this.setState({ errorParameter: false, errorDeskripsi: false, errorValue: false, errorMinValue: false, errorOrder: false, errorMaxValue: false, errorStartDate: false, errorEndDate: false, errorGroup: false, errorPerusahaan: false, msgErrorPerusahaan: '', msgErrorGroup: '', msgErrorParameter: '', msgErrorDeskripsi: '', msgErrorValue: '', msgErrorMinValue: '', msgErrorOrder: '', msgErrorMaxValue: '', msgErrorStartDate: '', msgErrorEndDate: '' }) } handleChangeCreate(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 }, () => { // console.log(this.state.startDate) }) } else if (isDate && type == 'end_date') { this.setState({ endDate: format(e, 'yyyy-MM-dd') }, () => { // console.log(this.state.endDate) }) } else { this.setState({ ...data, [e.target.name]: e.target.value }, () => this.clearMessage()) } } validasi() { if (R.isNil(this.state.getTypes)) { this.setState({ errorGroup: true, msgErrorGroup: 'Group Cannot be Empty' }) } else if (R.isNil(this.state.getParameter)) { this.setState({ errorParameter: true, msgErrorParameter: 'Parameter Cannot be Empty' }) } else if (R.isNil(this.state.getPerusahaan)) { this.setState({ errorPerusahaan: true, msgErrorPerusahaan: 'Company Cannot be Empty' }) // } else if (R.isEmpty(this.state.tempData.description)) { // this.setState({ errorDeskripsi: true, msgErrorDeskripsi: 'Deskripsi tidak boleh kosong' }) } else if (R.isEmpty(this.state.tempData.value) && R.isEmpty(this.state.tempData.min_value) && R.isEmpty(this.state.tempData.max_value)) { this.setState({ errorValue: true, msgErrorValue: 'Value Cannot be Empty' }) } else if ((!R.isEmpty(this.state.tempData.max_value) && R.isEmpty(this.state.tempData.min_value))) { this.setState({ errorMinValue: true, msgErrorMinValue: 'Min Value Cannot be Empty' }) } else if (R.isNil(this.state.tempData.start_date)) { this.setState({ errorStartDate: true, msgErrorStartDate: 'Valid From Cannot be Empty' }) // } else if (R.isNil(this.state.tempData.order)) { // this.setState({ errorOrder: true, msgErrorOrder: 'Order tidak boleh kosong' }) } else if ((!R.isEmpty(this.state.tempData.min_value) && R.isEmpty(this.state.tempData.max_value))) { this.setState({ errorMaxValue: true, msgErrorMaxValue: 'Max Value Cannot be Empty' }) } else if (R.isNil(this.state.tempData.end_date)) { this.setState({ errorEndDate: true, msgErrorEndDate: 'Valid To Cannot be Empty' }) } else { this.updateParameter() } } validasiCreate() { if (R.isNil(this.state.getTypes)) { this.setState({ errorGroup: true, msgErrorGroup: 'Group Cannot be Empty' }) } else if (R.isNil(this.state.getParameter)) { this.setState({ errorParameter: true, msgErrorParameter: 'Parameter Cannot be Empty' }) } else if (R.isNil(this.state.getPerusahaan)) { this.setState({ errorPerusahaan: true, msgErrorPerusahaan: 'Company Cannot be Empty' }) // } else if (R.isEmpty(this.state.description)) { // this.setState({ errorDeskripsi: true, msgErrorDeskripsi: 'Deskripsi tidak boleh kosong' }) } else if ((R.isEmpty(this.state.value) && R.isEmpty(this.state.maxValue) && R.isEmpty(this.state.minValue))) { this.setState({ errorValue: true, msgErrorValue: 'Value Cannot be Empty' }) } else if ((!R.isEmpty(this.state.maxValue) && R.isEmpty(this.state.minValue))) { this.setState({ errorMinValue: true, msgErrorMinValue: 'Min Value Cannot be Empty' }) } else if (R.isNil(this.state.startDate)) { this.setState({ errorStartDate: true, msgErrorStartDate: 'Valid From Cannot be Empty' }) // } else if (R.isNil(this.state.order)) { // this.setState({ errorOrder: true, msgErrorOrder: 'Order tidak boleh kosong' }) } else if ((!R.isEmpty(this.state.minValue) && R.isEmpty(this.state.maxValue))) { this.setState({ errorMaxValue: true, msgErrorMaxValue: 'Max Value Cannot be Empty' }) } else if (R.isNil(this.state.endDate)) { this.setState({ errorEndDate: true, msgErrorEndDate: 'Valid To Cannot be Empty' }) } else { this.createParameter() } } updateParameter() { let body = { "setting_id": this.state.tempData.setting_id, "setting_group_id": this.state.getTypes.setting_group_id, "setting_type_id": this.state.getParameter.setting_type_id, "company_id": this.state.getPerusahaan.company_id, "description": this.state.tempData.description, "orders": this.state.tempData.order, "value": this.state.tempData.value, "max_value": this.state.tempData.max_value, "min_value": this.state.tempData.min_value, "start_date": this.state.tempData.start_date, "end_date": this.state.tempData.end_date } // console.log(body); this.props.updateParameter(body) } createParameter() { let body = { "setting_group_id": this.state.getTypes.setting_group_id, "setting_type_id": this.state.getParameter.setting_type_id, "company_id": this.state.getPerusahaan.company_id, "description": this.state.description, "orders": this.state.order, "value": this.state.value, "max_value": this.state.maxValue, "min_value": this.state.minValue, "start_date": this.state.startDate, "end_date": this.state.endDate } // console.log(body); this.props.createParameter(body) } render() { let { type } = this.props return type === 'edit' ? this.renderEdit() : this.renderCreate() } renderEdit() { return (