EditUser.js 36.1 KB
Newer Older
d.arizona's avatar
d.arizona committed
1
import React, { Component } from 'react';
a.bairuha's avatar
a.bairuha committed
2
import { TextField, Divider, Typography, Checkbox, withStyles, Collapse, Snackbar } from '@material-ui/core';
d.arizona's avatar
d.arizona committed
3
import api from '../../../api';
d.arizona's avatar
d.arizona committed
4 5
import { titleCase } from '../../../library/Utils';
import Autocomplete from '@material-ui/lab/Autocomplete';
d.arizona's avatar
d.arizona committed
6 7 8 9
import { DatePicker } from '@material-ui/pickers';
import format from "date-fns/format";
import RemoveIcon from '@material-ui/icons/Remove';
import AddIcon from '@material-ui/icons/Add';
d.arizona's avatar
d.arizona committed
10
import * as R from 'ramda'
d.arizona's avatar
d.arizona committed
11
import Images from '../../../assets/Images';
a.bairuha's avatar
a.bairuha committed
12
import MuiAlert from '@material-ui/lab/Alert';
d.arizona's avatar
d.arizona committed
13 14 15 16

const CustomCheckbox = withStyles({
    root: {
        color: '#51c6ea',
Deni Rinaldi's avatar
Deni Rinaldi committed
17 18 19
        '&$checked': {
            color: '#51c6ea',
        },
d.arizona's avatar
d.arizona committed
20 21
    },
    checked: {},
Deni Rinaldi's avatar
Deni Rinaldi committed
22
})((props) => <Checkbox color="default" {...props} />);
d.arizona's avatar
d.arizona committed
23

Deni Rinaldi's avatar
Deni Rinaldi committed
24 25 26 27 28 29 30 31 32 33
const CustomCheckboxDisabled = withStyles({
    root: {
        color: '#d5d5d5',
        '&$checked': {
            color: '#d5d5d5',
        },
    },
    checked: {},
})((props) => <Checkbox color="default" {...props} />);

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

d.arizona's avatar
d.arizona committed
37
export default class EditUser extends Component {
Deni Rinaldi's avatar
Deni Rinaldi committed
38

d.arizona's avatar
d.arizona committed
39 40 41 42 43 44
    constructor(props) {
        super(props)
        this.state = {
            paramsId: this.props.data,
            tempData: null,
            menuData: null,
d.arizona's avatar
d.arizona committed
45 46 47 48
            checked: false,
            listRole: null,
            role: null,
            company: [],
d.arizona's avatar
d.arizona committed
49 50 51 52 53 54 55 56 57 58 59 60
            listCompany: [],
            selectedIndex: 0,
            errorFullname: false,
            errorEmail: false,
            errorRoleName: false,
            errorStartDate: false,
            errorEndDate: false,
            msgErrorFN: '',
            msgErrorEM: '',
            msgErrorRN: '',
            msgErrorSD: '',
            msgErrorED: '',
a.bairuha's avatar
a.bairuha committed
61 62 63
            alert: false,
            tipeAlert: '',
            messageAlert: ''
d.arizona's avatar
d.arizona committed
64 65 66 67
        }
    }

