import React from 'react';
import './index.less';
import Assets from '@src/components/Assets';
import Page from '@src/containers/Page';
import { getMap } from '@src/services/Tools';
import Footer from '../../../components/Footer';
import { FaqModal, FinishModal } from '../../../components/OtherModal';
import { CommentFalls, AnswerCarousel, Consultation, Contact } from '../../../components/Other';
import Button from '../../../components/Button';
import { User } from '../../../stores/user';
import { Main } from '../../../stores/main';
import { Course } from '../../../stores/course';
import { ServiceKey, ServiceParamMap } from '../../../../Constant';
import { Order } from '../../../stores/order';
import Video from '../../../components/Video';

export default class extends Page {
  initState() {
    return {};
  }

  initData() {
    Main.getCourseIndex()
      .then(result => {
        this.setState({ courseIndex: result });
      });
    Main.getBase()
      .then(result => {
        this.setState({ base: result });
      });
    Course.listPackage({ isSpecial: true, page: 1, size: 3 })
      .then(result => {
        this.setState({ packages: result.list || [] });
      });
    Main.listFaq({ page: 1, size: 100, channel: 'course-index' }).then(result => {
      this.setState({ faqs: result.list });
    });
    Main.listComment({ page: 1, size: 100, channel: 'course-index' }).then(result => {
      this.setState({ coments: result.list });
    });
  }

  renderView() {
    const { courseIndex = {}, base = {}, packages = [], faqs = [], comments = [], showFaq, faq = {}, showFinish } = this.state;
    return (
      <div>
        <div className="block-1">
          <div className="body">
            <Assets name="" />
            <div className="main-title">Waste Less, Learn More.</div>
            <div className="btn-list">
              <Button width={100} size="lager" onClick={() => linkTo('/course/online?tab=package')}>
                查看套餐
              </Button>
              <Button className="t-4" width={100} theme="default" size="lager" onClick={() => linkTo('/course/online?tab=single')}>
                试听课程
              </Button>
            </div>
          </div>
        </div>
        <div className="block-2">
          <div className="main-title">找到你的Style</div>
          <div className="video-list">
            <div className="video-div">
              <Video src={courseIndex.onlineVideo || '/1.mp4'} width={580} height={360} hideAction />
              <div className="name" onClick={() => linkTo('/course/online')}>在线课程 ></div>
            </div>
            <div className="video-div">
              <Video src={'/1.mp4'} width={580} height={360} hideAction />
              <div className="name" onClick={() => linkTo('/course/vs')}>1v1私教 ></div>
            </div>
          </div>
          <div className="class-list">
            {packages.map(data => {
              const originMoney = data.courses.reduce((a, y) => a + y.price, 0);
              const novice = data.courses.filter(row => row.crowd !== 'novice').length === 0;
              return <div className="class-item">
                {novice && <Assets width={55} height={52} className="new" name="noviciate" />}
                <div className="t-s-22 t-4 m-b-5 f-w-b"><a href={`/course/package/detail/${data.id}`}>{data.title}</a></div>
                <div className="t-8 m-b-1">{data.description}</div>
                <div className="t-1 t-s-12">包含课程</div>
                <div className="m-b-5">
                  {data.courses.map((course => {
                    return <div className="m-b-1 m-r-5 t-9 t-s-12 d-i-b b-c-2 p-5">{course.title}({course.noNumber}课时)</div>;
                  }))}
                </div>
                <div className="t-1 t-s-12">配套服务</div>
                <div className="m-b-5">
                  <div className="m-b-1 m-r-5 t-9 t-s-12 d-i-b b-c-2 p-5">预习作业</div>
                  <div className="m-b-1 m-r-5 t-9 t-s-12 d-i-b b-c-2 p-5">课后答题</div>
                </div>
                <div className="t-1 t-s-12">赠送服务</div>
                <div className="m-b-2">
                  {data.gift &&
                    ServiceKey.map(row => {
                      if (!data.gift[row.value]) return null;
                      const list = ServiceParamMap[row.value];
                      if (list) {
                        const map = getMap(list, 'value', 'label');
                        return <div className="m-b-1 m-r-5 t-9 t-s-12 d-i-b b-c-2 p-5">{row.label}×{map[data.gift[row.value]]}</div>;
                      }
                      return <div className="m-b-1 m-r-5 t-9 t-s-12 d-i-b b-c-2 p-5">{row.label}×{data.gift[row.value]}</div>;
                    })}
                </div>
                <div className="t-8">
                  总价值: <span className="t-d-l-t">¥{originMoney}</span>
                </div>
                <div className="t-1 t-s-18 f-w-b m-b-1">套餐价: ¥{data.price}</div>
                <div className="m-b-5">
                  <Button size="lager" onClick={() => User.needLogin().then(() => Order.addCheckout({ productType: 'course_package', productId: data.id }).then(() => linkTo('/cart')))}>立即购买</Button>
                </div>
              </div>;
            })}
          </div>
        </div>
        <Consultation data={base.contact} />
        <div className="block-4">
          <div className="main-title">You will always find the answers</div>
          <Assets name="" />
          <div className="list">
            <div className="item">
              <div className="t-1 t-s-20 m-b-2">
                <Assets className="m-r-5" name="self_paced" /> Self-Paced
              </div>
              <div className="t-8">随时随地学习;不限听课次数;支持停课申请。</div>
            </div>
            <div className="item">
              <div className="t-1 t-s-20 m-b-2">
                <Assets className="m-r-5" name="teacher" /> 实力导师
              </div>
              <div className="t-8">从业8年,考取700+成绩10次。</div>
              <div className="t-4 ">
                <div className="link d-i-b">查看成绩单 ></div>
              </div>
            </div>
            <div className="item">
              <div className="t-1 t-s-20 m-b-2">
                <Assets className="m-r-5" name="excitation" /> 激励机制
              </div>
              <div className="t-8">保持听课频率,赠送课程时效。</div>
            </div>
          </div>
        </div>
        <CommentFalls list={comments} />
        <AnswerCarousel list={faqs} onFaq={() => this.setState({ showFaq: true, faq: { channel: 'course-index' } })} />
        <Contact data={base.contact} />
        <Footer />
        <FaqModal show={showFaq} defaultData={faq} onCancel={() => this.setState({ showFaq: false })} onConfirm={() => this.setState({ showFaq: false })} />
        <FinishModal
          show={showFinish}
          onConfirm={() => this.setState({ showFinish: false })}
        />
      </div >
    );
  }
}