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", du.get_n_days(-1))
        end = args.get("end", du.get_n_days(0))
        date_range = args.get("date_range", '')
        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!='':
            end=du.get_n_days(0)
            start=du.get_n_days(-int(date_range))
        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()
        pitcher = args.get("pitcher", '')
        start = args.get("start", du.get_n_days(-1))
        end = args.get("end", du.get_n_days(0))
        date_range = args.get("date_range", '')
        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 != '':
            end = du.get_n_days(0)
            start = du.get_n_days(-int(date_range))

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


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("start",'')
        date_range=args.get("date_range",'')
        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 isinstance(date_range,int):
            end = du.get_n_days(0)
            start = du.get_n_days(-date_range)
        data,total =get_channel_overview(channel,pitcher,start,end,page,page_size,order_by,order)
        self.write_json(data=data,total=total)


class ChannelAgainOrderTrend(BaseHandler):
    def post(self):
        args = self.get_args()
        print(args)
        pitcher=args.get("pitcher",'')
        channel = args.get("channel", '')
        date = args.get("date",du.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", du.get_n_days(-30))
        end = args.get("start", du.get_n_days(0))
        date_range = args.get("date_range", '')
        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 isinstance(date_range, int):
            end = du.get_n_days(0)
            start = du.get_n_days(-date_range)
        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", du.get_n_days(-7))
        end = arg.get("end", du.get_n_days(0))
        date_range = arg.get("date_range", '')
        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 isinstance(date_range, int):
            end = du.get_n_days(0)
            start = du.get_n_days(-date_range)
        data,total=get_channel_order_trend(channel,pitcher,start,end,page,page_size,order_by,order)
        self.write_json(data=data,total=total)


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