UnitBisnis.js 39.6 KB
Newer Older
Deni Rinaldi's avatar
Deni Rinaldi committed
1 2 3 4 5
import React, { Component } from "react";
import { Container, Row, Col } from "react-bootstrap";
import { makeStyles, createMuiTheme, MuiThemeProvider } from '@material-ui/core/styles';
import SearchIcon from '@material-ui/icons/Search';
import Images from "../../assets/Images";
6
import UploadFile from "../../library/Upload";
Deni Rinaldi's avatar
Deni Rinaldi committed
7 8
import MUIDataTable from "mui-datatables";
import CreateUnitBisnis from "./formUnitBisnis/CreateUnitBisnis";
Deni Rinaldi's avatar
Deni Rinaldi committed
9
import ReactTooltip from 'react-tooltip';
Deni Rinaldi's avatar
Deni Rinaldi committed
10
import MuiAlert from '@material-ui/lab/Alert';
Deni Rinaldi's avatar
Deni Rinaldi committed
11
import { TextField, InputBase, Snackbar, withStyles, LinearProgress, Tooltip } from "@material-ui/core";
12 13
import { ExcelRenderer } from 'react-excel-renderer';
import api from "../../api";
Deni Rinaldi's avatar
Deni Rinaldi committed
14
import { isThisSecond } from "date-fns";
Deni Rinaldi's avatar
Deni Rinaldi committed
15
import PopUpFailedSave from "../../library/PopUpFailedSave";
Deni Rinaldi's avatar
Deni Rinaldi committed
16
import PopUpDelete from "../../library/PopUpDelete";
a.bairuha's avatar
a.bairuha committed
17
import Constant from "../../library/Constant";
d.arizona's avatar
d.arizona committed
18 19
import { css } from "@emotion/core";
import PropagateLoader from "react-spinners/PropagateLoader"
Deni Rinaldi's avatar
Deni Rinaldi committed
20

Deni Rinaldi's avatar
Deni Rinaldi committed
21 22 23 24 25 26 27 28 29
const LightTooltip = withStyles((theme) => ({
    tooltip: {
        backgroundColor: theme.palette.common.white,
        color: 'rgba(0, 0, 0, 0.87)',
        boxShadow: theme.shadows[1],
        fontSize: 11,
    },
}))(Tooltip);

Deni Rinaldi's avatar
Deni Rinaldi committed
30 31 32
var ct = require("../../library/CustomTable");
const getMuiTheme = () => createMuiTheme(ct.customTable());
const options = ct.customOptions();
Deni Rinaldi's avatar
Deni Rinaldi committed
33
const options2 = ct.customOptions2();
Deni Rinaldi's avatar
Deni Rinaldi committed
34

Deni Rinaldi's avatar
Deni Rinaldi committed
35 36 37
const Alert = withStyles({
})((props) => <MuiAlert elevation={6} variant="filled" {...props} />);

Deni Rinaldi's avatar
Deni Rinaldi committed
38 39 40 41
export default class UnitBisnis extends Component {
    constructor(props) {
        super(props)
        this.state = {
Deni Rinaldi's avatar
Deni Rinaldi committed
42 43
            visibleCreate: false,
            visibleEdit: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
44
            visibleDelete: false,
45 46
            dataTable: [],
            listData: [],
Deni Rinaldi's avatar
Deni Rinaldi committed
47 48 49 50 51
            data: [],
            search: "",
            visibleUnitBisnis: true,
            cols: null,
            rows: null,
Deni Rinaldi's avatar
Deni Rinaldi committed
52
            dataLoaded: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
53 54 55
            popupError: false,
            alert: false,
            tipeAlert: '',
Deni Rinaldi's avatar
Deni Rinaldi committed
56 57
            messageAlert: '',
            create: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
58
            edit: false,
d.arizona's avatar
d.arizona committed
59
            delete: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
60
            load: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
61
            judul: '',
Deni Rinaldi's avatar
Deni Rinaldi committed
62
            rowData: [],
d.arizona's avatar
d.arizona committed
63 64
            unitBisnisName: '',
            // visibleLoad: true,
65 66
            loading: false,
            sizeUpload: "1"
Deni Rinaldi's avatar
Deni Rinaldi committed
67
        }
68 69 70 71 72 73
        this.fileHandler = this.fileHandler.bind(this);
    }

