import React, { Component, PropTypes } from 'react';

import { connect } from 'react-redux';
import { mapStateToProps, mapDispatchToProps } from '../../src/propMaps.js';

import AcademicProfileProv from '../../src/pagelets/AcademicProfileProv.jsx';
import ChecklistProv from '../../src/pagelets/ChecklistProv.jsx';
import CourseHistoryProv from '../../src/pagelets/CourseHistoryProv.jsx';
import TodoListProv from '../../src/pagelets/TodoListProv.jsx';
import FinancialAidProv from '../../src/pagelets/FinancialAidProv.jsx';
import ServiceIndicatorsProv from '../../src/pagelets/ServiceIndicatorsProv.jsx';
import AccountSummaryProv from '../../src/pagelets/AccountSummaryProv.jsx';


import { NavigationDrawerCollection, NewsFeed } from 'catalyst-ui';

import { NavigationList } from '../../assets/mockData/NavigationCollection.js';
import { ManyStories } from '../../assets/mockData/News.js';

import {
  activityGuideEmpty,
  activityGuideItem,
  activityGuideArray,
  checklistEmpty,
  checklistItem,
  checklistArray,
} from '../../assets/mockData/ChecklistData.js';

const { object } = PropTypes;
const emptydata = 'empty';
class PageletProvider extends Component {
  render() {
    const {
      academicProfile,
      activityGuide,
      checklist,
      courseHistory,
      financialAid,
      navigationCollection,
      picture,
      profile,
      serviceIndicators,
      schedule,
      studentAccount
    } = this.props.storeStates;

    const {
      fetchAcademicProfile,
      invalidateAcademicProfile,
      fetchActivityGuide,
      invalidateActivityGuide,
      fetchCourseHistory,
      invalidateCourseHistory,
      fetchChecklist,
      invalidateChecklist,
      fetchFinancialAid,
      invalidateFinancialAid,
      fetchNavigationCollection,
      invalidateNavigationCollection,
      fetchPicture,
      invalidatePicture,
      fetchProfile,
      invalidateProfile,
      fetchServiceIndicators,
      invalidateServiceIndicators,
      fetchSchedule,
      fetchStudentAccount,
      invalidateStudentAccount
    } = this.props.storeDispatchers;

    // <ServiceIndicatorsProv serviceIndicators={serviceIndicators} fetch={fetchServiceIndicators} invalidate={invalidateServiceIndicators} />
    // <NavigationDrawerCollectionProv navigationCollection={navigationCollection} pageletName="ADMN_COURSES_SCHEDULE_1067293"  pageletTitle="Courses, Schedule and Grades" fetch={fetchNavigationCollection} invalidate={invalidateNavigationCollection} />
    // <FinancialAidProv financialAid={financialAid} fetch={fetchFinancialAid} invalidate={invalidateFinancialAid} />
    // <NavigationDrawerCollection ncd={NavigationList[0].NavCollection} />
    // <NavigationDrawerCollectionProv pageletName="UC_DROPDOWN_LAUNCHER" navigationCollection={navigationCollection} fetch={fetchNavigationCollection} invalidate={invalidateNavigationCollection} />
    // <ProfileProv
    //     picture={picture}
    //     profile={profile}
    //     fetchPicture={fetchPicture}
    //     fetchProfile={fetchProfile}
    //     invalidatePicture={invalidatePicture}
    //     invalidateProfile={invalidateProfile} />
    // <AcademicProfileProv data={schedule} fetch={fetchSchedule}/>

    return (
      <div key="PageletProvider">
        <AccountSummaryProv
          summary={studentAccount}
          fetch={fetchStudentAccount}
          invalidate={invalidateStudentAccount}
        />
        <br/>
        <AcademicProfileProv
          data={academicProfile}
          fetch={fetchAcademicProfile}
          invalidate={invalidateAcademicProfile}
          fetchNavCol={() => {console.log('fetch navcol')}}
        />
        <br/>
        <CourseHistoryProv
          data={courseHistory}
          fetch={fetchCourseHistory}
          invalidate={invalidateCourseHistory}
        />
        <br/>
        <NavigationDrawerCollection
          ncd={NavigationList[0].NavCollection}
        />
        <TodoListProv
          checklist={checklistEmpty}
          fetchChecklist={() => {console.log('fetch checklist')}}
          invalidateChecklist={() => {console.log('invalidate checklist')}}
          activityGuide={activityGuideEmpty}
          fetchActivityGuide={() => {console.log('fetch activity guide')}}
          invalidateActivityGuide={() => {console.log('invalidate activity guide')}}
        />
        <br/>
        <TodoListProv
          checklist={checklistEmpty}
          fetchChecklist={() => {console.log('fetch checklist')}}
          invalidateChecklist={() => {console.log('invalidate checklist')}}
          activityGuide={activityGuideItem}
          fetchActivityGuide={() => {console.log('fetch activity guide')}}
          invalidateActivityGuide={() => {console.log('invalidate activity guide')}}
        />
        <br/>
        <TodoListProv
          checklist={checklistItem}
          fetchChecklist={() => {console.log('fetch checklist')}}
          invalidateChecklist={() => {console.log('invalidate checklist')}}
          activityGuide={activityGuideEmpty}
          fetchActivityGuide={() => {console.log('fetch activity guide')}}
          invalidateActivityGuide={() => {console.log('invalidate activity guide')}}
        />
        <br/>
        <TodoListProv
          checklist={checklistItem}
          fetchChecklist={() => {console.log('fetch checklist')}}
          invalidateChecklist={() => {console.log('invalidate checklist')}}
          activityGuide={activityGuideItem}
          fetchActivityGuide={() => {console.log('fetch activity guide')}}
          invalidateActivityGuide={() => {console.log('invalidate activity guide')}}
        />
        <br/>
        <TodoListProv
          checklist={checklistArray}
          fetchChecklist={() => {console.log('fetch checklist')}}
          invalidateChecklist={() => {console.log('invalidate checklist')}}
          activityGuide={activityGuideItem}
          fetchActivityGuide={() => {console.log('fetch activity guide')}}
          invalidateActivityGuide={() => {console.log('invalidate activity guide')}}
        />
        <br/>
        <TodoListProv
          checklist={checklistItem}
          fetchChecklist={() => {console.log('fetch checklist')}}
          invalidateChecklist={() => {console.log('invalidate checklist')}}
          activityGuide={activityGuideArray}
          fetchActivityGuide={() => {console.log('fetch activity guide')}}
          invalidateActivityGuide={() => {console.log('invalidate activity guide')}}
        />
        <br/>
        <TodoListProv
          checklist={checklistArray}
          fetchChecklist={() => {console.log('fetch checklist')}}
          invalidateChecklist={() => {console.log('invalidate checklist')}}
          activityGuide={activityGuideArray}
          fetchActivityGuide={() => {console.log('fetch activity guide')}}
          invalidateActivityGuide={() => {console.log('invalidate activity guide')}}
        />
      </div>
    );
  }
}

PageletProvider.propTypes = {
  storeStates: PropTypes.object.isRequired,
  storeDispatchers: PropTypes.object.isRequired,
};

export default connect(mapStateToProps, mapDispatchToProps)(PageletProvider);
export { PageletProvider as PageletProviderDumb };
