from flask import current_app, jsonify, request
from flask_restful import Resource
from flask_restful.reqparse import RequestParser
from flask_jwt_extended import ( jwt_required, get_jwt_identity )
from application.signal_manager import signalManager
<<<<<<< HEAD
from models.area import postAreaSchema,deleteAreaSchema,getListAreaSchema,getAreaSchema,putAreaSchema
=======
from models.area import postAreaSchema,deleteAreaSchema,getListAreaSchema,getListAreasSchema,getAreaSchema,putAreaSchema
from webcreator.log import logger
>>>>>>> 735d39eb4d0c3134b62bf4fe1b7a2ca0ea8da1ca
from webcreator.response import ResponseCode, response_result

class AreaResourceList(Resource):
    def __init__(self):
        pass
        # 特殊参数，即不是从json获取参数的接口，可以将这个注释打开
        # self.parser = RequestParser()

    def get(self):
        # 特殊参数，即不是从json获取参数的接口，可以将这个注释打开
        # self.parser.add_argument("page", type=int, location="args", default=1)
        # self.parser.add_argument("pageSize", type=int, location="args", default=15)
        # args = self.parser.parse_args()

        try:
            json_payload = request.json
<<<<<<< HEAD
            print("========>", json_payload)
            data = getListAreaSchema.load(json_payload)
            result = signalManager.actionGetArea.emit(**data)
            json_dumps = getListAreaSchema.dump(result)
            return jsonify(json_dumps), 200
=======
            logger.warn(json_payload)
            data = getListAreaSchema.load(json_payload)
            result = signalManager.actionGetListArea.emit(data)
            json_dumps = getListAreaSchema.dump(result)
            if result[0]:
                json_dumps = getListAreasSchema.dump(result[1])
                logger.warn(json_dumps)
                return response_result(ResponseCode.OK, data=json_dumps, count=result[2])
            return response_result(ResponseCode.REQUEST_ERROR)
>>>>>>> 735d39eb4d0c3134b62bf4fe1b7a2ca0ea8da1ca
        except Exception as e:
            current_app.logger.error(e)
            return response_result(ResponseCode.DB_ERROR)

<<<<<<< HEAD
    @jwt_required
=======
    @jwt_required(locations=["headers"])
>>>>>>> 735d39eb4d0c3134b62bf4fe1b7a2ca0ea8da1ca
    def post(self):
        try:
            json_payload = request.json
            data = postAreaSchema.load(json_payload)
<<<<<<< HEAD
            result = signalManager.actionPostArea.emit(**data)
            json_dumps = postAreaSchema.dump(result)
            return jsonify(json_dumps), 200
=======
            result = signalManager.actionPostArea.emit(data)
            if result[0] == False:
                # json_dumps = postAreaSchema.dump(result)
                return response_result(ResponseCode.REQUEST_ERROR, msg=result[1])
            logger.warn(result)
            return response_result(ResponseCode.OK)
>>>>>>> 735d39eb4d0c3134b62bf4fe1b7a2ca0ea8da1ca
        except Exception as e:
            current_app.logger.error(e)
            return response_result(ResponseCode.DB_ERROR)


class AreaResource(Resource):
    def __init__(self):
        pass
        # 特殊参数，即不是从json获取参数的接口，可以将这个注释打开
        # self.parser = RequestParser()

<<<<<<< HEAD
    @jwt_required
=======
    @jwt_required(locations=["headers"])
>>>>>>> 735d39eb4d0c3134b62bf4fe1b7a2ca0ea8da1ca
    def get(self, uuid):
        # 特殊参数，即不是从json获取参数的接口，可以将这个注释打开
        # self.parser.add_argument("page", type=int, location="args", default=1)
        # self.parser.add_argument("pageSize", type=int, location="args", default=15)
        # args = self.parser.parse_args()

        try:
            json_payload = request.json
            print("========>", uuid, json_payload)
            data = getAreaSchema.load(json_payload)
<<<<<<< HEAD
            result = signalManager.actionGetArea.emit(**data)
            json_dumps = getAreaSchema.dump(result)
            return jsonify(json_dumps), 200
=======
            result = signalManager.actionGetArea.emit(uuid, data)
            if result[0]:
                json_dumps = getAreaSchema.dump(result[1])
                return response_result(ResponseCode.OK, data=json_dumps)
            return response_result(ResponseCode.NO_DATA)
>>>>>>> 735d39eb4d0c3134b62bf4fe1b7a2ca0ea8da1ca
        except Exception as e:
            current_app.logger.error(e)
            return response_result(ResponseCode.DB_ERROR)


<<<<<<< HEAD
    @jwt_required
=======
    @jwt_required(locations=["headers"])
>>>>>>> 735d39eb4d0c3134b62bf4fe1b7a2ca0ea8da1ca
    def put(self, uuid):
        try:
            json_payload = request.json
            print("========>", uuid, json_payload)
            data = putAreaSchema.load(json_payload)
<<<<<<< HEAD
            result = signalManager.actionPutArea.emit(**data)
            json_dumps = putAreaSchema.dump(result)
            return jsonify(json_dumps), 200
=======
            result = signalManager.actionPutArea.emit(uuid, data)
            if result[0] == True:
                # json_dumps = putAreaSchema.dump(result)
                return response_result(ResponseCode.OK)
            return response_result(ResponseCode.NOTHING_CHANGE, msg=result[1])
>>>>>>> 735d39eb4d0c3134b62bf4fe1b7a2ca0ea8da1ca
        except Exception as e:
            current_app.logger.error(e)
            return response_result(ResponseCode.DB_ERROR)


<<<<<<< HEAD
    @jwt_required
=======
    @jwt_required(locations=["headers"])
>>>>>>> 735d39eb4d0c3134b62bf4fe1b7a2ca0ea8da1ca
    def delete(self, uuid):
        try:
            json_payload = request.json
            print("========>", uuid, json_payload)
<<<<<<< HEAD
            data = deleteAreaSchema.load(json_payload)
            result = signalManager.actionDeleteArea.emit(**data)
            json_dumps = deleteAreaSchema.dump(result)
            return jsonify(json_dumps), 200
=======
            # data = deleteAreaSchema.load(json_payload)
            result = signalManager.actionDeleteArea.emit(uuid)
            if result[0] == True:
                return response_result(ResponseCode.OK)
            return response_result(ResponseCode.REQUEST_ERROR, msg=result[1])
>>>>>>> 735d39eb4d0c3134b62bf4fe1b7a2ca0ea8da1ca
        except Exception as e:
            current_app.logger.error(e)
            return response_result(ResponseCode.DB_ERROR)
