import React, { Component } from 'react';
import { TextField, Divider, Typography, Checkbox, withStyles } from '@material-ui/core';
import api from '../../../api';

const CustomCheckbox = withStyles({
    root: {
      color: '#51c6ea',
      '&$checked': {
        color: '#51c6ea',
      },
    },
    checked: {},
  })((props) => <Checkbox color="default" {...props} />);

export default class EditUser extends Component {
    
    constructor(props) {
        super(props)
        this.state = {
            paramsId: this.props.data,
            tempData: null,
            menuData: null,
            privileges: [],
            checked: false
        }
    }

    handleChecked() {
        this.setState({checked: !this.state.checked})
    }
    
    componentDidMount() {
        this.getDetailRole()
        this.getMenu()
    }

    handleChange(e) {
        let data = this.state
        this.setState({...data, tempData: {...this.state.tempData, [e.target.name] : e.target.value}})
    }

    getDetailRole() {
        api.create().getDetailRole(this.state.paramsId).then((response) => {
            if (response.data.status == 'success') {
                this.setState({tempData: response.data.data, privileges: response.data.data.privileges})
            } else {
                alert(response.data.message)
            }
        })
    }


    updateRole() {
        let payload = {
            "role_id": 40,
            "role_name": "admin-tia",
            "start_date": "2020-01-01",
            "end_date": "2020-12-31",
            "privileges": [
                {
                    "menu_id": 17,
                    "button_id": [1, 2, 3]
                }
            ]
        }
    }

    getMenu() {
        api.create().getMenu().then((response) => {
            if (response.data.status == 'success') {
                this.setState({menuData: response.data.data})
            } else {
                alert(response.data.message)
            }
        })
    }

    handleItemChecked(item) {
        let indexID = this.state.privileges.findIndex((val) => val.menu_id == item.menu_id)
        return indexID == -1? false : true
    }

    handleItemClick(item) {
        let indexID = this.state.privileges.findIndex((val) => val.menu_id == item.menu_id)
        let privileges = this.state.privileges
        if (indexID == -1) {
            privileges.push({
                menu_id: item.menu_id,
                button_id: [1,2,3]
            })
        } else {
            privileges.splice(indexID,1)
        }
        this.setState({privileges})
    }

    handleSubItemChecked(item, index) {
        let indexID = this.state.privileges.findIndex((val) => val.menu_id == item.menu_id)
        let value = false
        if (indexID == -1) {
            value = false
        } else {
            let arrayButton = this.state.privileges[indexID].button_id
            console.log(arrayButton)
            let indexButtonID = this.state.privileges[indexID].button_id.findIndex((val) => val == index)
            // console.log(indexButtonID)
            if (indexButtonID == -1) {
                value = false
            } else {
                value = true
            }
        }
        return indexID == -1? value : value
    }

    handleSubItemClick(item, index) {
        let indexID = this.state.privileges.findIndex((val) => val.menu_id == item.menu_id)
        let indexButtonID = this.state.privileges[indexID].button_id.findIndex((val) => val == index)
        let privileges = this.state.privileges
        let button_id = privileges[indexID].button_id
        if (indexButtonID == -1) {
            button_id.push(index)
        } else {
            button_id.splice(indexButtonID,1)
        }
        privileges[indexID].button_id = button_id
        this.setState({privileges})
    }

