import React, {PureComponent} from 'react';
import './index.scss'

import {http, getParam} from 'src/utils'
import {WithFullSize} from 'src/HOCs'
import {Toast} from 'antd-mobile'
import {HeaderBar} from "src/common";

class UsePatch extends PureComponent {
    constructor(props) {
        super(props);
        this.state = {
            success: false,
            checkedIndex: 0,
            list: [
                {
                    amount: 10,
                    desc: '兑换后7日内有效',
                    type: '代金券'
                },
                {
                    amount: 20,
                    desc: '兑换后7日内有效',
                    type: '代金券'
                },
                {
                    amount: 50,
                    desc: '兑换后7日内有效',
                    type: '代金券'
                },
                {
                    amount: 100,
                    desc: '兑换后7日内有效',
                    type: '代金券'
                }
            ],
            couponAmount: '',  // 碎片额度
        };
    }

    componentDidMount() {
        this.getPatchList()
    }

    // 选中
    select = (index, item) => {
        if (this.state.couponAmount >= item.amount) {
            this.setState({
                checkedIndex: index
            })
        }
    }

    // 合成
    compound = () => {
        const _this = this
        if (this.state.couponAmount >= 10) {
            http.post(`${API.home}/sys/red_packet/compose`, {type: _this.state.checkedIndex + 1}).then((res) => {
                if (res.data.code === 200) {
                    _this.setState({
                        success: true
                    })
                    setTimeout(() => {
                        _this.getPatchList()
                    }, 2000)

                } else {
                    Toast.info(res.data.msg, 2)
                }
            })
        }
    }

    getPatchList() {
        http.get(`${API.home}/sys/red_packet/balance`).then((res) => {
            if (res.data.code === 200) {
                this.setState({
                    couponAmount: res.data.data.coupon_amount,
                    success: false
                })
            } else {
                Toast.info(res.data.msg, 2)
            }
        })
    }

    render() {
        return (
            <div className='my-patch'>
                <div className={'couponAmount'}>
                    代金券碎片余额：<span>{this.state.couponAmount}元</span>
                </div>

                <Coupon data={this.state.list}
                        myAmount={this.state.couponAmount}
                        select={this.select}
                        checkedIndex={this.state.checkedIndex}/>
                <div className="compound-button--compose">
                <button
                    className={`compound ${this.state.couponAmount >= 10 ? 'disable-active' : 'disable'}`}
                    onClick={this.compound}>合成
                </button>
                </div>

                <div className="patch-desc">
                    <p className={'title'}><i></i><span>代金券碎片说明</span><i></i></p>
                    <p className={'desc-item'}>1. 碎片可通过“分享课程领取红包”获得，也可通过线上活动获得，具体请关注官网信息；</p>
                    <p className={'desc-item'}>2. 碎片在购课时不能单独使用，可合成完整代金券后用代金券抵扣现金；</p>
                    <p className={'desc-item'}>3. 碎片合成代金券后7日内有效。</p>
                </div>
                
                {
                    this.state.success &&
                    <div className="success">
                        兑换成功
                    </div>
                }
            </div>
        );
    }
}

function Coupon(props) {
    const {data, myAmount, select, checkedIndex} = props
    return (
        <div className={'coupons'}>
            {
                data && data.length > 0 && data.map((item, index) => {
                    return (
                        <div className='items-box' key={index} onClick={() => select(index, item)}>
                            <div className={`coupon-info ${myAmount >= item.amount ? 'active' : null}`}>
                                <div className="type">{item.type}</div>
                                <div className={'amount'}><span>{item.amount}</span>元</div>

                                {
                                    myAmount >= item.amount &&
                                    <i className={`checkout ${index === checkedIndex ? 'iconfont icondanseshixintubiao-5' : 'nochecked'}`}
                                    />
                                }
                                <ul>
                                    {
                                        new Array(19).fill('a').map((item, index) => {
                                            return <li key={index}/>
                                        })
                                    }
                                </ul>
                            </div>

                            <div className={'coupon-des'}>
                                {item.desc}
                            </div>
                        </div>
                    )
                })
            }
        </div>
    )
}


export default WithFullSize(UsePatch);