    handleChecked() {
Deni Rinaldi's avatar
Deni Rinaldi committed
68
        this.setState({ checked: !this.state.checked })
d.arizona's avatar
d.arizona committed
69
    }
Deni Rinaldi's avatar
Deni Rinaldi committed
70

d.arizona's avatar
d.arizona committed
71
    componentDidMount() {
d.arizona's avatar
d.arizona committed
72
        this.getDetailUser()
d.arizona's avatar
d.arizona committed
73
        this.getPerusahaan()
d.arizona's avatar
d.arizona committed
74 75
    }

d.arizona's avatar
d.arizona committed
76
    handleChange(e, type) {
d.arizona's avatar
d.arizona committed
77
        let data = this.state
d.arizona's avatar
d.arizona committed
78
        let isDate = type !== '' ? true : false
d.arizona's avatar
d.arizona committed
79
        if (isDate && type === 'start_date') {
Deni Rinaldi's avatar
Deni Rinaldi committed
80 81
            this.setState({
                ...data, tempData: { ...this.state.tempData, start_date: format(e, 'yyyy-MM-dd'), end_date: null },
d.arizona's avatar
d.arizona committed
82
                errorFullname: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
83
                errorEmail: false,
d.arizona's avatar
d.arizona committed
84 85 86
                errorRoleName: false,
                errorStartDate: false,
                errorEndDate: false,
d.arizona's avatar
d.arizona committed
87 88
                msgErrorFN: '',
                msgErrorEM: '',
d.arizona's avatar
d.arizona committed
89 90 91 92
                msgErrorRN: '',
                msgErrorSD: '',
                msgErrorED: '',
            })
d.arizona's avatar
d.arizona committed
93
        } else if (isDate && type === 'end_date') {
Deni Rinaldi's avatar
Deni Rinaldi committed
94 95
            this.setState({
                ...data, tempData: { ...this.state.tempData, end_date: format(e, 'yyyy-MM-dd') },
d.arizona's avatar
d.arizona committed
96
                errorFullname: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
97
                errorEmail: false,
d.arizona's avatar
d.arizona committed
98 99 100
                errorRoleName: false,
                errorStartDate: false,
                errorEndDate: false,
d.arizona's avatar
d.arizona committed
101 102
                msgErrorFN: '',
                msgErrorEM: '',
d.arizona's avatar
d.arizona committed
103 104 105 106 107
                msgErrorRN: '',
                msgErrorSD: '',
                msgErrorED: '',
            })
        } else {
Deni Rinaldi's avatar
Deni Rinaldi committed
108 109
            this.setState({
                ...data, tempData: { ...this.state.tempData, [e.target.name]: e.target.value },
d.arizona's avatar
d.arizona committed
110
                errorFullname: false,
Deni Rinaldi's avatar
Deni Rinaldi committed
111
                errorEmail: false,
d.arizona's avatar
d.arizona committed
112 113 114
                errorRoleName: false,
                errorStartDate: false,
                errorEndDate: false,
d.arizona's avatar
d.arizona committed
115 116
                msgErrorFN: '',
                msgErrorEM: '',
d.arizona's avatar
d.arizona committed
117 118
                msgErrorRN: '',
                msgErrorSD: '',
d.arizona's avatar
d.arizona committed
119
                msgErrorED: '',
d.arizona's avatar
d.arizona committed
120 121
            })
        }
d.arizona's avatar
d.arizona committed
122 123
    }

a.bairuha's avatar
a.bairuha committed
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
    clearError() {
        this.setState({
            errorFullname: false,
            errorEmail: false,
            errorRoleName: false,
            errorStartDate: false,
            errorEndDate: false,
            msgErrorFN: '',
            msgErrorEM: '',
            msgErrorRN: '',
            msgErrorSD: '',
            msgErrorED: '',
        })
    }

d.arizona's avatar
d.arizona committed
139 140
    getDetailUser() {
        api.create().getDetailUser(this.state.paramsId).then((response) => {
d.arizona's avatar
d.arizona committed
141
            this.getRole()
a.bairuha's avatar
a.bairuha committed
142 143 144 145 146 147 148 149 150 151 152
            if (response.data) {
                if (response.ok) {
                    if (response.data.status === 'success') {
                        this.setState({ tempData: response.data.data, company: response.data.data.company })
                        console.log(response.data.data)
                    } else {
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' })
                    }
                } else {
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error' })
                }
d.arizona's avatar
d.arizona committed
153
            } else {
a.bairuha's avatar
a.bairuha committed
154
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' })
d.arizona's avatar
d.arizona committed
155 156 157 158
            }
        })
    }

a.bairuha's avatar
a.bairuha committed
159 160 161 162 163
    isEmail(email) {
        const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
        return re.test(String(email).toLowerCase());
    }

d.arizona's avatar
d.arizona committed
164
    validasi() {
a.bairuha's avatar
a.bairuha committed
165 166 167
        var isEmail = this.isEmail(this.state.tempData.email)
        // console.log(this.state.tempData)

d.arizona's avatar
d.arizona committed
168
        if (R.isEmpty(this.state.tempData.fullname)) {
169
            this.setState({ errorFullname: true, msgErrorFN: 'Full Name Cannot be Empty' })
d.arizona's avatar
d.arizona committed
170
        } else if (R.isEmpty(this.state.tempData.email)) {
171
            this.setState({ errorEmail: true, msgErrorEM: 'Email Cannot be Empty' })
a.bairuha's avatar
a.bairuha committed
172
        } else if (!isEmail) {
d.arizona's avatar
d.arizona committed
173
            this.setState({ errorEmail: true, msgErrorEM: 'Email format not recognized!' })
a.bairuha's avatar
a.bairuha committed
174
        } else if (R.isNil(this.state.role)) {
175
            this.setState({ errorRoleName: true, msgErrorRN: 'Role Name Cannot be Empty' })
d.arizona's avatar
d.arizona committed
176
        } else if (R.isNil(this.state.tempData.start_date)) {
177
            this.setState({ errorStartDate: true, msgErrorSD: 'Start Date Cannot be Empty' })
d.arizona's avatar
d.arizona committed
178
        } else if (R.isNil(this.state.tempData.end_date)) {
179
            this.setState({ errorEndDate: true, msgErrorED: 'End Date Cannot be Empty' })
Deni Rinaldi's avatar
Deni Rinaldi committed
180
        }
d.arizona's avatar
d.arizona committed
181 182 183 184 185 186
        // else if (this.state.privileges.length < 1) {
        //     alert('Hak Akses belum di pilih !!')
        // } 
        else {
            this.updateUser()
        }
d.arizona's avatar
d.arizona committed
187
    }
d.arizona's avatar
d.arizona committed
188

Deni Rinaldi's avatar
Deni Rinaldi committed
189
    updateUser(){
d.arizona's avatar
d.arizona committed
190
        let payload = {
d.arizona's avatar
d.arizona committed
191 192 193 194 195 196 197
            "user_id": this.state.tempData.user_id,
            "role_id": this.state.role.role_id,
            "email": this.state.tempData.email,
            "fullname": this.state.tempData.fullname,
            "company": this.state.company,
            "start_date": this.state.tempData.start_date,
            "end_date": this.state.tempData.end_date
d.arizona's avatar
d.arizona committed
198
        }
Deni Rinaldi's avatar
Deni Rinaldi committed
199
        this.props.updateUser(payload)
d.arizona's avatar
d.arizona committed
200 201
    }

d.arizona's avatar
d.arizona committed
202
    getRole() {
203
        api.create().getRoleActive().then((response) => {
a.bairuha's avatar
a.bairuha committed
204 205 206 207 208 209 210 211 212 213 214 215 216 217
            if (response.data) {
                if (response.ok) {
                    if (response.data.status === 'success') {
                        let data = response.data.data
                        let roleData = data.map((item) => {
                            return {
                                role_id: item.role_id,
                                role_name: item.role_name
                            }
                        })
                        let defaultProps = {
                            options: roleData,
                            getOptionLabel: (option) => titleCase(option.role_name),
                        };
d.arizona's avatar
d.arizona committed
218

a.bairuha's avatar
a.bairuha committed
219 220 221 222 223 224 225 226
                        let index = roleData.findIndex((val) => val.role_id === this.state.tempData.role_id)
                        this.setState({ listRole: defaultProps, role: index === -1 ? roleData[0] : roleData[index] })
                    } else {
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' })
                    }
                } else {
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error' })
                }
d.arizona's avatar
d.arizona committed
227
            } else {
a.bairuha's avatar
a.bairuha committed
228
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' })
d.arizona's avatar
d.arizona committed
229
            }
d.arizona's avatar
d.arizona committed
230
        })
d.arizona's avatar
d.arizona committed
231 232
    }

d.arizona's avatar
d.arizona committed
233 234
    getPerusahaan() {
        api.create().getPerusahaanHierarki().then((response) => {
Deni Rinaldi's avatar
Deni Rinaldi committed
235
            if (response.data) {
a.bairuha's avatar
a.bairuha committed
236 237 238 239 240 241 242 243
                if (response.ok) {
                    if (response.data.status === 'success') {
                        this.setState({ listCompany: response.data.data })
                    } else {
                        this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'warning' })
                    }
                } else {
                    this.setState({ alert: true, messageAlert: response.data.message, tipeAlert: 'error' })
Deni Rinaldi's avatar
Deni Rinaldi committed
244 245
                }
            } else {
a.bairuha's avatar
a.bairuha committed
246
                this.setState({ alert: true, messageAlert: response.problem, tipeAlert: 'error' })
d.arizona's avatar
d.arizona committed
247 248 249 250 251
            }
        })
    }

    handleItemChecked(item) {
d.arizona's avatar
d.arizona committed
252
        let indexID = this.state.company.findIndex((val) => val === item.id)
d.arizona's avatar
d.arizona committed
253
        return indexID === -1 ? false : true
d.arizona's avatar
d.arizona committed
254 255 256
    }

    handleItemClick(item) {
d.arizona's avatar
d.arizona committed
257
        let indexID = this.state.company.findIndex((val) => val === item.id)
d.arizona's avatar
d.arizona committed
258
        let company = this.state.company
d.arizona's avatar
d.arizona committed
259
        if (indexID === -1) {
d.arizona's avatar
d.arizona committed
260
            company.push(item.id)
d.arizona's avatar
d.arizona committed
261 262 263 264 265 266 267 268 269 270 271 272 273 274
            if (item.parent !== null) {
                let indexIDs = this.state.company.findIndex((val) => val === item.parent)
                if (indexIDs === -1) {
                    company.push(item.parent)
                }
            }

            if (item.children !== null) {
                if (item.children.length > 0) {
                    item.children.map((items,indexs) => {
                        this.handleItemClick(items)
                    })
                }
            }
d.arizona's avatar
d.arizona committed
275 276
        } else {
            company.splice(indexID, 1)
d.arizona's avatar
d.arizona committed
277 278 279 280
            if (item.parent !== null) {
                let indexIDs = this.state.company.findIndex((val) => val === item.parent)
                if (indexIDs !== -1) {
                    company.splice(indexIDs, 1)
d.arizona's avatar
d.arizona committed
281 282 283 284 285 286 287 288
                }
            }

            if (item.children !== null) {
                if (item.children.length > 0) {
                    item.children.map((items,indexs) => {
                        this.handleItemClick(items)
                    })
d.arizona's avatar
d.arizona committed
289 290
                }
            }
d.arizona's avatar
d.arizona committed
291 292 293
        }
        this.setState({ company })
    }
