import React, { Component } from "react";
import Button from 'react-bootstrap/Button';
import Modal from 'react-bootstrap/Modal';
import { connect } from "react-redux";
import { bindActionCreators } from "redux";

import * as userManagementActions from "../state/UserManagementActions"

const mapStateToProps = state => {
    return {
        accessToken: state.AuthenticationReducer.accessToken,
        showDeleteUserModal: state.UserManagementReducer.showDeleteUserModal,
        deleteModalData: state.UserManagementReducer.deleteModalData
    };
}

class DeleteUserModal extends Component {

    constructor(props) {
        super(props);

        this.handleClose = this.handleClose.bind(this);
        this.handlePushDelete = this.handlePushDelete.bind(this);
    }

    handleClose() {
        const { hideDeleteUserModalAction } = this.props;
        hideDeleteUserModalAction();
    }

    handlePushDelete(e) {
        e.preventDefault();
        const { pushDeleteUserModalAction } = this.props;
        pushDeleteUserModalAction(this.props.deleteModalData.userID, this.props.accessToken)
    }

    render() {

        var showModal = this.props.showDeleteUserModal
        if (showModal === undefined) {
            showModal = false
        }
        let dialogID
        let name
        if (this.props.deleteModalData) {
            dialogID = this.props.deleteModalData.dialogID;
            name = this.props.deleteModalData.name;
        } else {
            dialogID = ""
            name = ""
        }

        return (
            <div className="modal show" id={dialogID} style={{ display: 'block', position: 'initial' }}>
                <Modal show={showModal} id={dialogID} onHide={this.handleClose}>
                    <Modal.Header closeButton>
                        <Modal.Title>User {name} löschen?</Modal.Title>
                    </Modal.Header>

                    <Modal.Body style={{ textAlign: 'left' }}>
                        <p>Soll User {name} gelöscht werden?</p>
                    </Modal.Body>

                    <Modal.Footer>
                        <Button variant="secondary" id="DeleteDialogCancelButton" onClick={this.handleClose}>Cancel</Button>
                        <Button variant="primary" id="DeleteDialogConfirmButton" onClick={this.handlePushDelete}>Delete</Button>
                    </Modal.Footer>
                </Modal>
            </div >
        )
    }
}


const mapDispatchToProps = dispatch => bindActionCreators({
    hideDeleteUserModalAction: userManagementActions.getHideDeleteUserModalAction,
    pushDeleteUserModalAction: userManagementActions.deleteUserWithID
}, dispatch)

const ConnectedDeleteUserModal = connect(mapStateToProps, mapDispatchToProps)(DeleteUserModal)
export default ConnectedDeleteUserModal