import { compose } from 'redux';
import { connect } from 'react-redux';
import { reduxForm } from 'redux-form';

import {
  FORM_NAME,
  onSubmit,
  submit,
  getInitialData,
  messages
} from '../../redux/branches/forms/clinicianDashboard';
import ClinicianDashboard from '../../components/ClinicianDashboard/ClinicianDashboard';
import { searchPatientsBegin } from '../../redux/branches/entities/patients';
import { transitToPatients } from '../../redux/branches/entities/patients';

export const mapDispatchToProps = dispatch => ({
  searchPatient: ({ pageId, limit, firstname, lastname, middlename }) => dispatch(searchPatientsBegin({ pageId, limit, firstname, lastname, middlename })),
  transitToPatients: () => dispatch(transitToPatients())
});

export const mapStateToProps = state => ({
});

// Compose composes functions left to right (FP)
const ClinicianDashboardContainer = compose(

  // Connects form to Redux store - takes a config obj to configure the form
  reduxForm({
    form: FORM_NAME,
    pure: false,
    // validate,
    onSubmit,
    submit,
    messages
  }),
  connect(mapStateToProps, mapDispatchToProps)
)(ClinicianDashboard);

ClinicianDashboardContainer.defaultProps = {
  get initialValues() {
    return getInitialData();
  },
};

export default ClinicianDashboardContainer;
