use datatable for reports

This commit is contained in:
2025-07-28 12:12:01 +03:30
parent 48f02ab417
commit 4d9868e13a
7 changed files with 35 additions and 58 deletions

View File

@@ -4,19 +4,15 @@ namespace App\Http\Controllers\HeadquartersDashboard;
use App\Facades\DataTable\DataTableFacade;
use App\Http\Controllers\Controller;
use app\Http\Traits\ApiResponse;
use App\Models\CountryCallsReport;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class CumulativeCentersStatsController extends Controller
{
use ApiResponse;
public function index(Request $request): JsonResponse
{
$data = DB::select("
$query = DB::table('country_calls_reports')->selectRaw("
SELECT
province_id,
province_name,
@@ -33,7 +29,6 @@ class CumulativeCentersStatsController extends Controller
SUM(talked_to_operator) as talked_to_operator,
AVG(average_calls_time) as average_calls_time,
SUM(fails) as fails
FROM country_calls_reports
GROUP BY province_id, province_name
UNION ALL
@@ -54,9 +49,14 @@ class CumulativeCentersStatsController extends Controller
SUM(talked_to_operator),
AVG(average_calls_time),
SUM(fails)
FROM country_calls_reports
");
return $this->successResponse($data);
return response()->json(
DataTableFacade::run(
$query,
$request,
allowedFilters: ['*'],
allowedSortings: ['*'])
);
}
}

View File

@@ -4,19 +4,15 @@ namespace App\Http\Controllers\HeadquartersDashboard;
use App\Facades\DataTable\DataTableFacade;
use App\Http\Controllers\Controller;
use app\Http\Traits\ApiResponse;
use App\Models\CountryKeypressReport;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class CumulativeKeypressStatsController extends Controller
{
use ApiResponse;
public function index(Request $request): JsonResponse
{
$data = DB::select("
$query = DB::table('country_keypress_reports')->selectRaw("
SELECT
province_id,
province_name,
@@ -35,7 +31,6 @@ class CumulativeKeypressStatsController extends Controller
SUM(key2_1) as key2_1,
SUM(key2_2) as key2_2,
SUM(key2_3) as key2_3
FROM country_keypress_reports
GROUP BY province_id, province_name
UNION ALL
@@ -58,9 +53,14 @@ class CumulativeKeypressStatsController extends Controller
SUM(key2_1),
SUM(key2_2),
SUM(key2_3)
FROM country_keypress_reports
");
return $this->successResponse($data);
return response()->json(
DataTableFacade::run(
$query,
$request,
allowedFilters: ['*'],
allowedSortings: ['*'])
);
}
}

View File

@@ -2,18 +2,18 @@
namespace App\Http\Controllers\HeadquartersDashboard;
use App\Facades\DataTable\DataTableFacade;
use App\Http\Controllers\Controller;
use app\Http\Traits\ApiResponse;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class CumulativeMessageRatingStatsController extends Controller
{
use ApiResponse;
public function index(): JsonResponse
public function index(Request $request): JsonResponse
{
$data = DB::select("
$query = DB::table('country_message_rating_reports')->selectRaw("
SELECT
province_id,
province_name,
@@ -26,7 +26,6 @@ class CumulativeMessageRatingStatsController extends Controller
SUM(action3) as action3,
SUM(action4) as action4,
SUM(action5) as action5
FROM country_message_rating_reports
GROUP BY province_id, province_name
UNION ALL
@@ -43,9 +42,14 @@ class CumulativeMessageRatingStatsController extends Controller
SUM(action3),
SUM(action4),
SUM(action5)
FROM country_message_rating_reports
");
return $this->successResponse($data);
return response()->json(
DataTableFacade::run(
$query,
$request,
allowedFilters: ['*'],
allowedSortings: ['*'])
);
}
}

View File

@@ -4,19 +4,15 @@ namespace App\Http\Controllers\HeadquartersDashboard;
use App\Facades\DataTable\DataTableFacade;
use App\Http\Controllers\Controller;
use app\Http\Traits\ApiResponse;
use App\Models\CountryVoiceRatingReport;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class CumulativeVoiceRatingStatsController extends Controller
{
use ApiResponse;
public function index(Request $request): JsonResponse
{
$data = DB::select("
$query = DB::table('country_voice_rating_reports')->selectRaw("
SELECT
province_id,
province_name,
@@ -24,7 +20,6 @@ class CumulativeVoiceRatingStatsController extends Controller
SUM(message_format_ok) as message_format_ok,
SUM(message_quality_nok) as message_quality_nok,
SUM(message_format_nok) as message_format_nok
FROM country_voice_rating_reports
GROUP BY province_id, province_name
UNION ALL
@@ -36,9 +31,14 @@ class CumulativeVoiceRatingStatsController extends Controller
SUM(message_format_ok),
SUM(message_quality_nok),
SUM(message_format_nok)
FROM country_voice_rating_reports
");
return $this->successResponse($data);
return response()->json(
DataTableFacade::run(
$query,
$request,
allowedFilters: ['*'],
allowedSortings: ['*'])
);
}
}