    fileHandler = (event) => {
        let fileObj = event
        ExcelRenderer(fileObj, (err, resp) => {
Deni Rinaldi's avatar
Deni Rinaldi committed
74
            // console.log(resp)
Deni Rinaldi's avatar
Deni Rinaldi committed
75 76 77 78
            if (err) {
                console.log(err);
            }
            else {
Deni Rinaldi's avatar
1  
Deni Rinaldi committed
79
                let isi = resp.rows.slice(3)
Deni Rinaldi's avatar
Deni Rinaldi committed
80
                console.log(isi);
Deni Rinaldi's avatar
1  
Deni Rinaldi committed
81 82
                let payload = []
                isi.map((item, index) => {
Deni Rinaldi's avatar
Deni Rinaldi committed
83 84 85
                    if (item.length > 0) {
                        payload.push({
                            id: index + 1,
Deni Rinaldi's avatar
Deni Rinaldi committed
86 87 88
                            business_unit_name: item[0] === undefined ? "" : item[0],
                            start_date: item[1] == undefined ? "" : item[1],
                            end_date: item[2] === undefined ? "" : item[2],
Deni Rinaldi's avatar
Deni Rinaldi committed
89 90
                        })
                    }
Deni Rinaldi's avatar
1  
Deni Rinaldi committed
91 92 93 94
                })
                let body = {
                    business_unit: payload
                }
Deni Rinaldi's avatar
Deni Rinaldi committed
95 96
                console.log(resp.rows[1])
                this.setState({ payload: body, buttonError: false, judul: resp.rows[1][0] })
Deni Rinaldi's avatar
Deni Rinaldi committed
97 98 99 100
            }
        });
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
101
    checkUpload() {
Deni Rinaldi's avatar
Deni Rinaldi committed
102
        api.create().checkUploadUnitBisnis(this.state.payload).then(response => {
Deni Rinaldi's avatar
Deni Rinaldi committed
103
            // console.log(response)
Deni Rinaldi's avatar
Deni Rinaldi committed
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
            let dataRow = []
            if (response.data) {
                if (response.ok) {
                    if (response.data.status === "success") {
                        dataRow = response.data.data.map((item, index) => {
                            return [
                                item.business_unit_name,
                                item.start_date,
                                item.end_date,
                                item.error
                            ]
                        })
                        let columns = [
                            {
                                name: "Business Unit",
                                options: {
                                    customBodyRender: (val, tableMeta) => {
                                        let check = null
Deni Rinaldi's avatar
Deni Rinaldi committed
122 123
                                        if (tableMeta.rowData[3] != null) {
                                            check = tableMeta.rowData[3].findIndex((val) => val.field.includes('business_unit_name'))
Deni Rinaldi's avatar
Deni Rinaldi committed
124 125
                                            if (check > -1) {
                                                this.setState({ buttonError: true })
a.bairuha's avatar
a.bairuha committed
126
                                            }
Deni Rinaldi's avatar
Deni Rinaldi committed
127
                                        }
Deni Rinaldi's avatar
Deni Rinaldi committed
128 129
                                        return (
                                            <div style={{ display: 'flex' }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
130
                                                {tableMeta.rowData[3] != null && check > -1 ?
Deni Rinaldi's avatar
Deni Rinaldi committed
131
                                                    <LightTooltip title={tableMeta.rowData[3][check].message} arrow>
Deni Rinaldi's avatar
Deni Rinaldi committed
132
                                                        <span style={{ color: check != null && check > -1 ? "red" : 'black' }}>{val === "" ? "Empty" : val}</span>
Deni Rinaldi's avatar
Deni Rinaldi committed
133
                                                    </LightTooltip> :
Deni Rinaldi's avatar
Deni Rinaldi committed
134
                                                    <span style={{ color: check != null && check > -1 ? "red" : 'black' }}>{val === "" ? "Empty" : val}</span>
Deni Rinaldi's avatar
Deni Rinaldi committed
135
                                                }
Deni Rinaldi's avatar
Deni Rinaldi committed
136 137 138 139 140 141 142 143 144 145
                                            </div >
                                        );
                                    }
                                }
                            },
                            {
                                name: "Valid From",
                                options: {
                                    customBodyRender: (val, tableMeta) => {
                                        let check = null
Deni Rinaldi's avatar
Deni Rinaldi committed
146 147
                                        if (tableMeta.rowData[3] != null) {
                                            check = tableMeta.rowData[3].findIndex((val) => val.field.includes('start_date'))
Deni Rinaldi's avatar
Deni Rinaldi committed
148 149
                                            if (check > -1) {
                                                this.setState({ buttonError: true })
a.bairuha's avatar
a.bairuha committed
150
                                            }
Deni Rinaldi's avatar
Deni Rinaldi committed
151
                                        }
Deni Rinaldi's avatar
Deni Rinaldi committed
152 153
                                        return (
                                            <div style={{ display: 'flex' }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
154
                                                {tableMeta.rowData[3] != null && check > -1 ?
Deni Rinaldi's avatar
Deni Rinaldi committed
155
                                                    <LightTooltip title={tableMeta.rowData[3][check].message} arrow>
Deni Rinaldi's avatar
Deni Rinaldi committed
156
                                                        <span style={{ color: check != null && check > -1 ? "red" : 'black' }}>{val === "" ? "Empty" : val}</span>
Deni Rinaldi's avatar
Deni Rinaldi committed
157
                                                    </LightTooltip> :
Deni Rinaldi's avatar
Deni Rinaldi committed
158
                                                    <span style={{ color: check != null && check > -1 ? "red" : 'black' }}>{val === "" ? "Empty" : val}</span>
Deni Rinaldi's avatar
Deni Rinaldi committed
159
                                                }
Deni Rinaldi's avatar
Deni Rinaldi committed
160 161 162 163 164 165 166 167 168 169
                                            </div >
                                        );
                                    }
                                }
                            },
                            {
                                name: "Valid To",
                                options: {
                                    customBodyRender: (val, tableMeta) => {
                                        let check = null
Deni Rinaldi's avatar
Deni Rinaldi committed
170 171
                                        if (tableMeta.rowData[3] != null) {
                                            check = tableMeta.rowData[3].findIndex((val) => val.field.includes('end_date'))
Deni Rinaldi's avatar
Deni Rinaldi committed
172 173
                                            if (check > -1) {
                                                this.setState({ buttonError: true })
a.bairuha's avatar
a.bairuha committed
174 175
                                            }
                                        }
Deni Rinaldi's avatar
Deni Rinaldi committed
176 177
                                        return (
                                            <div style={{ display: 'flex' }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
178
                                                {tableMeta.rowData[3] != null && check > -1 ?
Deni Rinaldi's avatar
Deni Rinaldi committed
179
                                                    <LightTooltip title={tableMeta.rowData[3][check].message} arrow>
Deni Rinaldi's avatar
Deni Rinaldi committed
180
                                                        <span style={{ color: check != null && check > -1 ? "red" : 'black' }}>{val === "" ? "Empty" : val}</span>
Deni Rinaldi's avatar
Deni Rinaldi committed
181
                                                    </LightTooltip> :
Deni Rinaldi's avatar
Deni Rinaldi committed
182
                                                    <span style={{ color: check != null && check > -1 ? "red" : 'black' }}>{val === "" ? "Empty" : val}</span>
Deni Rinaldi's avatar
Deni Rinaldi committed
183 184 185
                                                }
                                            </div >
                                        );
a.bairuha's avatar
a.bairuha committed
186
                                    }
Deni Rinaldi's avatar
Deni Rinaldi committed
187 188 189 190 191 192 193
                                }
                            },
                            {
                                name: "",
                                options: {
                                    display: false
                                }
a.bairuha's avatar
a.bairuha committed
194
                            }
Deni Rinaldi's avatar
Deni Rinaldi committed
195 196 197
                        ]

                        // console.log(dataRow);
198
                        this.setState({
Deni Rinaldi's avatar
Deni Rinaldi committed
199 200
                            dataLoaded: true,
                            cols: columns,
Deni Rinaldi's avatar
Deni Rinaldi committed
201
                            rows: dataRow, visibleUpload: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
202
                            visibleUnitBisnis: false
203
                        });
Deni Rinaldi's avatar
Deni Rinaldi committed
204 205
                    } else {
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => {
a.bairuha's avatar
a.bairuha committed
206
                            if (response.data.message.includes("Someone Logged In")) {
Deni Rinaldi's avatar
Deni Rinaldi committed
207 208 209 210 211 212
                                setTimeout(() => {
                                    localStorage.removeItem(Constant.TOKEN)
                                    window.location.reload();
                                }, 1000);
                            }
                        })
213
                    }
Deni Rinaldi's avatar
Deni Rinaldi committed
214 215 216 217 218 219 220 221
                } else {
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error' })
                }
            } else {
                this.setState({
                    dataLoaded: false,
                    alert: true, messageAlert: response.problem, tipeAlert: 'error'
                });
Deni Rinaldi's avatar
Deni Rinaldi committed
222
            }
Deni Rinaldi's avatar
Deni Rinaldi committed
223
        })
Deni Rinaldi's avatar
Deni Rinaldi committed
224
    }
Deni Rinaldi's avatar
Deni Rinaldi committed
225 226

    componentDidMount() {
227
        this.getData()
Deni Rinaldi's avatar
Deni Rinaldi committed
228
        this.getPermission()
229 230 231 232 233 234 235 236 237 238
        this.getSizeUpload()
    }

    getSizeUpload(){
        let body = {
            group: 'MAX_FILE_SIZE',
            company_id: 0,
            type: 'MAX_FILE_SIZE'
        }
        api.create().getAllSettingByType(body).then(response => {
Deni Rinaldi's avatar
Deni Rinaldi committed
239
            // console.log(response);
240 241 242
            if (response.data) {
                if (response.data.status === "success") {
                    this.setState({
Deni Rinaldi's avatar
Deni Rinaldi committed
243
                        sizeUpload: response.data.data[0] ? response.data.data[0].value === undefined ? "1" : response.data.data[0].value : "1"
244 245 246 247
                    })
                }
            }
        })
Deni Rinaldi's avatar
Deni Rinaldi committed
248 249 250 251 252 253 254
    }

    getPermission() {
        let payload = {
            menu: "business unit"
        }
        api.create().getPermission(payload).then(response => {
Deni Rinaldi's avatar
Deni Rinaldi committed
255
            // console.log(response)
Deni Rinaldi's avatar
Deni Rinaldi committed
256 257 258 259
            if (response.data) {
                if (response.data.status === "success") {
                    this.setState({
                        create: response.data.data.create,
Deni Rinaldi's avatar
Deni Rinaldi committed
260
                        edit: response.data.data.edit,
d.arizona's avatar
d.arizona committed
261
                        delete: response.data.data.delete,
Deni Rinaldi's avatar
Deni Rinaldi committed
262 263 264 265 266
                        load: true
                    })
                } else {
                    this.setState({
                        load: true
Deni Rinaldi's avatar
Deni Rinaldi committed
267 268
                    })
                }
a.bairuha's avatar
a.bairuha committed
269 270
            } else {
                this.setState({ load: true })
Deni Rinaldi's avatar
Deni Rinaldi committed
271 272
            }
        })
Deni Rinaldi's avatar
Deni Rinaldi committed
273 274
    }

275
    getData() {
d.arizona's avatar
d.arizona committed
276
        this.setState({loading: true})
277
        api.create().getUnitBisnis().then((response) => {
Deni Rinaldi's avatar
Deni Rinaldi committed
278
            // console.log(response)
279
            if (response.data) {
a.bairuha's avatar
a.bairuha committed
280 281 282 283 284 285
                if (response.ok) {
                    if (response.data.status == 'success') {
                        let data = response.data.data
                        let listData = data.sort((a, b) => a.business_unit_id - b.business_unit_id).map((item, index) => {
                            return [index, item.business_unit_id, item.business_unit_name, item.status]
                        })
d.arizona's avatar
d.arizona committed
286 287 288 289 290
                        this.setState({ dataTable: listData, listData: response.data.data }, () => {
                            setTimeout(() => {
                              this.setState({loading: false})
                            }, 2000);
                          })
a.bairuha's avatar
a.bairuha committed
291
                    } else {
d.arizona's avatar
d.arizona committed
292
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning', loading: false }, () => {
a.bairuha's avatar
a.bairuha committed
293
                            if (response.data.message.includes("Someone Logged In")) {
a.bairuha's avatar
a.bairuha committed
294 295 296 297 298 299 300
                                setTimeout(() => {
                                    localStorage.removeItem(Constant.TOKEN)
                                    window.location.reload();
                                }, 1000);
                            }
                        })
                    }
301
                } else {
d.arizona's avatar
d.arizona committed
302
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error', loading: false })
303
                }
304
            } else {
d.arizona's avatar
d.arizona committed
305
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error', loading: false })
306 307 308 309
            }
        })
    }

310
    openPopUp(rowData, type) {
311 312
        if (type === 'edit') {
            this.setState({
313
                rowData: rowData,
314 315
                visibleEdit: true
            })
Deni Rinaldi's avatar
Deni Rinaldi committed
316 317 318 319 320 321
        } else if (type === 'delete') {
            this.setState({
                rowData: rowData,
                unitBisnisName: String(rowData[2]),
                visibleDelete: true
            })
322 323
        } else {
            this.setState({
324
                rowData: rowData,
325 326 327
                visibleCreate: true
            })
        }
Deni Rinaldi's avatar
Deni Rinaldi committed
328 329
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
330 331 332 333 334 335 336
    handleInputChange(e) {
        this.setState({ search: e })
        let body = {
            "keyword": e
        }
        api.create().searchUnitBisnis(body).then(response => {
            // console.log(response.data);
337
            if (response.data) {
a.bairuha's avatar
a.bairuha committed
338 339 340 341 342 343 344 345 346
                if (response.ok) {
                    if (response.data.status == 'success') {
                        let data = response.data.data
                        let listData = data.map((item, index) => {
                            return [index, item.business_unit_id, item.business_unit_name, item.status]
                        })
                        this.setState({ dataTable: listData, listData: response.data.data })
                    } else {
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => {
a.bairuha's avatar
a.bairuha committed
347
                            if (response.data.message.includes("Someone Logged In")) {
a.bairuha's avatar
a.bairuha committed
348 349 350 351 352 353 354
                                setTimeout(() => {
                                    localStorage.removeItem(Constant.TOKEN)
                                    window.location.reload();
                                }, 1000);
                            }
                        })
                    }
355
                } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
356
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error' })
357
                }
Deni Rinaldi's avatar
Deni Rinaldi committed
358
            } else {
359
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' })
Deni Rinaldi's avatar
Deni Rinaldi committed
360
            }
Deni Rinaldi's avatar
Deni Rinaldi committed
361
        })
Deni Rinaldi's avatar
Deni Rinaldi committed
362
    }
Deni Rinaldi's avatar
Deni Rinaldi committed
363

Deni Rinaldi's avatar
Deni Rinaldi committed
364 365 366
    updateUnitBisnis = (payload) => {
        this.setState({ visibleEdit: false })
        api.create().updateUnitBisnis(payload).then(response => {
367
            if (response.data) {
a.bairuha's avatar
a.bairuha committed
368 369 370 371 372 373
                if (response.ok) {
                    if (response.data.status == 'success') {
                        this.getData()
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'success' })
                    } else {
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => {
a.bairuha's avatar
a.bairuha committed
374
                            if (response.data.message.includes("Someone Logged In")) {
a.bairuha's avatar
a.bairuha committed
375 376 377 378 379 380 381
                                setTimeout(() => {
                                    localStorage.removeItem(Constant.TOKEN)
                                    window.location.reload();
                                }, 1000);
                            }
                        })
                    }
382
                } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
383
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error' })
384
                }
Deni Rinaldi's avatar
Deni Rinaldi committed
385
            } else {
386
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' })
Deni Rinaldi's avatar
Deni Rinaldi committed
387
            }