d.arizona's avatar
d.arizona committed
294

Deni Rinaldi's avatar
Deni Rinaldi committed
295 296 297 298 299
    renderChildren = (item, pad) => {
        let padding = null
        if (pad !== undefined) {
            padding = pad
        } else {
d.arizona's avatar
d.arizona committed
300
            padding = 30
Deni Rinaldi's avatar
Deni Rinaldi committed
301
        }
d.arizona's avatar
d.arizona committed
302
        return (
a.bairuha's avatar
a.bairuha committed
303 304 305 306 307 308 309
            <div>
                {item.children.length > 0 && (
                    <ul>
                        {item.children.map((data, index) => {
                            return (
                                // <li>
                                <Collapse key={index} timeout="auto" unmountOnExit in={item.collapse}>
d.arizona's avatar
d.arizona committed
310
                                    <div style={{ display: 'flex', flexDirection: 'row', alignItems: 'center', justifyContent: 'flex-start', paddingLeft: !R.isNil(data.children)? (data.children.length > 0? padding : padding + 30) : padding + 30}}>
a.bairuha's avatar
a.bairuha committed
311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336
                                        {R.isNil(data.children) ?
                                            null
                                            :
                                            data.children.length < 1 ?
                                                null
                                                :
                                                <span onClick={() => this.handleCollapse(data)} style={{ marginLeft: 7, marginRight: 2 }}>
                                                    {data.collapse ? <RemoveIcon color={'action'} fontSize={'small'} /> : <AddIcon color={'action'} fontSize={'small'} />}
                                                </span>
                                        }
                                        <span>
                                            {this.state.role ? this.state.role.role_id === 1 ?
                                                <CustomCheckboxDisabled
                                                    disabled={true}
                                                    checked={true}
                                                // onChange={() => this.handleItemClick(item)}
                                                /> :
                                                <CustomCheckbox
                                                    checked={this.handleItemChecked(data)}
                                                    onChange={() => this.handleItemClick(data)}
                                                /> :
                                                <CustomCheckbox
                                                    checked={this.handleItemChecked(data)}
                                                    onChange={() => this.handleItemClick(data)}
                                                />
                                            }
Deni Rinaldi's avatar
Deni Rinaldi committed
337
                                        </span>
a.bairuha's avatar
a.bairuha committed
338 339
                                        <Typography style={{ fontSize: 12 }}>{titleCase(data.company_name)}</Typography>
                                    </div>
d.arizona's avatar
d.arizona committed
340
                                    {!R.isNil(data.children) && this.renderChildren(data, padding + 30)}
a.bairuha's avatar
a.bairuha committed
341 342 343 344 345 346 347
                                </Collapse>
                                // </li>
                            )
                        })}
                    </ul>
                )}
            </div>
d.arizona's avatar
d.arizona committed
348 349 350
        )
    }

