<?php

namespace App\Modules\Latency\Controllers;

// Laravel and vendor inclusions.
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;

// Creatia inclusions.
use App\Http\Controllers\BaseController;
use App\Models\User;

// Custom module inclusions.
use App\Modules\Latency\Models\DynamicLatencies;
use App\Modules\Latency\Models\StaticLatencies;
use App\Modules\Latency\Models\LatencyLocations;

class GuestController extends BaseController
{
    public function get_locations(Request $_r) {
        return response()->json(LatencyLocations::select('id', 'name')->get(), 200);
    }
    
    public function get_verbose_latencies(Request $_r) {
        return BaseController::pagination_api_request($_r, function($draw, $start, $length) use($_r) {
            
            $data = LatencyLocations::select('name', 'latency')
                ->leftJoin('static_latencies', 'latency_locations.id', '=', 'location_b')
                ->where('location_a', '=', $_r->input('location_id' ?? 1));

            if($start !== '0' && $length !== '0') {
                $data = $data->skip($start)->take($length);
            }

            if($_r->input('keyword', false)) {
                $data = $data->where('name', 'like', '%' + $_r->input('keyword') + '%');
            }
            
            $data = $data->get();

            $count = $data->count();

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

}
