import React, {Component} from 'react'
import {Accordion, Toast} from 'antd-mobile'
import {HeaderBar, CallApp} from '@/common'
import {http, getParam,browser} from '@/utils'
import './index.scss'
import {connect} from "react-redux"
import Mask from './../poup/index.js'
import ShareRank from "@components/detail/shareRank"

class PythonStudy extends Component {
    constructor(props) {
        super(props)
        this.state = {
            toApp: false,
            courseInfo: '',
            orderId: '',
            syllabus: '',
            learning: '',
            isShowChannel: window.sessionStorage.getItem('isShowSiteWindowByChannel')
        }
    }

    componentDidMount() {
        this.fetchCourseDetail()
    }

    fetchCourseDetail = () => {
        const {buyTry} = this.props

        http.get(`${API['home']}/web/it_detail?course_id=${getParam('id')}&is_pay=1&buy_try=${buyTry}`).then(res => {
            const {data, code, msg} = res.data
            if (code === 200) {
                this.setState({
                    courseInfo: data.course_info,
                    syllabus: data.syllabus,
                    learning: data.learning
                })
            } else {
                Toast.info(msg, 2)
            }
        })
    }

    Change = (data) => {
        let cn = ["一", "二", "三", "四", "五", "六", "七", "八", "九", '十']
        let newStr = ''
        let str = data.toString()
        let ci = Number(str) % 10
        let cs = Math.floor(Number(str) / 10)
        let cv = ''
        if (str.length > 1) {
            if (cs == 1) {
                cv = ci >= 1 ? cn[9] + cn[ci - 1] : cn[9]
            } else {
                cv = ci > 1 ? cn[cs - 1] + cn[9] + cn[ci - 1] : cn[cs - 1] + cn[9]
            }
        } else {
            cv = cn[ci - 1]
        }
        newStr = str.replace(str, cv)
        return newStr
    }

    onChange = (key) => {
        console.log(key)
    }

    toPythonHome = (isUnlock) => {
        if (isUnlock == 1) {
            this.setState({
                toApp: true
            })
        }
    }

    toLearn = () => {
        this.setState({
            toApp: true
        })
    }
    closePop = () => {
        this.setState({
            toApp: false,
        })
    }

    creatOid=()=>{
        http.post(`${API['base-api']}/sys/it_baoming/create`, {course_id: getParam('id')}).then(res => {
            const {errno, data, msg} = res.data
            if (errno === 200) {
                this.setState({
                    orderId: data.oid
                })
                this.weixinPay(data.oid)
            } else {
                Toast.info(msg, 2)
            }
        })
    }
    // 微信支付
    weixinPay = (orderId) => {
        // 微信内部-支付
        if (browser.isWeixin) {
            let url = window.location.origin + location.pathname + '?id=' + getParam('id')
            window.location.href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx23dac6775ac82877&redirect_uri=" + encodeURIComponent(url + "&aa=bb&oid=" + orderId).toLowerCase() + "&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
        } else {
            // 微信外部-支付
            http.get(`${API['base-api']}/pay/wxpay/wap_charge/oid/${orderId}`).then((res) => {
                if (res.data.errno === 0) {
                    window.location.href = res.data.data.url + "&redirect_url=" + encodeURIComponent(window.location.href + "&weixinpay=1&oid=" + orderId).toLowerCase();
                } else {
                    Toast.info(res.data.msg, 2)
                }
            })
        }
    }


