fixing data double
This commit is contained in:
parent
5146dd0e84
commit
d98df34f2c
@ -23,10 +23,8 @@ class AuthController extends Controller
|
|||||||
'password' => 'required'
|
'password' => 'required'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// $allowedIds = [
|
// // $allowedIds =
|
||||||
// 727,1755,2184,2549,993,3053,2319,1995,2011,2145,1113,2998,592,442,2787,1600,1109,2676,566,640,1109,868,2370,2342,1028,1079,2007,735,950,994,1069,1358,890,2291,1310,98,800,
|
// [727,1755,2184,2549,993,3053,2319,1995,2011,2145,592,442,2787,1600,1109,2676,566,640,868,2370,2342,1028,1079,2007,735,950,994,1069,1358,890,2291,1310,98,800,2006,299265,892,2005,2531,2457,508,1331,1430,1067,193,1071,639,419,2626,2793,910,2055,645,637,325,365,1220,724,122,2371,1628,952,1323,793,1113,1058,316,979,748,30025,928,501,59,217,2016,1173,707,30020,1335,1347,1150,2194,2641,937,2640,1320,256,1716,2258,439,519,550,975,2413,1050,890916,8056,561,1689,577,2293,959,1633,671,833,2345,861,1528,2698,2115,2333,1696,2790,1604,1288,2020,1137,142,897,81,1037,1429,3062,110,245,1649,1864,503,2485,703,440,712,1131,109,1759,2998,752,2050,2085,354,1687,2632,2799,2816,1011,2792,3036,1032,1354,1306,2091,1019,395,673,1056,554,564,2347,2147,401,984,1757,598,553,953,184,2380,3,62,415,1219,663,1021,1068,2670,3015,3045,2768,538,660,2052,740,1092,30027,1171,3128,1449,940,1717,1774,2080,2289,955,2079,1065,764,543,1233,788299270,3092,299266,788299269,2381,1771]
|
||||||
// 2006,299265,892,2005,2531,2457,508,2147,401,1331,1430,1067,193,1071,639,1028,419,2626,2793,910,2055,645,637,325,365,1220,724,122,2371,1628,952,1323,793,1113,1058,316,979,748,30025,928,566,501,
|
|
||||||
// 59,217,2016,1173,707,30020,2147,401,1069,1335,1347,2147,401,1150,2194,2641,937,2640,1320,256,1716,2258,439,1067,519,550,975,2413,1050,890916,8056,561,1689,577,2293,959,1633,671,1358,890,833,2345,861,1528,2698,2115,2333,1696,1310,2790,1604,1288,2020,1137,142,2531,2457,897,81,1037,1429,3062,110,245,2371,1628];
|
|
||||||
// IdAllowedLoginPitstop
|
// IdAllowedLoginPitstop
|
||||||
$allowedIdsRaw = DB::table('settingdatafixed_m')->where('namafield', 'IdAllowedLoginPitstop')->value('nilaifield');
|
$allowedIdsRaw = DB::table('settingdatafixed_m')->where('namafield', 'IdAllowedLoginPitstop')->value('nilaifield');
|
||||||
$allowedIds = json_decode($allowedIdsRaw, true);
|
$allowedIds = json_decode($allowedIdsRaw, true);
|
||||||
@ -34,6 +32,7 @@ class AuthController extends Controller
|
|||||||
if (!in_array($user->id, $allowedIds)) {
|
if (!in_array($user->id, $allowedIds)) {
|
||||||
return back()->with(['error' => 'Akun Anda tidak diizinkan login']);
|
return back()->with(['error' => 'Akun Anda tidak diizinkan login']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($user && $user->passcode === sha1($request->password)) {
|
if ($user && $user->passcode === sha1($request->password)) {
|
||||||
auth()->login($user);
|
auth()->login($user);
|
||||||
$request->session()->regenerate();
|
$request->session()->regenerate();
|
||||||
|
|||||||
@ -42,6 +42,7 @@ class KaryawanController extends Controller
|
|||||||
$q->where('pg.namalengkap', 'ILIKE', "%$search%")
|
$q->where('pg.namalengkap', 'ILIKE', "%$search%")
|
||||||
->orWhere('pg.nip_pns', 'ILIKE', "%$search%");
|
->orWhere('pg.nip_pns', 'ILIKE', "%$search%");
|
||||||
})
|
})
|
||||||
|
->whereNotIn('pg.kategorypegawai', ['11'])
|
||||||
->select([
|
->select([
|
||||||
'pg.id',
|
'pg.id',
|
||||||
DB::raw("coalesce(pg.namalengkap, '-') as namalengkap"),
|
DB::raw("coalesce(pg.namalengkap, '-') as namalengkap"),
|
||||||
|
|||||||
@ -125,6 +125,7 @@ class PitStopController extends Controller
|
|||||||
->where('mp.isprimary', true)
|
->where('mp.isprimary', true)
|
||||||
->where('pg.statusenabled', true)
|
->where('pg.statusenabled', true)
|
||||||
->where('ukp.statusenabled', true)
|
->where('ukp.statusenabled', true)
|
||||||
|
->whereNotIn('pg.kategorypegawai', ['11'])
|
||||||
->select([
|
->select([
|
||||||
DB::raw('ukp.id as unit_id'),
|
DB::raw('ukp.id as unit_id'),
|
||||||
DB::raw("coalesce(ukp.name, '-') as unit_name"),
|
DB::raw("coalesce(ukp.name, '-') as unit_name"),
|
||||||
@ -359,6 +360,7 @@ class PitStopController extends Controller
|
|||||||
$join->on(DB::raw('m.id::text'), '=', 'p.masterpitstop_id')
|
$join->on(DB::raw('m.id::text'), '=', 'p.masterpitstop_id')
|
||||||
->where('m.statusenabled', true);
|
->where('m.statusenabled', true);
|
||||||
})
|
})
|
||||||
|
->whereNotIn('pg.kategorypegawai', ['11'])
|
||||||
->where('mp.statusenabled', true)
|
->where('mp.statusenabled', true)
|
||||||
->where('mp.isprimary', true)
|
->where('mp.isprimary', true)
|
||||||
->where('pg.statusenabled', true)
|
->where('pg.statusenabled', true)
|
||||||
@ -442,6 +444,7 @@ class PitStopController extends Controller
|
|||||||
->where('pg.kedudukanfk', 1)
|
->where('pg.kedudukanfk', 1)
|
||||||
->where('ukp.statusenabled', true)
|
->where('ukp.statusenabled', true)
|
||||||
->where('ukp.id', $unitId)
|
->where('ukp.id', $unitId)
|
||||||
|
->whereNotIn('pg.kategorypegawai', ['11'])
|
||||||
->select([
|
->select([
|
||||||
DB::raw('ukp.id as unit_id'),
|
DB::raw('ukp.id as unit_id'),
|
||||||
DB::raw("coalesce(ukp.name, '-') as unit_name"),
|
DB::raw("coalesce(ukp.name, '-') as unit_name"),
|
||||||
@ -666,6 +669,7 @@ class PitStopController extends Controller
|
|||||||
->where('pg.statusenabled', true)
|
->where('pg.statusenabled', true)
|
||||||
->where('pg.kedudukanfk', 1)
|
->where('pg.kedudukanfk', 1)
|
||||||
->where('ukp.statusenabled', true)
|
->where('ukp.statusenabled', true)
|
||||||
|
->whereNotIn('pg.kategorypegawai', ['11'])
|
||||||
->select([
|
->select([
|
||||||
DB::raw('ukp.id as unit_id'),
|
DB::raw('ukp.id as unit_id'),
|
||||||
DB::raw("coalesce(ukp.name, '-') as unit_name"),
|
DB::raw("coalesce(ukp.name, '-') as unit_name"),
|
||||||
@ -708,6 +712,7 @@ class PitStopController extends Controller
|
|||||||
->where('pg.statusenabled', true)
|
->where('pg.statusenabled', true)
|
||||||
->where('pg.kedudukanfk', 1)
|
->where('pg.kedudukanfk', 1)
|
||||||
->where('ukp.statusenabled', true)
|
->where('ukp.statusenabled', true)
|
||||||
|
->whereNotIn('pg.kategorypegawai', ['11'])
|
||||||
->select([
|
->select([
|
||||||
DB::raw('ukp.id as unit_id'),
|
DB::raw('ukp.id as unit_id'),
|
||||||
DB::raw("coalesce(ukp.name, '-') as unit_name"),
|
DB::raw("coalesce(ukp.name, '-') as unit_name"),
|
||||||
@ -889,6 +894,7 @@ class PitStopController extends Controller
|
|||||||
->where('pg.kedudukanfk', 1)
|
->where('pg.kedudukanfk', 1)
|
||||||
->where('ukp.statusenabled', true)
|
->where('ukp.statusenabled', true)
|
||||||
->where('ukp.id', $unitId)
|
->where('ukp.id', $unitId)
|
||||||
|
->whereNotIn('pg.kategorypegawai', ['11'])
|
||||||
->select([
|
->select([
|
||||||
'pg.id',
|
'pg.id',
|
||||||
DB::raw("coalesce(pg.namalengkap, '-') as nama"),
|
DB::raw("coalesce(pg.namalengkap, '-') as nama"),
|
||||||
@ -1372,6 +1378,7 @@ class PitStopController extends Controller
|
|||||||
->where('pg.kedudukanfk', 1)
|
->where('pg.kedudukanfk', 1)
|
||||||
->where('ukp.statusenabled', true)
|
->where('ukp.statusenabled', true)
|
||||||
->where('ukp.id', $unitId)
|
->where('ukp.id', $unitId)
|
||||||
|
->whereNotIn('pg.kategorypegawai', ['11'])
|
||||||
->select([
|
->select([
|
||||||
'pg.id',
|
'pg.id',
|
||||||
DB::raw("coalesce(pg.namalengkap, '-') as nama"),
|
DB::raw("coalesce(pg.namalengkap, '-') as nama"),
|
||||||
@ -1575,6 +1582,7 @@ class PitStopController extends Controller
|
|||||||
->where('pg.statusenabled', true)
|
->where('pg.statusenabled', true)
|
||||||
->where('pg.kedudukanfk', 1)
|
->where('pg.kedudukanfk', 1)
|
||||||
->where('ukp.statusenabled', true)
|
->where('ukp.statusenabled', true)
|
||||||
|
->whereNotIn('pg.kategorypegawai', ['11'])
|
||||||
->select([
|
->select([
|
||||||
DB::raw("'internal' as tipe_karyawan"),
|
DB::raw("'internal' as tipe_karyawan"),
|
||||||
'pg.id',
|
'pg.id',
|
||||||
@ -2056,6 +2064,7 @@ class PitStopController extends Controller
|
|||||||
->where('pg.statusenabled', true)
|
->where('pg.statusenabled', true)
|
||||||
->where('pg.kedudukanfk', 1)
|
->where('pg.kedudukanfk', 1)
|
||||||
->where('ukp.statusenabled', true)
|
->where('ukp.statusenabled', true)
|
||||||
|
->whereNotIn('pg.kategorypegawai', ['11'])
|
||||||
->select([
|
->select([
|
||||||
DB::raw("'internal' as tipe_karyawan"),
|
DB::raw("'internal' as tipe_karyawan"),
|
||||||
'pg.id',
|
'pg.id',
|
||||||
|
|||||||
245
routes/web.php
245
routes/web.php
@ -5,6 +5,7 @@ use App\Http\Controllers\KaryawanController;
|
|||||||
use App\Http\Controllers\PitStopController;
|
use App\Http\Controllers\PitStopController;
|
||||||
use App\Http\Controllers\MasterPitStopController;
|
use App\Http\Controllers\MasterPitStopController;
|
||||||
use App\Http\Controllers\AuthController;
|
use App\Http\Controllers\AuthController;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
Route::middleware(['auth'])->group(function(){
|
Route::middleware(['auth'])->group(function(){
|
||||||
|
|
||||||
@ -54,3 +55,247 @@ Route::post('/login', [AuthController::class, 'submitLogin']);
|
|||||||
Route::get('/data/progress-all-karyawan-ghost', [PitStopController::class, 'dataProgressAllKaryawanGhost']);
|
Route::get('/data/progress-all-karyawan-ghost', [PitStopController::class, 'dataProgressAllKaryawanGhost']);
|
||||||
Route::get('/pitstop/progress-detail-ghost', [PitStopController::class, 'progressDetailGhost']);
|
Route::get('/pitstop/progress-detail-ghost', [PitStopController::class, 'progressDetailGhost']);
|
||||||
Route::get('/pitstop/progress-detail-external-ghost', [PitStopController::class, 'progressDetailExternal']);
|
Route::get('/pitstop/progress-detail-external-ghost', [PitStopController::class, 'progressDetailExternal']);
|
||||||
|
|
||||||
|
// Route::get('/outsorching', function(){
|
||||||
|
|
||||||
|
// $data = DB::connection('pgsql')->select("
|
||||||
|
|
||||||
|
// SELECT
|
||||||
|
// pl.nama AS nama_external,
|
||||||
|
// pl.tipe,
|
||||||
|
// pg.namalengkap AS nama_internal,
|
||||||
|
// ukp.name AS unit,
|
||||||
|
// similarity(LOWER(pl.nama), LOWER(pg.namalengkap)) as score,
|
||||||
|
// 'MATCH' as status_data
|
||||||
|
|
||||||
|
// FROM public.pegawai_luar_pl pl
|
||||||
|
// JOIN public.pegawai_m pg
|
||||||
|
// ON similarity(LOWER(pl.nama), LOWER(pg.namalengkap)) > 0.6
|
||||||
|
|
||||||
|
// LEFT JOIN public.mappegawaijabatantounitkerja_m mp
|
||||||
|
// ON pg.id = mp.objectpegawaifk
|
||||||
|
// AND mp.statusenabled = true
|
||||||
|
// AND mp.isprimary = true
|
||||||
|
|
||||||
|
// LEFT JOIN public.unitkerjapegawai_m ukp
|
||||||
|
// ON ukp.id = mp.objectunitkerjapegawaifk
|
||||||
|
|
||||||
|
// WHERE
|
||||||
|
// pl.tipe ILIKE '%OUTSORCHING%'
|
||||||
|
// AND pg.statusenabled = true
|
||||||
|
// AND pg.kategorypegawai = '11'
|
||||||
|
// AND pg.kedudukanfk = 1
|
||||||
|
|
||||||
|
|
||||||
|
// UNION ALL
|
||||||
|
|
||||||
|
|
||||||
|
// SELECT
|
||||||
|
// NULL AS nama_external,
|
||||||
|
// NULL AS tipe,
|
||||||
|
// pg.namalengkap AS nama_internal,
|
||||||
|
// ukp.name AS unit,
|
||||||
|
// NULL AS score,
|
||||||
|
// 'HANYA DI INTERNAL' as status_data
|
||||||
|
|
||||||
|
// FROM public.pegawai_m pg
|
||||||
|
|
||||||
|
// LEFT JOIN public.mappegawaijabatantounitkerja_m mp
|
||||||
|
// ON pg.id = mp.objectpegawaifk
|
||||||
|
// AND mp.statusenabled = true
|
||||||
|
// AND mp.isprimary = true
|
||||||
|
|
||||||
|
// LEFT JOIN public.unitkerjapegawai_m ukp
|
||||||
|
// ON ukp.id = mp.objectunitkerjapegawaifk
|
||||||
|
|
||||||
|
// WHERE
|
||||||
|
// pg.statusenabled = true
|
||||||
|
// AND pg.kategorypegawai = '11'
|
||||||
|
// AND pg.kedudukanfk = 1
|
||||||
|
// AND NOT EXISTS (
|
||||||
|
// SELECT 1 FROM public.pegawai_luar_pl pl
|
||||||
|
// WHERE pl.tipe ILIKE '%OUTSORCHING%'
|
||||||
|
// AND similarity(LOWER(pl.nama), LOWER(pg.namalengkap)) > 0.6
|
||||||
|
// )
|
||||||
|
|
||||||
|
// ORDER BY status_data
|
||||||
|
// ");
|
||||||
|
|
||||||
|
// $collection = collect($data);
|
||||||
|
|
||||||
|
// return [
|
||||||
|
// 'summary' => [
|
||||||
|
// 'total' => $collection->count(),
|
||||||
|
// 'match' => $collection->where('status_data', 'MATCH')->count(),
|
||||||
|
// 'external_only' => $collection->where('status_data', 'HANYA DI EXTERNAL')->count(),
|
||||||
|
// 'internal_only' => $collection->where('status_data', 'HANYA DI INTERNAL')->count(),
|
||||||
|
// ],
|
||||||
|
// 'data' => $data
|
||||||
|
// ];
|
||||||
|
// });
|
||||||
|
Route::get('/outsorching', function(){
|
||||||
|
|
||||||
|
$data = DB::connection('pgsql')->select("
|
||||||
|
|
||||||
|
-- =========================
|
||||||
|
-- 🔥 1. MATCH (FUZZY)
|
||||||
|
-- =========================
|
||||||
|
SELECT
|
||||||
|
COALESCE(pl.nama, '-') AS nama_external,
|
||||||
|
pl.tipe,
|
||||||
|
pg.id as pegawai_id,
|
||||||
|
pg.namalengkap AS nama_internal,
|
||||||
|
ukp.name AS unit,
|
||||||
|
|
||||||
|
ROUND(similarity(LOWER(pl.nama), LOWER(pg.namalengkap))::numeric, 2) as score,
|
||||||
|
true as is_match,
|
||||||
|
'MATCH' as status_data,
|
||||||
|
|
||||||
|
COUNT(pr.id) as total_praakre,
|
||||||
|
COUNT(*) FILTER (WHERE pr.status = 'LULUS') as jumlah_lulus,
|
||||||
|
COUNT(*) FILTER (WHERE pr.status = 'TIDAK LULUS') as jumlah_tidak_lulus,
|
||||||
|
|
||||||
|
COALESCE(
|
||||||
|
json_agg(
|
||||||
|
json_build_object(
|
||||||
|
'id', pr.id,
|
||||||
|
'unit_id', pr.unit_id,
|
||||||
|
'masterpitstop_id', pr.masterpitstop_id,
|
||||||
|
'masterpitstop_nama', mpit.nama,
|
||||||
|
'nilai', pr.nilai,
|
||||||
|
'action_at', pm.namalengkap,
|
||||||
|
'created_at', pr.created_at,
|
||||||
|
'type_karyawan', pr.tipe_karyawan
|
||||||
|
)
|
||||||
|
ORDER BY NULLIF(pr.masterpitstop_id, '')::int
|
||||||
|
) FILTER (WHERE pr.id IS NOT NULL),
|
||||||
|
'[]'::json
|
||||||
|
) as praakre_data
|
||||||
|
|
||||||
|
FROM public.pegawai_luar_pl pl
|
||||||
|
JOIN public.pegawai_m pg
|
||||||
|
ON similarity(LOWER(pl.nama), LOWER(pg.namalengkap)) > 0.6
|
||||||
|
|
||||||
|
LEFT JOIN public.mappegawaijabatantounitkerja_m mp
|
||||||
|
ON pg.id = mp.objectpegawaifk
|
||||||
|
AND mp.statusenabled = true
|
||||||
|
AND mp.isprimary = true
|
||||||
|
|
||||||
|
LEFT JOIN public.unitkerjapegawai_m ukp
|
||||||
|
ON ukp.id = mp.objectunitkerjapegawaifk
|
||||||
|
|
||||||
|
-- 🔥 PRAAKRE INTERNAL + LUAR
|
||||||
|
LEFT JOIN public.praakre pr
|
||||||
|
ON (
|
||||||
|
(pr.tipe_karyawan = 'internal' AND pr.pegawai_id::int = pg.id)
|
||||||
|
OR
|
||||||
|
(pr.tipe_karyawan = 'luar' AND pr.pegawai_id::int = pl.id)
|
||||||
|
)
|
||||||
|
|
||||||
|
LEFT JOIN public.masterpitstop mpit
|
||||||
|
ON mpit.id = NULLIF(pr.masterpitstop_id, '')::int
|
||||||
|
|
||||||
|
LEFT JOIN public.pegawai_m pm
|
||||||
|
ON pm.id = NULLIF(pr.action_at, '')::int
|
||||||
|
|
||||||
|
WHERE
|
||||||
|
pl.tipe ILIKE '%OUTSORCHING%'
|
||||||
|
AND pg.statusenabled = true
|
||||||
|
AND pg.kategorypegawai = '11'
|
||||||
|
AND pg.kedudukanfk = 1
|
||||||
|
|
||||||
|
GROUP BY
|
||||||
|
pl.nama, pl.tipe, pg.id, pg.namalengkap, ukp.name
|
||||||
|
|
||||||
|
|
||||||
|
UNION ALL
|
||||||
|
|
||||||
|
|
||||||
|
-- =========================
|
||||||
|
-- 🔥 2. HANYA DI INTERNAL
|
||||||
|
-- =========================
|
||||||
|
SELECT
|
||||||
|
'-' AS nama_external,
|
||||||
|
NULL AS tipe,
|
||||||
|
pg.id as pegawai_id,
|
||||||
|
pg.namalengkap AS nama_internal,
|
||||||
|
ukp.name AS unit,
|
||||||
|
|
||||||
|
NULL as score,
|
||||||
|
false as is_match,
|
||||||
|
'HANYA DI INTERNAL' as status_data,
|
||||||
|
|
||||||
|
COUNT(pr.id) as total_praakre,
|
||||||
|
|
||||||
|
COALESCE(
|
||||||
|
json_agg(
|
||||||
|
json_build_object(
|
||||||
|
'id', pr.id,
|
||||||
|
'masterpitstop_id', pr.masterpitstop_id,
|
||||||
|
'masterpitstop_nama', mpit.nama,
|
||||||
|
'nilai', pr.nilai,
|
||||||
|
'action_at', pm.namalengkap,
|
||||||
|
'created_at', pr.created_at,
|
||||||
|
'type_karyawan', pr.tipe_karyawan
|
||||||
|
)
|
||||||
|
ORDER BY NULLIF(pr.masterpitstop_id, '')::int
|
||||||
|
) FILTER (WHERE pr.id IS NOT NULL),
|
||||||
|
'[]'::json
|
||||||
|
) as praakre_data
|
||||||
|
|
||||||
|
FROM public.pegawai_m pg
|
||||||
|
|
||||||
|
LEFT JOIN public.mappegawaijabatantounitkerja_m mp
|
||||||
|
ON pg.id = mp.objectpegawaifk
|
||||||
|
AND mp.statusenabled = true
|
||||||
|
AND mp.isprimary = true
|
||||||
|
|
||||||
|
LEFT JOIN public.unitkerjapegawai_m ukp
|
||||||
|
ON ukp.id = mp.objectunitkerjapegawaifk
|
||||||
|
|
||||||
|
-- 🔥 PRAAKRE INTERNAL SAJA
|
||||||
|
LEFT JOIN public.praakre pr
|
||||||
|
ON pr.tipe_karyawan = 'internal'
|
||||||
|
AND pr.pegawai_id::int = pg.id
|
||||||
|
|
||||||
|
LEFT JOIN public.masterpitstop mpit
|
||||||
|
ON mpit.id = NULLIF(pr.masterpitstop_id, '')::int
|
||||||
|
|
||||||
|
LEFT JOIN public.pegawai_m pm
|
||||||
|
ON pm.id = NULLIF(pr.action_at, '')::int
|
||||||
|
|
||||||
|
WHERE
|
||||||
|
pg.statusenabled = true
|
||||||
|
AND pg.kategorypegawai = '11'
|
||||||
|
AND pg.kedudukanfk = 1
|
||||||
|
AND NOT EXISTS (
|
||||||
|
SELECT 1 FROM public.pegawai_luar_pl pl
|
||||||
|
WHERE pl.tipe ILIKE '%OUTSORCHING%'
|
||||||
|
AND similarity(LOWER(pl.nama), LOWER(pg.namalengkap)) > 0.6
|
||||||
|
)
|
||||||
|
|
||||||
|
GROUP BY
|
||||||
|
pg.id, pg.namalengkap, ukp.name
|
||||||
|
|
||||||
|
ORDER BY status_data, nama_internal
|
||||||
|
");
|
||||||
|
|
||||||
|
// 🔥 FIX: pastikan JSON jadi array beneran di Laravel
|
||||||
|
$data = collect($data)->map(function($item){
|
||||||
|
$item->praakre_data = is_string($item->praakre_data)
|
||||||
|
? json_decode($item->praakre_data, true)
|
||||||
|
: $item->praakre_data;
|
||||||
|
return $item;
|
||||||
|
});
|
||||||
|
|
||||||
|
return [
|
||||||
|
'summary' => [
|
||||||
|
'total' => $data->count(),
|
||||||
|
'match' => $data->where('status_data', 'MATCH')->count(),
|
||||||
|
'internal_only' => $data->where('status_data', 'HANYA DI INTERNAL')->count(),
|
||||||
|
'total_lulus' => $data->sum('jumlah_lulus'),
|
||||||
|
'total_tidak_lulus' => $data->sum('jumlah_tidak_lulus'),
|
||||||
|
],
|
||||||
|
'data' => $data
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user