d.arizona's avatar
d.arizona committed
351
    handleCollapse(item) {
Deni Rinaldi's avatar
Deni Rinaldi committed
352
        let path = this.searchIt({ children: this.state.listCompany }, item.id)
d.arizona's avatar
d.arizona committed
353 354
        let listCompany = this.state.listCompany
        let arrayPath = []
d.arizona's avatar
d.arizona committed
355

d.arizona's avatar
d.arizona committed
356 357
        if (path.length > 1) {
            arrayPath = path.split('-');
Deni Rinaldi's avatar
Deni Rinaldi committed
358
            arrayPath = arrayPath.map((item) => { return item })
d.arizona's avatar
d.arizona committed
359 360 361
        } else {
            arrayPath.push(path)
        }
d.arizona's avatar
d.arizona committed
362

d.arizona's avatar
d.arizona committed
363 364
        let pathSelect = null
        if (arrayPath.length == 1) {
Deni Rinaldi's avatar
Deni Rinaldi committed
365
            pathSelect = listCompany[arrayPath[0]]
d.arizona's avatar
d.arizona committed
366
        } else if (arrayPath.length == 2) {
Deni Rinaldi's avatar
Deni Rinaldi committed
367
            pathSelect = listCompany[arrayPath[0]].children[arrayPath[1]]
d.arizona's avatar
d.arizona committed
368
        } else if (arrayPath.length == 3) {
Deni Rinaldi's avatar
Deni Rinaldi committed
369
            pathSelect = listCompany[arrayPath[0]].children[arrayPath[1]].children[arrayPath[2]]
d.arizona's avatar
d.arizona committed
370
        } else if (arrayPath.length == 4) {
Deni Rinaldi's avatar
Deni Rinaldi committed
371
            pathSelect = listCompany[arrayPath[0]].children[arrayPath[1]].children[arrayPath[2]].children[arrayPath[3]]
d.arizona's avatar
d.arizona committed
372
        } else if (arrayPath.length == 5) {
Deni Rinaldi's avatar
Deni Rinaldi committed
373
            pathSelect = listCompany[arrayPath[0]].children[arrayPath[1]].children[arrayPath[2]].children[arrayPath[3]].children[arrayPath[4]]
d.arizona's avatar
d.arizona committed
374
        } else if (arrayPath.length == 6) {
Deni Rinaldi's avatar
Deni Rinaldi committed
375
            pathSelect = listCompany[arrayPath[0]].children[arrayPath[1]].children[arrayPath[2]].children[arrayPath[3]].children[arrayPath[4]].children[arrayPath[5]]
d.arizona's avatar
d.arizona committed
376
        } else if (arrayPath.length == 7) {
Deni Rinaldi's avatar
Deni Rinaldi committed
377
            pathSelect = listCompany[arrayPath[0]].children[arrayPath[1]].children[arrayPath[2]].children[arrayPath[3]].children[arrayPath[4]].children[arrayPath[5]].children[arrayPath[6]]
d.arizona's avatar
d.arizona committed
378
        }
d.arizona's avatar
d.arizona committed
379

d.arizona's avatar
d.arizona committed
380 381
        pathSelect.collapse = !pathSelect.collapse
        // console.log(pathSelect.collapse)
Deni Rinaldi's avatar
Deni Rinaldi committed
382
        this.setState({ listCompany }, () => console.log(pathSelect))
d.arizona's avatar
d.arizona committed
383
    }
