# -*- encoding: utf-8 -*-
# -----------------------------------------------------------------------------
# @File Name  : curriculum_order.py
# @Time       : 2020/11/18 下午3:19
# @Author     : X. Peng
# @Email      : acepengxiong@163.com
# @Software   : PyCharm
# -----------------------------------------------------------------------------
import json
from flask_restful import Resource, reqparse
from flask import request

from app.api import app
from app.controller.errorhandler import CustomFlaskErr
from app.config.errors import Errors
from app.service import order_service


class TopUpOrder(Resource):
    """充值订单."""

    def __init__(self):
        """."""
        self.parser = reqparse.RequestParser()

    def get(self):
        """."""
        # raise CustomFlaskErr(Errors.USER_ALREADY_EXISTS)
        self.parser.add_argument('user_id', type=str, required=True, help='用户ID不能为空')
        args = self.parser.parse_args()
        data = order_service.TopUpOrderService().get_order(args)
        resp = request.return_success
        resp['data'] = data
        return resp

    def post(self):
        """."""
        self.parser.add_argument('user_id', type=str, required=True, help='用户ID不能为空')
        self.parser.add_argument('amount', type=int, required=True, help='订单总额不能为空')
        self.parser.add_argument('pay_method', type=int, required=True, help='支付方式不能为空')
        args = self.parser.parse_args()
        order_service.TopUpOrderService().create_order(args)
        return request.return_success

    def put(self, id):
        """."""
        pass

    def delete(self, id):
        """."""
        pass


class ConsumeOrder(Resource):
    """消费订单."""

    def __init__(self):
        """."""
        self.parser = reqparse.RequestParser()

    def get(self):
        """."""
        self.parser.add_argument('user_id', type=str, required=True, help='用户ID不能为空')
        args = self.parser.parse_args()
        data = order_service.CurriculumOrderService().get_order(args)
        resp = request.return_success
        resp['data'] = data
        return resp

    def post(self):
        """."""
        self.parser.add_argument('prod_type', type=int, required=True, help='商品类型不能为空')
        self.parser.add_argument('prod_id', type=str, required=True, help='商品ID不能为空')
        self.parser.add_argument('prod_name', type=str, required=True, help='商品名称不能为空')
        self.parser.add_argument('prod_quantity', type=int, required=True, help='商品数量不能为空')
        self.parser.add_argument('user_id', type=str, required=True, help='用户ID不能为空')
        self.parser.add_argument('pay_method', type=int, required=True, help='支付方式不能为空')
        args = self.parser.parse_args()
        order_service.CurriculumOrderService().create_order(args)
        return request.return_success

    def put(self, id):
        """."""
        pass

    def delete(self, id):
        """."""
        pass


class TopUpOrderNotify(Resource):
    """充值订单支付通知."""

    def __init__(self):
        """."""
        self.parser = reqparse.RequestParser()

    def get(self):
        """."""
        # raise CustomFlaskErr(Errors.USER_ALREADY_EXISTS)
        self.parser.add_argument('user_id', type=str, required=True, help='用户ID不能为空')
        args = self.parser.parse_args()
        data = order_service.TopUpOrderService().get_order(args)
        resp = request.return_success
        resp['data'] = data
        return resp

    def post(self):
        """."""
        self.parser.add_argument('user_id', type=str, required=True, help='用户ID不能为空')
        self.parser.add_argument('amount', type=int, required=True, help='订单总额不能为空')
        self.parser.add_argument('pay_method', type=int, required=True, help='支付方式不能为空')
        args = self.parser.parse_args()
        order_service.TopUpOrderService().create_order(args)
        return request.return_success

    def put(self, id):
        """."""
        pass

    def delete(self, id):
        """."""
        pass


class ConsumeOrderNotify(Resource):
    """消费订单支付通知."""

    def __init__(self):
        """."""
        self.parser = reqparse.RequestParser()

    def get(self):
        """."""
        self.parser.add_argument('user_id', type=str, required=True, help='用户ID不能为空')
        args = self.parser.parse_args()
        data = order_service.CurriculumOrderService().get_order(args)
        resp = request.return_success
        resp['data'] = data
        return resp

    def post(self):
        """."""
        self.parser.add_argument('prod_type', type=int, required=True, help='商品类型不能为空')
        self.parser.add_argument('prod_id', type=str, required=True, help='商品ID不能为空')
        self.parser.add_argument('prod_name', type=str, required=True, help='商品名称不能为空')
        self.parser.add_argument('prod_quantity', type=int, required=True, help='商品数量不能为空')
        self.parser.add_argument('user_id', type=str, required=True, help='用户ID不能为空')
        self.parser.add_argument('pay_method', type=int, required=True, help='支付方式不能为空')
        args = self.parser.parse_args()
        order_service.CurriculumOrderService().create_order(args)
        return request.return_success

    def put(self, id):
        """."""
        pass

    def delete(self, id):
        """."""
        pass