<?php

namespace App\Http\Controllers\EventLog;

use App\Http\Controllers\BaseController;
use App\Models\EventLog;
use Illuminate\Http\Request;

class AdminController extends BaseController
{

    public function get_event_logs(Request $_r) {
        $draw = $_r->input('draw');
        $start = $_r->input('start');
        $length = $_r->input('length');

        $timestamp = $_r->input('timestamp', false);
        $timestamp_comparator = $_r->input('comparator', false);
        $source = $_r->input('source', false);
        $type = $_r->input('type', false);

        return BaseController::pagination_api_request($_r, function($draw, $start, $length) use($timestamp, $timestamp_comparator, $source, $type) {
            $query = EventLog::skip($start)->take($length);

            if(($timestamp && $timestamp_comparator) || $source || $type) {
                $where_conditions = [];

                if($timestamp && ($timestamp_comparator === 'gt' || $timestamp_comparator === 'lt')) {
                    $where_conditions[] = ['timestamp', $timestamp_comparator === 'gt' ? '>' : '<' , $timestamp];
                }

                if($source) {
                    $where_conditions[] = ['source', '=', $source];
                }

                if($type) {
                    $where_conditions[] = ['type', '=', $type];
                }

                $query = $query->where($where_conditions);
            }

            $data = $query->get();
            $total = $data->count();
            $filtered = EventLog::count();

            return [
                'draw' => $draw,
                'total' => $total,
                'filtered' => $filtered,
                'data' => $data,
            ];
        });
    }
}