    render() {
        const {user} = this.props
        const uid = user && user.data && user.data.uid
        const {courseInfo, syllabus, learning, toApp} = this.state
        return (
            <div className="python-study">
                <HeaderBar title='机器学习小课' arrow={true}/>
                <div className="python-study__header">
                    <div className="python-study__course">
                        <h2 className="python-study__course-name">机器学习小课</h2>
                        {
                            courseInfo.buy_try == 0 &&
                            <p className="python-study__course-contact">
                                <span>{courseInfo.contact_type == 1 ? '上课请加QQ学习群' : '添加助教微信入群'}：{courseInfo.course_qq}</span>
                                <span>并备注您的学号：{uid}</span>
                            </p>
                        }
                    </div>
                    {
                        learning.schedule > 0 &&
                        <div className="python-study__progress">
                            <h2 className="python-study__progress-title">
                                学习进度
                                {
                                    !!learning.day && <span>（已连续学习<span>{learning.day}</span>天）</span>
                                }
                            </h2>
                            <div className="python-study__progress-bar">
                                <i style={{width: learning.schedule + '%'}}/>
                                <span className="python-study__progress-tip"
                                      style={{left: learning.schedule + '%'}}>{learning.schedule + '%'}</span>
                            </div>
                        </div>
                    }

                    {
                        this.state.isShowChannel == 1 &&
                        <CallApp className='toapp'/>
                    }

                </div>
                {
                    !!courseInfo.is_dist && <div className={'dist-wrapper'}>
                        <ShareRank courseInfo={courseInfo}/>
                    </div>
                }
                <Accordion
                    defaultActiveKey="0"
                    className="python-study__stage"
                    onChange={this.onChange}
                >
                    {
                        syllabus && syllabus.length > 0 && syllabus.map((syllabusItem, index) => {
                            let header = `第${this.Change(syllabusItem.stage)}阶段：${syllabusItem.name}`
                            return (
                                <Accordion.Panel header={header} className="pad" key={index}>
                                    {
                                        syllabusItem.lessons && syllabusItem.lessons.length > 0 && syllabusItem.lessons.map((lessonsItem, index) => {
                                            return (
                                                <div key={index}>
                                                    <h2 className="python-study__pass">
                                                        第{lessonsItem.shut}关 {lessonsItem.name}
                                                        {
                                                            lessonsItem.complete == 1 &&
                                                            <i className="python-study__pass-tag">闯关完成</i>
                                                        }
                                                    </h2>

                                                    <div className="python-study__subject"
                                                         style={{opacity: lessonsItem.info.is_unlock == 0 ? '.6' : '1'}}
                                                         onClick={() => {
                                                             this.toPythonHome(lessonsItem.info.is_unlock)
                                                         }}
                                                         key={index}>
                                                        <img className="python-study__subject-icon"
                                                             src={lessonsItem.info.img_url} alt=""/>
                                                        {
                                                            lessonsItem.info.is_unlock == 1 && lessonsItem.info.complete == 1 &&
                                                            <i className="python-study__subject-status"
                                                               data-status="complete"/>
                                                        }
                                                        {
                                                            lessonsItem.info.is_unlock == 0 &&
                                                            <i className="python-study__subject-status"
                                                               data-status="lock"/>
                                                        }
                                                        <div className="python-study__subject-content">
                                                            <h2 className="python-study__subject-title text-overflow-1">{lessonsItem.info.name}</h2>
                                                        </div>
                                                    </div>

                                                    {
                                                        lessonsItem.project && <div className="python-study__subject"
                                                                                    style={{opacity: lessonsItem.project.is_unlock == 0 ? '.6' : '1'}}
                                                                                    onClick={() => {
                                                                                        this.toPythonHome(lessonsItem.project.is_unlock)
                                                                                    }}
                                                        >
                                                            <img className="python-study__subject-icon"
                                                                 src="https://julyedu-cdn.oss-cn-beijing.aliyuncs.com/mlCourse/m/project-icon.png"
                                                                 alt=""/>
                                                            {
                                                                lessonsItem.project.is_unlock == 1 && lessonsItem.project.complete == 1 &&
                                                                <i className="python-study__subject-status"
                                                                   data-status="complete"/>
                                                            }
                                                            {
                                                                lessonsItem.project.is_unlock == 1 && lessonsItem.project.complete == 0 &&
                                                                <i className="python-study__subject-status"
                                                                   data-status="lock"/>
                                                            }
                                                            <div className="python-study__subject-content">
                                                                <h2
                                                                    className="python-study__subject-title text-overflow-1">{lessonsItem.project.name}</h2>
                                                                {
                                                                    lessonsItem.project.is_must == 1 &&
                                                                    <span
                                                                        className="python-study__subject-tag">必做练习</span>
                                                                }
                                                            </div>
                                                        </div>
                                                    }
                                                </div>
                                            )
                                        })
                                    }
                                    {
                                        index === 0 && syllabus[0].lessons[2].info.complete == 1 && courseInfo.buy_try == 1 &&

                                        <div className="study-end">
                                            试学结束，<span>{courseInfo.price1}元</span>学习全部课时
                                            <a className="tobuy"  onClick={() => {
                                                this.creatOid()
                                            }}>立即报名</a>
                                        </div>
                                    }
                                </Accordion.Panel>
                            )
                        })
                    }
                </Accordion>
                {
                    learning.schedule == 0 &&
                    <span onClick={this.toLearn} className="python-study__button">开始学习</span>
                }
                {
                    learning.schedule != 0 && learning.schedule != 100 &&
                    <span onClick={this.toLearn} className="python-study__button">继续学习</span>
                }
                {
                    learning.schedule == 100 &&
                    <button className="python-study__button python-study__over">已学完全部课时</button>
                }

                {
                    toApp && <Mask closePop={this.closePop} type={2}/>
                }
            </div>
        )
    }
}


export default connect(
    state => ({user: state.user}),
    null
)(PythonStudy)