import React, { Component } from "react";
import ApplicationItem from "./ApplicationItem";
import DeleteApplicationModal from './DeleteApplicationModal'
import { connect } from "react-redux";
import { bindActionCreators } from "redux";

import * as applicationManagementActions from '../../actions/ApplicationManagementActions'

const mapStateToProps = state => {
    return {
        showDeleteApplicationModal: state.DegreeCourseApplicationReducer.showDeleteApplicationModal,
        applicationList: state.DegreeCourseApplicationReducer.applicationList
    };
}

const DISPLAY = {
    LIST: "list"
}

class DegreeCourseApplicationManagement extends Component {

    constructor(props) {
        super(props);
        this.state = {
            displayingPage: DISPLAY.LIST
        }

        this.MapAllApplications = this.MapAllApplications.bind(this);
        this.handleShowDeleteModal = this.handleShowDeleteModal.bind(this);
        this.handleClose = this.handleClose.bind(this);
    }

    handleShowDeleteModal(e, dialogModalData) {
        e.preventDefault();
        const { showDeleteApplicationModalAction } = this.props
        showDeleteApplicationModalAction(dialogModalData)
    }

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

    MapAllApplications() {
        console.log(this.props.applicationList);
        const allApplications = this.props.applicationList
        if (allApplications) {
            var showDeleteApplicationModal = this.props.showDeleteApplicationModal
            if (showDeleteApplicationModal === undefined) {
                showDeleteApplicationModal = false
            }
            var applications = allApplications.map(application => {
                return (
                    <ApplicationItem key={application.id} application={application} handleShowDeleteModal={this.handleShowDeleteModal} />
                )
            })
            return applications
        }
    }

    render() {
        return (
            <div>
                <div id="DegreeCourseApplicationManagementPageListComponent" style={{ height: '50vw', backgroundColor: '#2b3648', padding: '2rem' }}>
                {this.MapAllApplications()}
                    <DeleteApplicationModal />
                </div>
            </div>
        )
    }
}

const mapDispatchToProps = dispatch => bindActionCreators({
    showDeleteApplicationModalAction: applicationManagementActions.getShowDeleteApplicationModalAction,
    hideDeleteApplicationModalAction: applicationManagementActions.getHideDeleteApplicationModalAction
}, dispatch)

const ConnectedApplicationManagement = connect(mapStateToProps, mapDispatchToProps)(DegreeCourseApplicationManagement)
export default ConnectedApplicationManagement