388

Deni Rinaldi's avatar
Deni Rinaldi committed
389
        })
Deni Rinaldi's avatar
Deni Rinaldi committed
390 391
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
392 393 394
    createUnitBisnis = (payload) => {
        this.setState({ visibleCreate: false })
        api.create().createUnitBisnis(payload).then(response => {
395
            if (response.data) {
a.bairuha's avatar
a.bairuha committed
396 397 398 399 400 401
                if (response.ok) {
                    if (response.data.status == 'success') {
                        this.getData()
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'success' })
                    } else {
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => {
a.bairuha's avatar
a.bairuha committed
402
                            if (response.data.message.includes("Someone Logged In")) {
a.bairuha's avatar
a.bairuha committed
403 404 405 406 407 408 409
                                setTimeout(() => {
                                    localStorage.removeItem(Constant.TOKEN)
                                    window.location.reload();
                                }, 1000);
                            }
                        })
                    }
410
                } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
411
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error' })
412
                }
Deni Rinaldi's avatar
Deni Rinaldi committed
413
            } else {
414
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' })
Deni Rinaldi's avatar
Deni Rinaldi committed
415 416
            }
        })
417
    }
Deni Rinaldi's avatar
Deni Rinaldi committed
418

Deni Rinaldi's avatar
Deni Rinaldi committed
419 420
    downloadFile = async () => {
        let res = await fetch(
d.arizona's avatar
d.arizona committed
421
            `${process.env.REACT_APP_URL_MAIN_BE}/public/attachment/download_file?fileName=BusinessUnitTemplate&&fileType=xlsx`
Deni Rinaldi's avatar
Deni Rinaldi committed
422 423 424 425 426 427 428 429 430 431 432 433
        )
        res = await res.blob()
        console.log(res)
        if (res.size > 0) {
            let url = window.URL.createObjectURL(res);
            let a = document.createElement('a');
            a.href = url;
            a.download = 'Template Business Unit.xlsx';
            a.click();
        }
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
434 435
    downloadDataTable = async () => {
        let res = await fetch(
d.arizona's avatar
d.arizona committed
436
            `${process.env.REACT_APP_URL_MAIN_BE}/public/business_unit/export_business_unit`
Deni Rinaldi's avatar
Deni Rinaldi committed
437 438 439 440 441 442 443 444 445 446 447 448
        )
        res = await res.blob()
        console.log(res)
        if (res.size > 0) {
            let url = window.URL.createObjectURL(res);
            let a = document.createElement('a');
            a.href = url;
            a.download = 'Business Unit.xlsx';
            a.click();
        }
    }

449 450
    uploadUnitBisnis() {
        api.create().uploadUnitBisnis(this.state.payload).then(response => {
Deni Rinaldi's avatar
Deni Rinaldi committed
451
            // console.log(response)
Deni Rinaldi's avatar
Deni Rinaldi committed
452
            if (response.data) {
a.bairuha's avatar
a.bairuha committed
453 454 455 456 457 458
                if (response.ok) {
                    if (response.data.status === "success") {
                        this.getData()
                        this.setState({ visibleUnitBisnis: true, alert: true, messageAlert: response.data.message, tipeAlert: 'success' })
                    } else {
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => {
a.bairuha's avatar
a.bairuha committed
459
                            if (response.data.message.includes("Someone Logged In")) {
a.bairuha's avatar
a.bairuha committed
460 461 462 463 464 465 466
                                setTimeout(() => {
                                    localStorage.removeItem(Constant.TOKEN)
                                    window.location.reload();
                                }, 1000);
                            }
                        })
                    }
Deni Rinaldi's avatar
Deni Rinaldi committed
467
                } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
468
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error' })
Deni Rinaldi's avatar
Deni Rinaldi committed
469
                }
470 471
            } else {
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' })
472
            }
473 474
        })
    }
