import { Request, ResponseToolkit, ResponseObject } from '@hapi/hapi';
import { ActivityLogService } from "../services/activityLog.service";
import { AppError } from "../../utils/errors";
import { Common } from "../../utils/common"

export class ActivityLogHandler {
    // set the class variables
    private getActivityServiceObject = async(request: Request) => {
        let variables = await Common.getVariables(request)
        let activityService = new ActivityLogService(variables);
        return activityService;
    }

    // list activity with filter
    list = async (request: Request, h: ResponseToolkit): Promise<ResponseObject> => {
        try {
            let activityLogService = await this.getActivityServiceObject(request);
            let listRequest = request.query as ActivityLogListRequestObject;
            const getActivityLogsInput: ActivityLogGetActivityLogsServiceInput = { listRequest };
            let activitys: ActivityPaginatedList = await activityLogService.getActivityLogs(getActivityLogsInput);
            return h.response({ message: "REQUEST_PROCESSED_SUCCESSFULLY", responseData: activitys }).code(200);
        } catch (err) {
            if (err instanceof AppError) { throw err; }
            throw new AppError(500, 'SOMETHING_WENT_WRONG_IN_SERVICE', err);
        }
    }
}
