from DepositAPI.api.Api import BaseApiView
from DepositAPI.api.Response import SuccessResponse, ErrorResponse
from DepositAPI.model.BaseModel import BaseModel
from DepositAPI.model.Configuration import Configuration as ConfigurationModel
from DepositAPI.libs.db.RDbSql import DbMySql


class Configuration(BaseApiView, BaseModel):

    def aggregate_data(self, request):
        try:
            self.get_request_info(request)
            self.get_common_query_string(request)

            items, totalRow = ConfigurationModel.get_list(self, self.filter, self.quickFilter, self.sortBy, self.descending, self.rowsPerPage, self.offset)
            return SuccessResponse(
                data=items, total=totalRow, offset=self.offset, rowsPerPage=self.rowsPerPage
            )
        except Exception as e:
            return ErrorResponse(status=500, reason = str(e))

    def get_item_detail(self, request, pk):
        try:
            self.get_request_info(request)

            item = ConfigurationModel.get_detail(self, pk)
            return SuccessResponse(data=item)
        except Exception as e:
            return ErrorResponse(status=500, reason = str(e))

    def edit_data(self, request, pk):
        try:
            ret = ConfigurationModel.update(self, request, pk)
            return SuccessResponse(data=ret)
        except Exception as e:
            return ErrorResponse(status=500, reason = str(e))