    render() {
        return (
            <div className="test app-popup-show">
                <div className="popup-content background-white border-radius" style={{ borderRadius: 8 }}>
                    <div className="popup-panel grid grid-2x" style={{ backgroundColor: '#51c6ea', height: 64, borderTopRightRadius: 8, borderTopLeftRadius: 8 }}>
                        <div className="col-1" style={{ maxWidth: "inherit", display: 'flex', alignItems: 'center' }}>
                            <div className="popup-title">
                                <span style={{ color: '#fff', fontSize: 16, fontWeight: 'bold' }}>Ubah Data</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.props.onClickClose()}
                            >
                                <i className="fa fa-lg fa-times" style={{ color: 'white' }} />
                            </button>
                        </div>
                    </div>

                    <div className="grid grid-2x grid-mobile-none gap-15px" style={{ padding: 20 }}>
                        <div className="column-1">
                            <div className="margin-bottom-20px">
                                <TextField
                                    style={{ width: '100%' }}
                                    id="id"
                                    label="ID"
                                    disabled
                                    // id="outlined-read-only-input"
                                    variant="filled"
                                    value={this.state.tempData == null? '' : this.state.tempData.role_id}
                                    onChange={(e) => null}
                                >
                                    {/* {periode.map((option) => (
                                        <MenuItem key={option.value} value={option.value}>
                                            {option.label}
                                        </MenuItem>
                                    ))} */}
                                </TextField>
                            </div>
                        </div>

                        <div className="column-2">
                            <div className="margin-bottom-20px">
                                <TextField
                                style={{ width: '100%' , marginTop: 7}}
                                id="userRole"
                                name="role_name"
                                label="User Role"
                                value={this.state.tempData == null? '' : this.state.tempData.role_name}
                                onChange={(e) => this.handleChange(e)}
                                // defaultValue="Default Value"
                                // helperText="Some important text"
                                />
                            </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="startDate"
                                label="Berlaku Mulai"
                                name="start_date"
                                value={this.state.tempData == null? '' : this.state.tempData.start_date}
                                defaultValue="Default Value"
                                onChange={(e) => this.handleChange(e)}
                                // helperText="Some important text"
                                />
                            </div>
                        </div>

                        <div className="column-2">
                            <div className="margin-bottom-20px">
                                <TextField
                                style={{ width: '100%'}}
                                id="endDate"
                                label="Berlaku Hingga"
                                name="end_date"
                                value={this.state.tempData == null? '' : this.state.tempData.end_date}
                                defaultValue="Default Value"
                                onChange={(e) => this.handleChange(e)}
                                // helperText="Some important text"
                                />
                            </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"
                                    value={this.state.tempData == null? '' : this.state.tempData.status}
                                >
                                    {/* {periode.map((option) => (
                                        <MenuItem key={option.value} value={option.value}>
                                            {option.label}
                                        </MenuItem>
                                    ))} */}
                                </TextField>
                            </div>
                        </div>
                    </div>
                    <div style={{flexDirection:'column', display: 'flex', paddingLeft: 20, paddingRight: 20 }}>
                        <Typography style={{fontSize: 12}}>{`Dibuat  : ${this.state.tempData == null? '' : this.state.tempData.created}`}</Typography>
                        <Typography style={{fontSize: 12}}>{`Diubah: ${this.state.tempData == null? '' : this.state.tempData.updated}`}</Typography>
                    </div>
                    <Divider style={{margin: 20}}/>
                    <div style={{paddingLeft: 20, paddingRight: 20}}>
                        <h5>Hak Akses</h5>
                        <div className="grid grid-2x grid-mobile-none gap-15px padding-top-5px padding-bottom-5px padding-left-10px padding-right-10px " style={{backgroundColor: '#4b4b4b'}}>
                            <div className="column-1">
                                <Typography style={{fontSize: 12, color: 'white'}}>Otorisasi Modul</Typography>
                            </div>
                            <div className="column-2 grid grid-3x content-center grid-mobile-none gap-15px">
                                <div className="column-1">
                                    <Typography style={{fontSize: 12, color: 'white'}}>Lihat</Typography>
                                </div>
                                <div className="column-2">
                                    <Typography style={{fontSize: 12, color: 'white'}}>Tambah</Typography>
                                </div>
                                <div className="column 3">
                                    <Typography style={{fontSize: 12, color: 'white'}}>Ubah</Typography>
                                </div>
                            </div>
                        </div>
                        
                        <div style={{height: '25vh', overflow: 'scroll'}}>
                            {this.state.menuData !== null && this.state.menuData.map((item,index) => {
                                return (
                                    <div className="grid grid-2x grid-mobile-none gap-15px padding-left-10px padding-right-10px">
                                        <div className="column-1" style={{display: 'flex', flexDirection: 'row', alignItems: 'center'}}>
                                            <CustomCheckbox
                                                checked={this.handleItemChecked(item)}
                                                onChange={() => this.handleItemClick(item)}
                                            />
                                            <Typography style={{fontSize: 12}}>{item.menu_name}</Typography>
                                        </div>
                                        <div className="column-2 grid grid-3x content-center grid-mobile-none gap-15px">
                                            <div className="column-1">
                                                <CustomCheckbox
                                                    // disabled={}
                                                    checked={this.handleSubItemChecked(item, 1)}
                                                    onChange={() => this.handleSubItemClick(item,1)}
                                                />
                                            </div>
                                            <div className="column-2">
                                                <CustomCheckbox
                                                    // disabled
                                                    checked={this.handleSubItemChecked(item, 2)}
                                                    onChange={() => this.handleSubItemClick(item,2)}
                                                />
                                            </div>
                                            <div className="column 3">
                                                <CustomCheckbox
                                                    // disabled
                                                    checked={this.handleSubItemChecked(item, 3)}
                                                    onChange={() => this.handleSubItemClick(item,3)}
                                                />
                                            </div>
                                        </div>
                                    </div>
                                )
                            })}
                        </div>
                        
                    </div>
                    <div className="border-top grid grid-2x" style={{ height: 56, backgroundColor: '#f5f5f5', paddingLeft: 20, paddingRight: 20 }}>
                        <div className="column-1" style={{ alignSelf: 'center' }}>
                            <div style={{ width: 102, height: 30, border: 'solid 1px #354960', borderRadius: 5, alignItems: 'center', display: 'flex', justifyContent: 'center' }}>
                                <span style={{ color: '#354960', fontSize: 11 }}>Batal</span>
                            </div>
                        </div>
                        <div className="column-2" style={{display: 'flex', justifyContent: 'flex-end', alignItems: 'center'}}>
                            <div style={{ width: 102, height: 30, backgroundColor: '#354960', borderRadius: 5, alignItems: 'center', display: 'flex', justifyContent: 'center' }}>
                                <span style={{ color: '#fff', fontSize: 11 }}>Simpan</span>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        );
    }
}
