from DepositAPI.api.Api import BaseApiView
from DepositAPI.api.Response import SuccessResponse, ErrorResponse
from DepositAPI.model.BaseModel import BaseModel
from DepositAPI.model.Tracking import Tracking as TrackingModel
from DepositAPI.model.Product import Product as ProductModel


class Tracking(BaseApiView, BaseModel):

    def aggregate_data(self, request):
        self.get_request_info(request)
        self.get_common_query_string(request)
        items, totalRow = TrackingModel.get_list(self, self.filter, self.quickFilter, self.sortBy, self.descending, self.rowsPerPage, self.offset, self.user_id, self.role_id)
        return SuccessResponse(data=items, total=totalRow, offset=self.offset, rowsPerPage=self.rowsPerPage)
    
    def find(self, request):
        self.get_request_info(request)
        self.get_common_query_string(request)
        tracking = self.params.get("tracking")
        tracking_info = ProductModel().get_detail_by_object({'SuffixBill': tracking})
        if tracking_info is not None:
            return SuccessResponse(data=tracking_info if isinstance(tracking_info, list) == False else None)
        return ErrorResponse(reason='Không tìm thấy dữ liệu.')
            