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


class BookRank(BaseHandler):
    def post(self):
        arg = self.get_args()
        print(arg)
        start=arg.get("start",self.get_n_days(0))
        end=arg.get("end",self.get_n_days(0))
        date_range=arg.get("date_range")
        book=arg.get("book")
        stage=arg.get("stage")
        type=arg.get("type")
        page = arg.get("page",1)
        page_size = arg.get("page_size",30)
        order_by = arg.get("order_by", 'cost')
        order = arg.get("order", 'desc')
        if date_range:
            end=self.get_n_days(0)
            start=self.get_n_days(-int(date_range)+1)
        data,total=book_rank(start,end,book,stage,type,page,page_size,order_by,order)
        self.write_json(data=data,total=total)


class BookTrend(BaseHandler):
    def post(self):
        arg = self.get_args()
        print(arg)
        start=arg.get("start",self.get_n_days(-29))
        end=arg.get("end",)
        date_range=arg.get("date_range")
        book=arg.get("book")
        type=arg.get("type")
        platform=arg.get("platform")
        page = arg.get("page",1)
        page_size = arg.get("page_size",30)
        order_by = arg.get("order_by", 'dt')
        order = arg.get("order", 'desc')
        if date_range:
            end=self.get_n_days(0)
            start=self.get_n_days(-int(date_range)+1)
        data,total,total_data=book_trend(start,end,book,type,platform,page,page_size,order_by,order)
        self.write_json(data=data,total=total,total_data=total_data)


class BookOverview(BaseHandler):
    def post(self):
        arg = self.get_args()
        print(arg)
        start = arg.get("start")
        end = arg.get("end",)
        book = arg.get("book")
        type = arg.get("type")
        page = arg.get("page")
        date_range = arg.get("date_range")
        page_size = arg.get("page_size")
        order_by = arg.get("order_by", 'cost')
        order = arg.get("order", 'desc')
        if date_range:
            end = self.get_n_days(0)
            start = self.get_n_days(-int(date_range)+1)
        data, total = book_overview(start, end, book, type, page, page_size, order_by, order)
        if arg.get("download"):
            self.write_download('BookOver_'+str(int(time.time())), data)
        self.write_json(data=data, total=total)


class PitcherOverview(BaseHandler):
    def post(self):
        arg = self.get_args()
        print(arg)
        start = arg.get("start")
        end = arg.get("end")
        page = arg.get("page")
        page_size = arg.get("page_size")
        order_by = arg.get("order_by", 'cost')
        order = arg.get("order", 'desc')
        pitcher = arg.get("pitcher")
        date_range = arg.get("date_range")
        if date_range:
            end = self.get_n_days(0)
            start = self.get_n_days(-int(date_range)+1)
        data, total = pitcher_overview(start, end, pitcher, page, page_size, order_by, order)
        if arg.get("download"):
            self.write_download('BookOver_'+str(int(time.time())), data)

        self.write_json(data=data, total=total)


class BossPanelSummary(BaseHandler):
    def post(self):
        arg = self.get_args()
        start = arg.get("start")
        end = arg.get("end")
        page = arg.get("page")
        page_size = arg.get("page_size")
        order_by = arg.get("order_by")
        order = arg.get("order")
        pitcher = arg.get("pitcher")
        date_range = arg.get("date_range")
        type = arg.get("type")
        stage = arg.get("stage")
        download = arg.get("download")
        if date_range:
            end = self.get_n_days(0)
            start = self.get_n_days(-int(self.date_range) + 1)


        data, total = boss_panel_summary(start, end, pitcher, type,
                                         stage, page, page_size, order_by, order)
        if download:
            self.write_download(str(int(time.time())), data)
        self.write_json(data=data, total=total)