d.arizona's avatar
d.arizona committed
384 385

    searchIt = (node, search, path = '', position = 0) => {
Deni Rinaldi's avatar
Deni Rinaldi committed
386 387
        if (node.id && node.id === search) { return path !== '' ? `${path}-${position}` : position; }
        if (!node.children) { return false }
d.arizona's avatar
d.arizona committed
388
        const index = node.children.findIndex((x) => x.id && x.id === search);
d.arizona's avatar
d.arizona committed
389
        if (index >= 0) {
Deni Rinaldi's avatar
Deni Rinaldi committed
390
            return path !== '' ? `${path}-${index}` : index;
d.arizona's avatar
d.arizona committed
391
        }
d.arizona's avatar
d.arizona committed
392
        for (let i = 0; i < node.children.length; i++) {
Deni Rinaldi's avatar
Deni Rinaldi committed
393 394 395 396
            const result = this.searchIt(node.children[i], search, path !== '' ? `${path}-${i}` : i, i);
            if (result) {
                return result;
            }
d.arizona's avatar
d.arizona committed
397 398 399 400
        }
        return false;
    };

a.bairuha's avatar
a.bairuha committed
401 402 403 404
    closeAlert() {
      this.setState({ alert: false })
    }

d.arizona's avatar
d.arizona committed
405 406 407
    render() {
        return (
            <div className="test app-popup-show">
a.bairuha's avatar
a.bairuha committed
408 409 410 411 412
                <Snackbar open={this.state.alert} autoHideDuration={6000} onClose={() => this.closeAlert()}>
                    <Alert onClose={() => this.closeAlert()} severity={this.state.tipeAlert}>
                        {this.state.messageAlert}
                    </Alert>
                </Snackbar>
d.arizona's avatar
d.arizona committed
413
                <div className="popup-content background-white border-radius" style={{ borderRadius: 8 }}>
414
                    <div className="popup-panel grid grid-2x main-color" style={{ height: 64, borderTopRightRadius: 8, borderTopLeftRadius: 8 }}>
d.arizona's avatar
d.arizona committed
415 416
                        <div className="col-1" style={{ maxWidth: "inherit", display: 'flex', alignItems: 'center' }}>
                            <div className="popup-title">
d.arizona's avatar
d.arizona committed
417
                                <span style={{ color: '#fff', fontSize: 16, fontWeight: 'bold' }}>Edit Data</span>
d.arizona's avatar
d.arizona committed
418 419 420 421 422 423 424 425
                            </div>
                        </div>
                        <div className="col-2 content-right" style={{ maxWidth: "inherit", alignSelf: 'center' }}>
                            <button
                                type="button"
                                className="btn btn-circle btn-white"
                                onClick={() => this.props.onClickClose()}
                            >
Deni Rinaldi's avatar
Deni Rinaldi committed
426
                                <img src={Images.close} />
d.arizona's avatar
d.arizona committed
427 428 429 430 431 432
                            </button>
                        </div>
                    </div>

                    <div className="grid grid-2x grid-mobile-none gap-15px" style={{ padding: 20 }}>
                        <div className="column-1">
d.arizona's avatar
d.arizona committed
433
                            <div className="">
d.arizona's avatar
d.arizona committed
434 435 436 437 438 439 440
                                <TextField
                                    style={{ width: '100%' }}
                                    id="id"
                                    label="ID"
                                    disabled
                                    // id="outlined-read-only-input"
                                    variant="filled"
Deni Rinaldi's avatar
Deni Rinaldi committed
441
                                    value={this.state.tempData === null ? '' : this.state.tempData.user_id}
d.arizona's avatar
d.arizona committed
442
                                    onChange={(e) => null}
a.bairuha's avatar
a.bairuha committed
443 444 445 446 447 448 449 450 451 452 453 454 455
                                    inputProps={{
                                        style: {
                                            fontSize: 11,
                                            fontFamily: 'Nunito Sans, sans-serif',
                                        }
                                    }}
                                    InputLabelProps={{
                                        style: {
                                            fontSize: 11,
                                            color: '#7e8085',
                                            fontFamily: 'Nunito Sans, sans-serif',
                                        }
                                    }}
d.arizona's avatar
d.arizona committed
456 457 458 459 460 461 462 463 464 465 466
                                >
                                    {/* {periode.map((option) => (
                                        <MenuItem key={option.value} value={option.value}>
                                            {option.label}
                                        </MenuItem>
                                    ))} */}
                                </TextField>
                            </div>
                        </div>

                        <div className="column-2">
d.arizona's avatar
d.arizona committed
467 468
                            <div className="">
                                <TextField
Deni Rinaldi's avatar
Deni Rinaldi committed
469 470 471
                                    style={{ width: '100%', marginTop: 7 }}
                                    id="fullname"
                                    name="fullname"
d.arizona's avatar
d.arizona committed
472
                                    label="Full Name"
Deni Rinaldi's avatar
Deni Rinaldi committed
473 474 475 476 477
                                    value={this.state.tempData === null ? '' : this.state.tempData.fullname}
                                    onChange={(e) => this.handleChange(e, '')}
                                    // defaultValue="Default Value"
                                    error={this.state.errorFullname}
                                    helperText={this.state.msgErrorFN}
a.bairuha's avatar
a.bairuha committed
478 479 480 481 482 483 484 485 486 487 488 489 490
                                    inputProps={{
                                        style: {
                                            fontSize: 11,
                                            fontFamily: 'Nunito Sans, sans-serif',
                                        }
                                    }}
                                    InputLabelProps={{
                                        style: {
                                            fontSize: 11,
                                            color: '#7e8085',
                                            fontFamily: 'Nunito Sans, sans-serif',
                                        }
                                    }}
d.arizona's avatar
d.arizona committed
491 492 493 494 495 496 497
                                />
                            </div>
                        </div>
                    </div>

                    <div className="grid grid-2x grid-mobile-none gap-15px" style={{ paddingLeft: 20, paddingRight: 20 }}>
                        <div className="column-1">
d.arizona's avatar
d.arizona committed
498 499
                            <div className="margin-bottom-20px">
                                <TextField
Deni Rinaldi's avatar
Deni Rinaldi committed
500 501 502 503 504 505 506 507
                                    style={{ width: '100%', marginTop: 7 }}
                                    id="email"
                                    name="email"
                                    label="Email"
                                    value={this.state.tempData === null ? '' : this.state.tempData.email}
                                    onChange={(e) => this.handleChange(e, '')}
                                    error={this.state.errorEmail}
                                    helperText={this.state.msgErrorEM}
a.bairuha's avatar
a.bairuha committed
508 509 510 511 512 513 514 515 516 517 518 519 520
                                    inputProps={{
                                        style: {
                                            fontSize: 11,
                                            fontFamily: 'Nunito Sans, sans-serif',
                                        }
                                    }}
                                    InputLabelProps={{
                                        style: {
                                            fontSize: 11,
                                            color: '#7e8085',
                                            fontFamily: 'Nunito Sans, sans-serif',
                                        }
                                    }}
d.arizona's avatar
d.arizona committed
521 522 523
                                />
                            </div>
                        </div>
d.arizona's avatar
d.arizona committed
524 525 526 527 528 529

                        <div className="column-2">
                            <div className="margin-bottom-20px">
                                <Autocomplete
                                    {...this.state.listRole}
                                    id="role"
a.bairuha's avatar
a.bairuha committed
530
                                    onChange={(event, newInputValue) => this.setState({ role: newInputValue }, ()=> this.clearError())}
d.arizona's avatar
d.arizona committed
531
                                    debug
Deni Rinaldi's avatar
Deni Rinaldi committed
532

a.bairuha's avatar
a.bairuha committed
533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549
                                    renderInput={(params) => <TextField 
                                        {...params} 
                                        label="Role" 
                                        margin="normal" 
                                        style={{ marginTop: 7 }} 
                                        onChange={(e) => this.handleChange(e, '')}
                                        error={this.state.errorRoleName}
                                        helperText={this.state.msgErrorRN}
                                        InputLabelProps={{
                                            style: {
                                                fontSize: 11,
                                                fontFamily: 'Nunito Sans, sans-serif',
                                                color: '#7e8085'
                                            }
                                        }}
                                        InputProps={{ ...params.InputProps, style: { fontSize: 11, fontFamily: 'Nunito Sans, sans-serif' } }}
                                        />}
d.arizona's avatar
d.arizona committed
550 551 552 553
                                    value={this.state.role}
                                />
                            </div>
                        </div>
d.arizona's avatar
d.arizona committed
554 555 556 557 558
                    </div>

                    <div className="grid grid-2x grid-mobile-none gap-15px" style={{ paddingLeft: 20, paddingRight: 20 }}>
                        <div className="column-1">
                            <div className="margin-bottom-20px">
d.arizona's avatar
d.arizona committed
559 560 561
                                <DatePicker
                                    margin="normal"
                                    id="startDate"
d.arizona's avatar
d.arizona committed
562
                                    label="Start Date"
d.arizona's avatar
d.arizona committed
563
                                    format="dd MMMM yyyy"
d.arizona's avatar
d.arizona committed
564
                                    value={this.state.tempData === null ? null : this.state.tempData.start_date}
d.arizona's avatar
d.arizona committed
565 566 567 568 569 570
                                    error={this.state.errorStartDate}
                                    helperText={this.state.msgErrorSD}
                                    onChange={(e) => this.handleChange(e, 'start_date')}
                                    KeyboardButtonProps={{
                                        'aria-label': 'change date',
                                    }}
a.bairuha's avatar
a.bairuha committed
571 572 573 574 575 576 577 578 579 580 581 582 583
                                    inputProps={{
                                        style: {
                                            fontSize: 11,
                                            fontFamily: 'Nunito Sans, sans-serif',
                                        }
                                    }}
                                    InputLabelProps={{
                                        style: {
                                            fontSize: 11,
                                            color: '#7e8085',
                                            fontFamily: 'Nunito Sans, sans-serif',
                                        }
                                    }}
d.arizona's avatar
d.arizona committed
584
                                    style={{ padding: 0, margin: 0, width: '100%' }}
d.arizona's avatar
d.arizona committed
585 586 587
                                />
                            </div>
                        </div>
d.arizona's avatar
d.arizona committed
588

d.arizona's avatar
d.arizona committed
589 590
                        <div className="column-2">
                            <div className="margin-bottom-20px">
d.arizona's avatar
d.arizona committed
591 592 593
                                <DatePicker
                                    margin="normal"
                                    id="endDate"
d.arizona's avatar
d.arizona committed
594
                                    label="End Date"
d.arizona's avatar
d.arizona committed
595
                                    format="dd MMMM yyyy"
d.arizona's avatar
d.arizona committed
596
                                    value={this.state.tempData === null ? null : this.state.tempData.end_date}
d.arizona's avatar
d.arizona committed
597 598
                                    error={this.state.errorEndDate}
                                    helperText={this.state.msgErrorED}
d.arizona's avatar
d.arizona committed
599
                                    minDate={this.state.tempData === null ? null : this.state.tempData.start_date}
d.arizona's avatar
d.arizona committed
600 601 602 603
                                    onChange={(e) => this.handleChange(e, 'end_date')}
                                    KeyboardButtonProps={{
                                        'aria-label': 'change date',
                                    }}
a.bairuha's avatar
a.bairuha committed
604 605 606 607 608 609 610 611 612 613 614 615 616
                                    inputProps={{
                                        style: {
                                            fontSize: 11,
                                            fontFamily: 'Nunito Sans, sans-serif',
                                        }
                                    }}
                                    InputLabelProps={{
                                        style: {
                                            fontSize: 11,
                                            color: '#7e8085',
                                            fontFamily: 'Nunito Sans, sans-serif',
                                        }
                                    }}
d.arizona's avatar
d.arizona committed
617
                                    style={{ padding: 0, margin: 0, width: '100%' }}
d.arizona's avatar
d.arizona committed
618 619 620 621 622 623 624 625 626 627 628 629 630 631 632
                                />
                            </div>
                        </div>
                    </div>

                    <div className="grid grid-2x grid-mobile-none gap-15px" style={{ paddingLeft: 20, paddingRight: 20 }}>
                        <div className="column-1">
                            <div className="margin-bottom-20px">
                                <TextField
                                    style={{ width: '100%' }}
                                    id="status"
                                    label="Status"
                                    disabled
                                    // id="outlined-read-only-input"
                                    variant="filled"
Deni Rinaldi's avatar
Deni Rinaldi committed
633
                                    value={this.state.tempData === null ? '' : this.state.tempData.status}
a.bairuha's avatar
a.bairuha committed
634 635 636 637 638 639 640 641 642 643 644 645 646
                                    inputProps={{
                                        style: {
                                            fontSize: 11,
                                            fontFamily: 'Nunito Sans, sans-serif',
                                        }
                                    }}
                                    InputLabelProps={{
                                        style: {
                                            fontSize: 11,
                                            color: '#7e8085',
                                            fontFamily: 'Nunito Sans, sans-serif',
                                        }
                                    }}
d.arizona's avatar
d.arizona committed
647 648 649 650 651 652 653 654 655
                                >
                                    {/* {periode.map((option) => (
                                        <MenuItem key={option.value} value={option.value}>
                                            {option.label}
                                        </MenuItem>
                                    ))} */}
                                </TextField>
                            </div>
                        </div>
d.arizona's avatar
d.arizona committed
656 657 658 659 660 661 662 663 664 665 666

                        <div className="column-2">
                            <div className="margin-bottom-20px">
                                <TextField
                                    style={{ width: '100%' }}
                                    id="is_expired"
                                    name="is_expired"
                                    label="Expired"
                                    disabled
                                    // id="outlined-read-only-input"
                                    variant="filled"
Deni Rinaldi's avatar
Deni Rinaldi committed
667
                                    value={this.state.tempData === null ? '' : this.state.tempData.is_expired}
a.bairuha's avatar
a.bairuha committed
668 669 670 671 672 673 674 675 676 677 678 679 680
                                    inputProps={{
                                        style: {
                                            fontSize: 11,
                                            fontFamily: 'Nunito Sans, sans-serif',
                                        }
                                    }}
                                    InputLabelProps={{
                                        style: {
                                            fontSize: 11,
                                            color: '#7e8085',
                                            fontFamily: 'Nunito Sans, sans-serif',
                                        }
                                    }}
d.arizona's avatar
d.arizona committed
681 682 683 684 685 686 687 688 689
                                >
                                    {/* {periode.map((option) => (
                                        <MenuItem key={option.value} value={option.value}>
                                            {option.label}
                                        </MenuItem>
                                    ))} */}
                                </TextField>
                            </div>
                        </div>
d.arizona's avatar
d.arizona committed
690
                    </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
691
                    <div style={{ flexDirection: 'column', display: 'flex', paddingLeft: 20, paddingRight: 20 }}>
a.bairuha's avatar
a.bairuha committed
692 693
                        <Typography style={{ fontSize: 11 }}>{`Created By  : ${this.state.tempData === null ? '' : this.state.tempData.created}`}</Typography>
                        <Typography style={{ fontSize: 11 }}>{`Updated By  : ${this.state.tempData === null ? '' : this.state.tempData.updated}`}</Typography>
d.arizona's avatar
d.arizona committed
694
                    </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
695 696
                    <Divider style={{ margin: 20 }} />
                    <div style={{ paddingLeft: 20, paddingRight: 20 }}>
d.arizona's avatar
d.arizona committed
697
                        <h5>Authorization Company</h5>
Deni Rinaldi's avatar
Deni Rinaldi committed
698 699 700
                        <div style={{ paddingLeft: 10, overflow: 'scroll', height: '25vh' }}>
                            {this.state.listCompany.map((item, index) => {
                                return (
d.arizona's avatar
d.arizona committed
701
                                    <div>
d.arizona's avatar
d.arizona committed
702 703
                                        {/* <ul>
                                            <li> */}
Deni Rinaldi's avatar
Deni Rinaldi committed
704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728
                                        <div style={{ display: 'flex', flexDirection: 'row', alignItems: 'center', justifyContent: 'flex-start' }}>
                                            {item.children.length > 0 && <span onClick={() => this.handleCollapse(item)} style={{ marginLeft: 7, marginRight: 2 }}>
                                                {item.collapse ? <RemoveIcon color={'action'} fontSize={'small'} /> : <AddIcon color={'action'} fontSize={'small'} />}
                                            </span>}
                                            <span>
                                                {this.state.role ? this.state.role.role_id === 1 ?
                                                    <CustomCheckboxDisabled
                                                        disabled={true}
                                                        checked={true}
                                                    // onChange={() => this.handleItemClick(item)}
                                                    /> :
                                                    <CustomCheckbox
                                                        checked={this.handleItemChecked(item)}
                                                        onChange={() => this.handleItemClick(item)}
                                                    /> :
                                                    <CustomCheckbox
                                                        checked={this.handleItemChecked(item)}
                                                        onChange={() => this.handleItemClick(item)}
                                                    />
                                                }
                                            </span>
                                            <Typography style={{ fontSize: 12 }}>{titleCase(item.company_name)}</Typography>
                                        </div>
                                        {!R.isNil(item.children) && this.renderChildren(item)}
                                        {/* </li>
d.arizona's avatar
d.arizona committed
729
                                        </ul> */}
d.arizona's avatar
d.arizona committed
730 731 732 733
                                    </div>
                                )
                            })}
                        </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
734

d.arizona's avatar
d.arizona committed
735 736 737
                    </div>
                    <div className="border-top grid grid-2x" style={{ height: 56, backgroundColor: '#f5f5f5', paddingLeft: 20, paddingRight: 20 }}>
                        <div className="column-1" style={{ alignSelf: 'center' }}>
d.arizona's avatar
d.arizona committed
738 739
                            <button onClick={() => this.props.onClickClose()}>
                                <div style={{ width: 102, height: 30, border: 'solid 1px #354960', borderRadius: 5, alignItems: 'center', display: 'flex', justifyContent: 'center' }}>
d.arizona's avatar
d.arizona committed
740
                                    <span style={{ color: '#354960', fontSize: 11 }}>Cancel</span>
d.arizona's avatar
d.arizona committed
741 742
                                </div>
                            </button>
d.arizona's avatar
d.arizona committed
743
                        </div>
Deni Rinaldi's avatar
Deni Rinaldi committed
744
                        <div className="column-2" style={{ display: 'flex', justifyContent: 'flex-end', alignItems: 'center' }}>
d.arizona's avatar
d.arizona committed
745 746
                            <button onClick={() => this.validasi()}>
                                <div style={{ width: 102, height: 30, backgroundColor: '#354960', borderRadius: 5, alignItems: 'center', display: 'flex', justifyContent: 'center' }}>
d.arizona's avatar
d.arizona committed
747
                                    <span style={{ color: '#fff', fontSize: 11 }}>Save</span>
d.arizona's avatar
d.arizona committed
748 749
                                </div>
                            </button>
d.arizona's avatar
d.arizona committed
750 751 752 753 754 755 756
                        </div>
                    </div>
                </div>
            </div>
        );
    }
}