DocumentManagement.js 15 KB
Newer Older
Deni Rinaldi's avatar
Deni Rinaldi committed
1
import React, { Component } from 'react'
Deni Rinaldi's avatar
Deni Rinaldi committed
2
import { Tabs, Tab, Typography, Paper, withStyles, Snackbar } from '@material-ui/core'
Deni Rinaldi's avatar
Deni Rinaldi committed
3 4
import ReactTooltip from 'react-tooltip'
import Images from '../../assets/Images'
syadziy's avatar
syadziy committed
5
// import ManualBookTia from './ManualBookTia'
Deni Rinaldi's avatar
Deni Rinaldi committed
6
import api from '../../api'
syadziy's avatar
syadziy committed
7
// import AuditTahunan from './AuditTahunan'
syadziy's avatar
syadziy committed
8 9
import CreateManagementDoc from './CreateDocumentManagement'
import AllDocument from './TableDocumentManagement'
syadziy's avatar
syadziy committed
10 11 12
// import QReview from './QReview'
// import BOD from './BOD'
// import ManualBookETMS from './ManualBookETMS'
Deni Rinaldi's avatar
Deni Rinaldi committed
13 14 15
import PopUpKonfirmasi from "./PopUpKonfirmasi";
import Constant from '../../library/Constant'
import MuiAlert from '@material-ui/lab/Alert';
Rifka Kurnia Irfiana's avatar
Rifka Kurnia Irfiana committed
16
import PropagateLoader from "react-spinners/PropagateLoader"
Deni Rinaldi's avatar
Deni Rinaldi committed
17 18 19

const Alert = withStyles({
})((props) => <MuiAlert elevation={6} variant="filled" {...props} />);
Deni Rinaldi's avatar
Deni Rinaldi committed
20 21 22 23 24

export default class DocumentManagement extends Component {
    constructor(props) {
        super(props)
        this.state = {
syadziy's avatar
syadziy committed
25
            alert: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
26 27
            tab: 0,
            listData: [],
Rifka Kurnia Irfiana's avatar
Rifka Kurnia Irfiana committed
28 29 30 31 32
            id: 0,
            btncreate: false,
            btnedit: false,
            btndelete: false,
            load: false,
Rifka Kurnia Irfiana's avatar
Rifka Kurnia Irfiana committed
33
            name: '',
syadziy's avatar
syadziy committed
34
            userCompActive: []
Deni Rinaldi's avatar
Deni Rinaldi committed
35 36 37
        }
    }

syadziy's avatar
syadziy committed
38
    getPermission() {
Rifka Kurnia Irfiana's avatar
Rifka Kurnia Irfiana committed
39
        let payload = {
syadziy's avatar
syadziy committed
40
            menu: "document management"
Rifka Kurnia Irfiana's avatar
Rifka Kurnia Irfiana committed
41 42
        }
        api.create().getPermission(payload).then(response => {
syadziy's avatar
syadziy committed
43
            // console.log(response)
Rifka Kurnia Irfiana's avatar
Rifka Kurnia Irfiana committed
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
            if (response.data) {
                if (response.data.status === "success") {
                    this.setState({
                        btncreate: response.data.data.create,
                        btnedit: response.data.data.edit,
                        btndelete: response.data.data.delete,
                        load: true
                    })
                } else {
                    this.setState({
                        load: true
                    })
                }
            } else {
                this.setState({ load: true })
            }
        })
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
63
    selectTab = (event, newEvent) => {
syadziy's avatar
syadziy committed
64 65
        this.setState({ tab: newEvent })
        console.log(this.state.tab)
Deni Rinaldi's avatar
Deni Rinaldi committed
66 67 68 69
    }

    componentDidMount() {
        this.getDataDocument()
syadziy's avatar
syadziy committed
70
        this.getPermission()
Rifka Kurnia Irfiana's avatar
Rifka Kurnia Irfiana committed
71
        this.getDetailUser()
Deni Rinaldi's avatar
Deni Rinaldi committed
72 73
    }

Rifka Kurnia Irfiana's avatar
Rifka Kurnia Irfiana committed
74
    getDataDocument(id, name) {
75
        api.create().getDocumentCategory().then(response => {
syadziy's avatar
syadziy committed
76
            // console.log(response);
Deni Rinaldi's avatar
Deni Rinaldi committed
77 78
            if (response) {
                if (response.data.status === "success") {
syadziy's avatar
syadziy committed
79 80 81 82 83 84
                    this.setState({
                        listData: response.data.data,
                        id: id === undefined ? response.data.data[0].setting_id : id,
                        name: name === undefined ? response.data.data[0].value : name,
                        loadTable: true,
                        refresh: id === undefined ? '' : 'create'
Deni Rinaldi's avatar
Deni Rinaldi committed
85
                    })
Riri Novita's avatar
Riri Novita committed
86 87
                } else {
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning', loading: false }, () => {
d.arizona's avatar
d.arizona committed
88
                        if (response.data.message.includes("Someone Logged In") || response.data.message.includes("Token Expired")) {
Riri Novita's avatar
Riri Novita committed
89 90 91 92 93 94
                            setTimeout(() => {
                                localStorage.removeItem(Constant.TOKEN)
                                window.location.reload();
                            }, 1000);
                        }
                    })
Deni Rinaldi's avatar
Deni Rinaldi committed
95 96
                }
            } else {
r.kurnia's avatar
r.kurnia committed
97
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error', loading: false })
Deni Rinaldi's avatar
Deni Rinaldi committed
98
            }
Deni Rinaldi's avatar
Deni Rinaldi committed
99 100 101
        })
    }

