from handlers.HandlerBase import BaseHandler
from model.log import logger
from data_manage.pitcher_panel import *
log = logger()

class PitcherPanelChannel(BaseHandler):

    def post(self):
        args = self.get_args()
        print(args)
        pitcher = args.get("pitcher")
        channel = args.get("channel")
        start = args.get("start", self.get_n_days(0))
        end = args.get("end", self.get_n_days(0))
        page = args.get("page")
        page_size = args.get("page_size")
        order_by=args.get("order_by",'cost')
        order=args.get("order", 'desc')
        data_range=args.get('date_range')
        if data_range:
            end = self.get_n_days(0)
            start = self.get_n_days(-int(args['date_range'])+1)
        data,total=get_pitcher_panel_channel(pitcher, channel, start, end, page, page_size, order_by, order)
        self.write_json(data=data,total=total)


class PitcherPanelDaily(BaseHandler):
    def post(self):
        args=self.get_args()
        print(args)
        pitcher = args.get("pitcher")
        start = args.get("start")
        end = args.get("end")
        page = args.get("page")
        page_size = args.get("page_size")
        order_by = args.get("order_by", 'date')
        order = args.get("order", 'desc')
        if 'date_range' in list(args.keys()):
            end = self.get_n_days(0)
            start = self.get_n_days(-int(args['date_range'])+1)

        data,total,total_data = get_pitcher_panel_daily(pitcher, start, end, page, page_size, order_by, order)
        self.write_json(data=data,total=total,total_data=total_data)


class PitcherPanelOverview(BaseHandler):
    def post(self):
        args=self.get_args()
        pitcher = args.get("pitcher")
        data = get_pitcher_panel_overview(pitcher)
        self.write_json(data)


class ChannelOverview(BaseHandler):
    def post(self):
        args=self.get_args()
        print(args)
        channel=args.get("channel")
        pitcher=args.get("pitcher")
        start=args.get("start")
        end=args.get("end")
        page = args.get("page", 1)
        page_size = args.get("page_size", 10)
        order_by = args.get("order_by", 'date')
        order = args.get("order", 'desc')
        if 'date_range' in list(args.keys()):
            end = self.get_n_days(0)
            start = self.get_n_days(-int(args['date_range'])+1)
        data,total,total_data =get_channel_overview(channel,pitcher,start,end,page,page_size,order_by,order)
        self.write_json(data=data,total=total,total_data=total_data)


class ChannelAgainOrderTrend(BaseHandler):
    def post(self):
        args = self.get_args()
        print(args)
        pitcher=args.get("pitcher",'')
        channel = args.get("channel", '')
        date = args.get("date",self.get_n_days(-8))
        data=get_channel_again_order_trend(channel,date,pitcher)
        self.write_json(data)



class ChannelActive(BaseHandler):
    def post(self):
        args = self.get_args()
        print(args)
        pitcher=args.get("pitcher",'')
        channel = args.get("channel", '')
        start = args.get("start", self.get_n_days(-7))
        end = args.get("end", self.get_n_days(0))
        page = args.get("page", 1)
        page_size = args.get("page_size", 10)
        order_by = args.get("order_by", 'date')
        order = args.get("order", 'desc')
        if 'date_range' in list(args.keys()):
            end = self.get_n_days(0)
            start = self.get_n_days(-int(args['date_range'])+1)
        data,total=get_channel_active(channel,pitcher,start,end,page,page_size,order_by,order)
        self.write_json(data=data,total=total)


class ChannelOrderTrend(BaseHandler):
    def post(self):
        arg = self.get_args()
        print(arg)
        pitcher=arg.get("pitcher",'')
        channel = arg.get("channel", '')
        start = arg.get("start", self.get_n_days(-30))
        end = arg.get("end", self.get_n_days(0))
        page = arg.get("page", 1)
        page_size = arg.get("page_size", 10)
        order_by = arg.get("order_by", 'date')
        order = arg.get("order", 'desc')
        if 'date_range' in list(arg.keys()):
            end = self.get_n_days(0)
            start = self.get_n_days(-int(arg['date_range'])+1)
        data,total,total_data=get_channel_order_trend(channel,pitcher,start,end,page,page_size,order_by,order)
        self.write_json(data=data,total=total,total_data=total_data)


class ChannelSummary(BaseHandler):
    def post(self):
        arg = self.get_args()
        print(arg)
        channel=arg.get('channel')
        pitcher=arg.get('pitcher')
        page = arg.get("page")
        page_size = arg.get("page_size")
        location = arg.get('location')
        order_by = arg.get("order_by", 'total_cost')
        order = arg.get("order", 'desc')
        state=arg.get("state")
        start=arg.get("start")
        end=arg.get("end")
        data,total,total_data=get_channel_summary(channel,pitcher,page,page_size,order_by,order,state,location,start,end)
        self.write_json(data=data,total=total,total_data=total_data)


class PitcherTrend(BaseHandler):
    def post(self):
        arg = self.get_args()
        print(arg)
        pitcher=arg.get('pitcher')
        start=arg.get("start")
        end=arg.get("end")
        date_range=arg.get("date_range")
        page = arg.get("page")
        page_size = arg.get("page_size")
        order_by = arg.get("order_by", 'dt')
        order = arg.get("order", 'desc')
        if date_range:
            start=du.get_n_days(0)
            end=du.get_n_days(-int(date_range)+1)
        data,total,total_data=get_pitcher_trend(pitcher,start,end,page,page_size,order_by,order)
        self.write_json(data=data,total=total,total_data=total_data)