Deni Rinaldi's avatar
Deni Rinaldi committed
475

Deni Rinaldi's avatar
Deni Rinaldi committed
476 477 478 479
    closeAlert() {
        this.setState({ alert: false })
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
480
    deleteUnitBisnis(payload) {
Deni Rinaldi's avatar
Deni Rinaldi committed
481
        // console.log(payload);
Deni Rinaldi's avatar
Deni Rinaldi committed
482 483 484 485 486 487 488 489 490
        let id = String(payload[1])
        api.create().deleteUnitBisnis(id).then(response => {
            if (response.data) {
                if (response.ok) {
                    if (response.data.status === "success") {
                        this.getData()
                        this.setState({ visibleDelete: false, alert: true, messageAlert: response.data.message, tipeAlert: 'success' })
                    } else {
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' }, () => {
a.bairuha's avatar
a.bairuha committed
491
                            if (response.data.message.includes("Someone Logged In")) {
Deni Rinaldi's avatar
Deni Rinaldi committed
492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507
                                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' })
            }
        })
    }

508
    render() {
Deni Rinaldi's avatar
Deni Rinaldi committed
509
        const columns = [{
Deni Rinaldi's avatar
Deni Rinaldi committed
510 511
            name: "Action",
            options: {
Deni Rinaldi's avatar
Deni Rinaldi committed
512
                filter: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
513
                sort: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
514 515
                customBodyRender: (val, tableMeta) => {
                    return (
d.arizona's avatar
d.arizona committed
516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554
                        <div style={{ display: 'flex' }}>
                            {this.state.edit && 
                                <span>
                                    <a data-tip={'Edit'} data-for="edit">
                                        <button
                                            style={{
                                                backgroundColor: 'transparent',
                                                cursor: 'pointer',
                                                borderColor: 'transparent',
                                                marginRight: 15
                                            }}
                                            // onClick={() => console.log(tableMeta)}
                                            onClick={() => this.openPopUp(tableMeta.rowData, 'edit')}
                                        >
                                            <img src={Images.editCopy} />
                                        </button>
                                    </a>
                                    <ReactTooltip border={true} id="edit" place="bottom" type="light" effect="solid" />
                                </span>
                            }
                            {this.state.delete && 
                                <span>
                                    <a data-tip={'Delete'} data-for="delete">
                                        <button
                                            style={{
                                                backgroundColor: 'transparent',
                                                cursor: 'pointer',
                                                borderColor: 'transparent',
                                            }}
                                            // onClick={() => console.log(tableMeta)}
                                            onClick={() => this.openPopUp(tableMeta.rowData, 'delete')}
                                        >
                                            <img src={Images.delete} />
                                        </button>
                                    </a>
                                    <ReactTooltip border={true} id="delete" place="bottom" type="light" effect="solid" />
                                </span>
                            }
                        </div >
Deni Rinaldi's avatar
Deni Rinaldi committed
555 556 557
                    );
                }
            }
Deni Rinaldi's avatar
Deni Rinaldi committed
558 559 560 561 562 563
        }, {
            name: "ID",
            options: {
                customBodyRender: (val, tableMeta) => {
                    return (
                        <div style={{ display: 'flex' }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
564
                            <span style={{ color: tableMeta.rowData[3] === "Active" ? "#656565" : 'rgba(0, 0, 0, 0.25)' }}>{val}</span>
Deni Rinaldi's avatar
Deni Rinaldi committed
565 566 567 568 569
                        </div >
                    );
                }
            }
        }, {
570
            name: "Business Unit",
Deni Rinaldi's avatar
Deni Rinaldi committed
571 572 573 574
            options: {
                customBodyRender: (val, tableMeta) => {
                    return (
                        <div style={{ display: 'flex' }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
575
                            <span style={{ color: tableMeta.rowData[3] === "Active" ? "#656565" : 'rgba(0, 0, 0, 0.25)' }}>{val}</span>
Deni Rinaldi's avatar
Deni Rinaldi committed
576 577 578 579 580 581 582 583 584 585
                        </div >
                    );
                }
            }
        }, {
            name: "Status",
            options: {
                customBodyRender: (val, tableMeta) => {
                    return (
                        <div style={{ display: 'flex' }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
586
                            <span style={{ color: tableMeta.rowData[3] === "Active" ? "#656565" : 'rgba(0, 0, 0, 0.25)' }}>{val}</span>
Deni Rinaldi's avatar
Deni Rinaldi committed
587 588 589 590
                        </div >
                    );
                }
            }
Deni Rinaldi's avatar
Deni Rinaldi committed
591 592
        }]
        const data = [
Deni Rinaldi's avatar
Deni Rinaldi committed
593 594 595 596 597
            ["", "1", "Agribisnis", "Aktif"],
            ["", "2", "Manufacturing", "Aktif"],
            ["", "3", "Trading", "Aktif"],
            ["", "4", "Service", "Non Aktif"],
            ["", "-", "-", "-"],
Deni Rinaldi's avatar
Deni Rinaldi committed
598
        ]
d.arizona's avatar
d.arizona committed
599 600 601 602 603 604 605 606 607 608
        const loadingComponent = (
            <div style={{position: 'absolute', zIndex: 110, top: 0, left: 0, width: '100%', height: '100%', display: 'flex', justifyContent: 'center', alignItems: 'center', background: 'rgba(255,255,255,0.8)'}}>
              <PropagateLoader
                // css={override}
                size={20}
                color={"#274B80"}
                loading={this.state.loading}
              />
            </div>
          );
Deni Rinaldi's avatar
Deni Rinaldi committed
609
        return (
Deni Rinaldi's avatar
Deni Rinaldi committed
610
            <div style={{ height: this.props.height }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
611
                {/* <Row> */}
Deni Rinaldi's avatar
Deni Rinaldi committed
612
                <div style={{ height: 195, width: '100%' }} className={"main-color"} />
Deni Rinaldi's avatar
Deni Rinaldi committed
613 614 615 616 617
                <Snackbar open={this.state.alert} autoHideDuration={6000} onClose={() => this.closeAlert()}>
                    <Alert onClose={() => this.closeAlert()} severity={this.state.tipeAlert}>
                        {this.state.messageAlert}
                    </Alert>
                </Snackbar>
Deni Rinaldi's avatar
Deni Rinaldi committed
618
                {this.state.visibleUnitBisnis === true ?
Deni Rinaldi's avatar
Deni Rinaldi committed
619 620
                    this.state.load && (
                        <div>
Deni Rinaldi's avatar
Deni Rinaldi committed
621 622
                            <div style={{ display: 'flex', flexDirection: 'row', justifyContent: 'space-between', paddingRight: 25, paddingLeft: 25, marginTop: -182 }}>
                                <label style={{ color: 'white', fontSize: 16, alignSelf: 'center', width: '50%', }}>Master Data - Business Unit</label>
Deni Rinaldi's avatar
Deni Rinaldi committed
623
                                {/* <div style={{ color: 'white', width: '50%', height: 37, display: 'flex', backgroundColor: 'white', borderWidth: 2, alignItems: 'center', borderRadius: 6, paddingLeft: 5, paddingRight: 5, alignSelf: 'center' }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
624 625 626 627 628 629 630 631
                                    <img src={Images.searchBlack} style={{ marginRight: 10 }} />
                                    <InputBase
                                        style={{ width: '100%' }}
                                        placeholder="Search"
                                        value={this.state.search}
                                        onChange={(e) => this.handleInputChange(e.target.value)}
                                        inputProps={{ 'aria-label': 'naked' }}
                                    />
Deni Rinaldi's avatar
Deni Rinaldi committed
632
                                </div> */}
Deni Rinaldi's avatar
Deni Rinaldi committed
633
                                <div style={{ width: '50%', justifyContent: 'flex-end', display: 'flex', flexFlow: 'wrap' }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
634
                                    <a data-tip={'Download Template'} data-for="template">
Deni Rinaldi's avatar
Deni Rinaldi committed
635 636 637 638 639 640 641
                                        <button
                                            style={{
                                                backgroundColor: 'transparent',
                                                cursor: 'pointer',
                                                borderColor: 'transparent',
                                                margin: 5
                                            }}
Deni Rinaldi's avatar
Deni Rinaldi committed
642
                                            onClick={() => this.downloadFile()}
Deni Rinaldi's avatar
Deni Rinaldi committed
643
                                        >
Deni Rinaldi's avatar
Deni Rinaldi committed
644
                                            <img src={Images.template} />
Deni Rinaldi's avatar
Deni Rinaldi committed
645 646
                                        </button>
                                    </a>
Deni Rinaldi's avatar
Deni Rinaldi committed
647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664
                                    <ReactTooltip border={true} id="template" place="bottom" type="light" effect="solid" />
                                    {this.state.create && (
                                        <a data-tip={'Upload'} data-for="upload">
                                            <button
                                                style={{
                                                    backgroundColor: 'transparent',
                                                    cursor: 'pointer',
                                                    borderColor: 'transparent',
                                                    margin: 5
                                                }}
                                                onClick={() => this.setState({ visibleUpload: true })}
                                            >
                                                <img src={Images.upload} />
                                            </button>
                                        </a>
                                    )}
                                    <ReactTooltip border={true} id="upload" place="bottom" type="light" effect="solid" />
                                    <a data-tip={'Download'} data-for="download">
Deni Rinaldi's avatar
Deni Rinaldi committed
665 666 667 668 669 670 671
                                        <button
                                            style={{
                                                backgroundColor: 'transparent',
                                                cursor: 'pointer',
                                                borderColor: 'transparent',
                                                margin: 5
                                            }}
Deni Rinaldi's avatar
Deni Rinaldi committed
672
                                            onClick={() => this.downloadDataTable()}
Deni Rinaldi's avatar
Deni Rinaldi committed
673
                                        >
Deni Rinaldi's avatar
Deni Rinaldi committed
674
                                            <img src={Images.download} />
Deni Rinaldi's avatar
Deni Rinaldi committed
675 676
                                        </button>
                                    </a>
Deni Rinaldi's avatar
Deni Rinaldi committed
677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695
                                    <ReactTooltip border={true} id="download" place="bottom" type="light" effect="solid" />
                                    {this.state.create && (
                                        <a data-tip={'Add New'} data-for="create">
                                            <button
                                                style={{
                                                    backgroundColor: 'transparent',
                                                    cursor: 'pointer',
                                                    borderColor: 'transparent',
                                                    margin: 5,
                                                    marginRight: 20
                                                }}
                                                onClick={() => this.setState({ visibleCreate: true })}
                                            >
                                                <img src={Images.add} />
                                            </button>
                                        </a>
                                    )}
                                    <ReactTooltip border={true} id="create" place="bottom" type="light" effect="solid" />
                                </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
696
                            </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
697
                            <div style={{ padding: 25 }}>
d.arizona's avatar
d.arizona committed
698
                            {this.state.loading && loadingComponent}
Deni Rinaldi's avatar
Deni Rinaldi committed
699 700 701 702 703 704 705 706 707
                                <MuiThemeProvider theme={getMuiTheme()}>
                                    <MUIDataTable
                                        theme={getMuiTheme()}
                                        data={this.state.dataTable}
                                        columns={columns}
                                        options={options}
                                    />
                                </MuiThemeProvider>
                            </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
708
                        </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
709
                    )
Deni Rinaldi's avatar
Deni Rinaldi committed
710 711 712 713 714 715 716 717 718 719 720 721
                    :
                    <div>
                        <div style={{ display: 'flex', flexDirection: 'row', justifyContent: 'space-between', paddingRight: 25, paddingLeft: 25, marginTop: -150 }}>
                            <label style={{ color: 'white', fontSize: 16, alignSelf: 'center' }}>Preview Data</label>
                        </div>
                        <div style={{ padding: 25 }}>
                            {this.state.dataLoaded && (
                                <MuiThemeProvider theme={getMuiTheme()}>
                                    <MUIDataTable
                                        theme={getMuiTheme()}
                                        data={this.state.rows}
                                        columns={this.state.cols}
Deni Rinaldi's avatar
Deni Rinaldi committed
722
                                        options={options}
Deni Rinaldi's avatar
Deni Rinaldi committed
723 724 725 726 727
                                    />
                                </MuiThemeProvider>
                            )}
                        </div>
                        <div style={{ display: 'flex', width: '100%', placeContent: 'flex-end', padding: 20 }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
728
                            <button
Deni Rinaldi's avatar
Deni Rinaldi committed
729 730
                                type="button"
                                onClick={() => this.setState({ visibleUnitBisnis: true })}
Deni Rinaldi's avatar
Deni Rinaldi committed
731
                                style={{ marginRight: 20 }}
Deni Rinaldi's avatar
Deni Rinaldi committed
732
                            >
Deni Rinaldi's avatar
Deni Rinaldi committed
733
                                <div style={{ width: 102, height: 30, border: 'solid 1px #354960', borderRadius: 5, alignItems: 'center', display: 'flex', justifyContent: 'center' }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
734
                                    <span style={{ color: '#354960', fontSize: 11 }}>Cancel</span>
Deni Rinaldi's avatar
Deni Rinaldi committed
735
                                </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
736
                            </button>
Deni Rinaldi's avatar
Deni Rinaldi committed
737 738
                            <button
                                type="button"
Deni Rinaldi's avatar
Deni Rinaldi committed
739 740
                                disabled={this.state.buttonError == true ? true : false}
                                onClick={() => this.uploadUnitBisnis()}
Deni Rinaldi's avatar
Deni Rinaldi committed
741 742 743
                                style={{}}
                            >
                                <div style={{ width: 102, height: 30, backgroundColor: '#354960', borderRadius: 5, alignItems: 'center', display: 'flex', justifyContent: 'center' }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
744
                                    <span style={{ color: '#fff', fontSize: 11 }}>Save</span>
Deni Rinaldi's avatar
Deni Rinaldi committed
745 746
                                </div>
                            </button>
Deni Rinaldi's avatar
Deni Rinaldi committed
747 748
                        </div>
                    </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
749
                }
Deni Rinaldi's avatar
Deni Rinaldi committed
750 751 752 753

                {this.state.visibleCreate && (
                    <CreateUnitBisnis
                        onClickClose={() => this.setState({ visibleCreate: false })}
Deni Rinaldi's avatar
Deni Rinaldi committed
754 755
                        type={"create"}
                        createUnitBisnis={this.createUnitBisnis.bind(this)}
Deni Rinaldi's avatar
Deni Rinaldi committed
756 757
                    />
                )}
Deni Rinaldi's avatar
Deni Rinaldi committed
758 759 760 761 762

                {this.state.visibleEdit && (
                    <CreateUnitBisnis
                        type={"edit"}
                        onClickClose={() => this.setState({ visibleEdit: false })}
763
                        data={this.state.rowData}
Deni Rinaldi's avatar
Deni Rinaldi committed
764
                        updateUnitBisnis={this.updateUnitBisnis.bind(this)}
Deni Rinaldi's avatar
Deni Rinaldi committed
765 766
                    />
                )}
Deni Rinaldi's avatar
Deni Rinaldi committed
767
                {this.state.popupError && (
768
                    <PopUpFailedSave onClickClose={() => this.setState({ popupError: false })} />
Deni Rinaldi's avatar
Deni Rinaldi committed
769 770
                )}

771 772 773
                {this.state.visibleUpload && (
                    <div className="test app-popup-show">
                        <div className="popup-content background-white border-radius" style={{ borderRadius: 8 }}>
Deni Rinaldi's avatar
Deni Rinaldi committed
774
                            <div className="popup-panel grid grid-2x main-color" style={{ height: 64, borderTopRightRadius: 8, borderTopLeftRadius: 8 }}>
775 776 777 778 779 780 781 782 783 784 785
                                <div className="col-1" style={{ maxWidth: "inherit", display: 'flex', alignItems: 'center' }}>
                                    <div className="popup-title">
                                        <span style={{ color: '#fff', fontSize: 16, fontWeight: 'bold' }}>Upload File</span>
                                    </div>
                                </div>
                                <div className="col-2 content-right" style={{ maxWidth: "inherit", alignSelf: 'center' }}>
                                    <button
                                        type="button"
                                        className="btn btn-circle btn-white"
                                        onClick={() => this.setState({ visibleUpload: false })}
                                    >
786
                                        <img src={Images.close} />
787 788 789 790 791 792 793
                                    </button>
                                </div>
                            </div>
                            <UploadFile
                                type={this.state.uploadStatus}
                                percentage={this.state.percentage}
                                result={this.state.result}
794
                                sizeUpload={Number(this.state.sizeUpload)}
795
                                acceptedFiles={["xlsx"]}
796 797 798 799
                                onHandle={(dt) => {
                                    this.fileHandler(dt)
                                    this.setState({ uploadStatus: 'idle', percentage: '0' })
                                }}
Deni Rinaldi's avatar
Deni Rinaldi committed
800
                                onUpload={() => {
r.kurnia's avatar
r.kurnia committed
801
                                    String(this.state.judul).includes("MASTER") && String(this.state.judul).includes("DATA") && String(this.state.judul).includes("BUSINESS") && String(this.state.judul).includes("UNIT") ?
Deni Rinaldi's avatar
Deni Rinaldi committed
802 803
                                        this.checkUpload() :
                                        this.setState({ alert: true, messageAlert: "Invalid Template", tipeAlert: 'warning' })
Deni Rinaldi's avatar
Deni Rinaldi committed
804
                                }}
805 806 807 808
                            />
                        </div>
                    </div>
                )}
Deni Rinaldi's avatar
Deni Rinaldi committed
809

Deni Rinaldi's avatar
Deni Rinaldi committed
810 811 812 813 814 815 816 817 818 819
                {this.state.visibleDelete && (
                    <PopUpDelete
                        rowData={this.state.rowData}
                        name={this.state.unitBisnisName}
                        onClickClose={() => this.setState({ visibleDelete: false })}
                        onClickDelete={this.deleteUnitBisnis.bind(this)}
                    />
                )}


Deni Rinaldi's avatar
Deni Rinaldi committed
820 821 822 823 824 825 826
                {/* {this.state.visibleLoad && (
                    <div className="test app-popup-show">
                        <div className="popup-content" style={{ textAlign: 'center'}}>
                            <img src={Images.triputraLogo} style={{ height: 100, width: 100}}/>
                        </div>
                    </div>
                )} */}
Deni Rinaldi's avatar
Deni Rinaldi committed
827
            </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
828 829 830
        );
    }
}