Rifka Kurnia Irfiana's avatar
Rifka Kurnia Irfiana committed
102
    createDocument(payload, settingID, menuName) {
103
        this.setState({ loading: true })
Deni Rinaldi's avatar
Deni Rinaldi committed
104
        api.create().uploadDocument(payload).then(response => {
Rifka Kurnia Irfiana's avatar
Rifka Kurnia Irfiana committed
105
            // console.log(response)
Deni Rinaldi's avatar
Deni Rinaldi committed
106 107 108
            if (response.data) {
                if (response.ok) {
                    if (response.data.message === "The Document Already Exists in The System, Do You Want to Overwrite It?") {
109
                        this.setState({ konfirmasi: true, formData: payload, docId: response.data.data.document_id, settingID, menuName, loading: false })
Deni Rinaldi's avatar
Deni Rinaldi committed
110
                    }
111
                    else if (response.data.message === "Data was Saved Successfully") {
Rifka Kurnia Irfiana's avatar
Rifka Kurnia Irfiana committed
112
                        this.getDataDocument(settingID, menuName)
113
                        this.setState({ visibleCreate: false,  loading: false, alert: true, messageAlert: response.data.message, tipeAlert: 'success', settingID, menuName})
Deni Rinaldi's avatar
Deni Rinaldi committed
114 115
                    }
                    else {
116
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning', loading: false }, () => {
d.arizona's avatar
d.arizona committed
117
                            if (response.data.message.includes("Someone Logged In") || response.data.message.includes("Token Expired")) {
Deni Rinaldi's avatar
Deni Rinaldi committed
118 119 120 121 122 123 124 125
                                setTimeout(() => {
                                    localStorage.removeItem(Constant.TOKEN)
                                    window.location.reload();
                                }, 1000);
                            }
                        })
                    }
                } else {
126
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error', loading: false })
Deni Rinaldi's avatar
Deni Rinaldi committed
127 128
                }
            } else {
129
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error', loading: false })
Deni Rinaldi's avatar
Deni Rinaldi committed
130 131 132 133 134
            }
        })
    }

    createUploadDocument() {
135
        this.setState({ visibleCreate: false, konfirmasi: false })
Deni Rinaldi's avatar
Deni Rinaldi committed
136 137
        const formData = this.state.formData
        formData.append("documentId", this.state.docId)
138
        formData.append("updated", 1)
139
        this.setState({ loading: true })
Deni Rinaldi's avatar
Deni Rinaldi committed
140
        api.create().updateDocument(formData).then(response => {
Rifka Kurnia Irfiana's avatar
Rifka Kurnia Irfiana committed
141
            // console.log(response)
Deni Rinaldi's avatar
Deni Rinaldi committed
142 143 144
            if (response.data) {
                if (response.ok) {
                    if (response.data.status === "success") {
Rifka Kurnia Irfiana's avatar
Rifka Kurnia Irfiana committed
145
                        this.getDataDocument(this.state.settingID, this.state.menuName)
146
                        this.setState({ konfirmasi: false, alert: true, messageAlert: response.data.message, tipeAlert: 'success', visibleCreate: false, loading: false })
Deni Rinaldi's avatar
Deni Rinaldi committed
147
                    } else {
148
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning', loading: false }, () => {
d.arizona's avatar
d.arizona committed
149
                            if (response.data.message.includes("Someone Logged In") || response.data.message.includes("Token Expired")) {
Deni Rinaldi's avatar
Deni Rinaldi committed
150 151 152 153 154 155 156 157
                                setTimeout(() => {
                                    localStorage.removeItem(Constant.TOKEN)
                                    window.location.reload();
                                }, 1000);
                            }
                        })
                    }
                } else {
158
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error', loading: false })
Deni Rinaldi's avatar
Deni Rinaldi committed
159 160
                }
            } else {
161
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error', loading: false })
Deni Rinaldi's avatar
Deni Rinaldi committed
162 163 164 165
            }
        })
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
166
    getID(id) {
Rifka Kurnia Irfiana's avatar
Rifka Kurnia Irfiana committed
167
        // console.log(id);
Deni Rinaldi's avatar
Deni Rinaldi committed
168 169 170
        this.setState({ id })
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
171 172 173 174
    closeAlert() {
        this.setState({ alert: false })
    }

Rifka Kurnia Irfiana's avatar
Rifka Kurnia Irfiana committed
175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217
    handleLoading(tipe) {
        this.setState({ loading: tipe == 0 ? false : true })
    }

    getDetailUser() {
        let userId = localStorage.getItem(Constant.USER)
        api.create().getDetailUser(userId).then((response) => {
            if (response.data) {
                if (response.ok) {
                    if (response.data.status === 'success') {
                        this.setState({ userCompany: response.data.data.company, visibleTrue: false }, () => {
                            this.getCompanyActive()
                        })
                    }
                }
            }
        })
    }

    getCompanyActive() {
        api.create().getPerusahaanActive().then((response) => {
            if (response.data) {
                if (response.data.status === 'success') {
                    let data = response.data.data
                    let compActive = []
                    let userCompActive = []
                    this.state.userCompany.map((item, index) => {
                        let indeks = data.findIndex((val) => val.company_id == item)
                        if (indeks !== -1 && String(data[indeks].status).toLocaleLowerCase() == 'active'){
                            userCompActive.push(item)
                        }
                    })
                    data.map(( item, index ) => {
                        if (String(item.status).toLocaleLowerCase() == 'active') {
                            compActive.push(item)
                        }
                    })
                    if (compActive.length == userCompActive.length){
                        this.setState({ btnadd: true})
                    } else {
                        this.setState({ btnadd: false})
                    }
                    this.setState({ userCompActive, visibleTrue: true })
Rifka Kurnia Irfiana's avatar
Rifka Kurnia Irfiana committed
218
                    // console.log(userCompActive)
Rifka Kurnia Irfiana's avatar
Rifka Kurnia Irfiana committed
219 220
                } else {
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning', visibleTrue: true }, () => {
d.arizona's avatar
d.arizona committed
221
                        if (response.data.message.includes("Someone Logged In") || response.data.message.includes("Token Expired")) {
Rifka Kurnia Irfiana's avatar
Rifka Kurnia Irfiana committed
222 223 224 225 226 227 228 229 230 231 232 233 234
                            setTimeout(() => {
                                localStorage.removeItem(Constant.TOKEN)
                                window.location.reload();
                            }, 1000);
                        }
                    })
                }
            } else {
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error', listCompany: null, company: null, visibleTrue: true })
            }
        })
    }

Deni Rinaldi's avatar
Deni Rinaldi committed
235
    render() {
Rifka Kurnia Irfiana's avatar
Rifka Kurnia Irfiana committed
236
        const loadingComponent = (
237
            <div style={{ position: 'absolute', zIndex: 1500, top: 0, left: 0, width: '100%', height: '100%', display: 'flex', justifyContent: 'center', alignItems: 'center', background: 'rgba(255,255,255,0.8)' }}>
Rifka Kurnia Irfiana's avatar
Rifka Kurnia Irfiana committed
238 239 240 241 242 243 244 245
                <PropagateLoader
                    // css={override}
                    size={20}
                    color={"#274B80"}
                    loading={this.state.loading}
                />
            </div>
        );
Deni Rinaldi's avatar
Deni Rinaldi committed
246 247
        return (
            <div style={{ height: this.props.height, backgroundColor: '#f8f8f8' }}>
248
                {/* {this.props.load && ()} */}
Deni Rinaldi's avatar
Deni Rinaldi committed
249 250 251 252 253
                <Snackbar open={this.state.alert} autoHideDuration={6000} onClose={() => this.closeAlert()}>
                    <Alert onClose={() => this.closeAlert()} severity={this.state.tipeAlert}>
                        {this.state.messageAlert}
                    </Alert>
                </Snackbar>
Rifka Kurnia Irfiana's avatar
Rifka Kurnia Irfiana committed
254
                
Deni Rinaldi's avatar
Deni Rinaldi committed
255
                <div className={"main-color"} style={{ height: 78, display: 'flex', alignItems: 'center', paddingLeft: 20 }}>
256
                    <Typography style={{ fontSize: '16px', color: 'white' }}>Document Management</Typography>
Deni Rinaldi's avatar
Deni Rinaldi committed
257 258
                </div>
                <div style={{ padding: 20 }}>
syadziy's avatar
syadziy committed
259
                {this.state.loading && loadingComponent}
Deni Rinaldi's avatar
Deni Rinaldi committed
260
                    <Paper style={{ padding: 20 }}>
261
                        <div style={{ display: 'flex', justifyContent: 'flex-end' }}>
262
                        {(this.state.btncreate || this.state.btnadd) && <span>
263 264 265 266 267 268 269 270 271 272 273 274 275
                            <a data-tip={'Add'} data-for="add">
                                <div style={{ display: 'grid', justifyContent: 'flex-end' }}>
                                    <button
                                        type="button"
                                        onClick={() => this.setState({ visibleCreate: true, refresh: '' })}
                                        style={{ marginRight: 25, background: 'transparent' }}
                                    >
                                        <img src={Images.add} />
                                    </button>
                                </div>
                            </a>
                            <ReactTooltip border={true} id="add" place="bottom" type="light" effect="solid" />
                        </span>}
Deni Rinaldi's avatar
Deni Rinaldi committed
276
                        </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
277 278 279 280 281 282 283 284 285 286 287 288
                        <div style={{ display: 'flex' }}>
                            <Tabs
                                orientation="vertical"
                                variant="scrollable"
                                value={this.state.tab}
                                onChange={this.selectTab}
                                aria-label="simple tabs example"
                                style={{ width: 350 }}
                            >
                                {this.state.listData.map((item, index) => {
                                    return (
                                        <Tab
Rifka Kurnia Irfiana's avatar
Rifka Kurnia Irfiana committed
289
                                            onClick={() => this.setState({ name: item.value, id: item.setting_id, refresh: '', loadTable : false }, () => this.setState({loadTable: true}))}
Deni Rinaldi's avatar
Deni Rinaldi committed
290
                                            label={item.value}
Deni Rinaldi's avatar
Deni Rinaldi committed
291 292 293 294
                                        />
                                    )
                                })}
                            </Tabs>
Rifka Kurnia Irfiana's avatar
Rifka Kurnia Irfiana committed
295
                            {this.state.loadTable && this.state.visibleTrue && (
296 297 298 299 300 301 302
                                <AllDocument
                                    data={this.state.listData[this.state.tab]}
                                    refresh={this.state.refresh}
                                    btnedit={this.state.btnedit}
                                    btndelete={this.state.btndelete}
                                    load={this.state.load}
                                    setId={this.state.id}
Rifka Kurnia Irfiana's avatar
Rifka Kurnia Irfiana committed
303
                                    userCompActive={this.state.userCompActive}
304
                                    allsubcoEdit={this.state.btnadd}
Rifka Kurnia Irfiana's avatar
Rifka Kurnia Irfiana committed
305
                                    handleLoading={this.handleLoading.bind(this)}
306
                                    name={this.state.name}
307
                                />
Deni Rinaldi's avatar
Deni Rinaldi committed
308 309 310 311 312
                            )}
                        </div>

                    </Paper>
                </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
313 314 315 316 317 318
                {this.state.konfirmasi && (
                    <PopUpKonfirmasi
                        onClickClosePopUp={() => this.setState({ konfirmasi: false })}
                        uploadDocId={this.createUploadDocument.bind(this)}
                    />
                )}
Deni Rinaldi's avatar
Deni Rinaldi committed
319 320 321
                {this.state.visibleCreate && (
                    <CreateManagementDoc
                        onClickClose={() => this.setState({ visibleCreate: false })}
Deni Rinaldi's avatar
Deni Rinaldi committed
322 323
                        // getDataDocument={this.getDataDocument.bind(this)}
                        createDocument={this.createDocument.bind(this)}
Deni Rinaldi's avatar
Deni Rinaldi committed
324
                        setting_id={this.state.id}
Rifka Kurnia Irfiana's avatar
Rifka Kurnia Irfiana committed
325
                        name={this.state.name}
Rifka Kurnia Irfiana's avatar
Rifka Kurnia Irfiana committed
326
                        handleLoading={this.handleLoading.bind(this)}
327
                        allsubcoCreate={this.state.btnadd}
Deni Rinaldi's avatar
Deni Rinaldi committed
328 329
                    />
                )}
Deni Rinaldi's avatar
Deni Rinaldi committed
330 331 332 333
            </div>
        )
    }
}