97 lines
3.1 KiB
PHP
97 lines
3.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api\Student;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\RiwayatRekomendasi;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Exception;
|
|
|
|
class DashboardStudentController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
try {
|
|
$user = Auth::user();
|
|
|
|
if (! $user) {
|
|
return response()->json([
|
|
'success' => false,
|
|
'message' => 'Unauthorized'
|
|
], 401);
|
|
}
|
|
|
|
$totalAktivitas = RiwayatRekomendasi::where('user_id', $user->id)->count();
|
|
|
|
$rekomendasiTerakhir = RiwayatRekomendasi::where('user_id', $user->id)
|
|
->latest()
|
|
->first();
|
|
|
|
$aktivitasTerbaru = RiwayatRekomendasi::where('user_id', $user->id)
|
|
->latest()
|
|
->take(5)
|
|
->get()
|
|
->map(function ($item) {
|
|
return [
|
|
'id' => $item->id,
|
|
'jurusan' => $item->hasil_rekomendasi_jurusan,
|
|
'tanggal' => $item->created_at ? $item->created_at->diffForHumans() : '-',
|
|
];
|
|
});
|
|
|
|
$trenNilai = RiwayatRekomendasi::where('user_id', $user->id)
|
|
->orderBy('created_at', 'asc')
|
|
->get()
|
|
->map(function ($item, $index) {
|
|
$mapel = [
|
|
'agama',
|
|
'pkn',
|
|
'bahasa_indonesia',
|
|
'bahasa_inggris',
|
|
'matematika',
|
|
'fisika',
|
|
'kimia',
|
|
'biologi',
|
|
'sejarah',
|
|
'geografi',
|
|
'ekonomi_mapel',
|
|
'sosiologi',
|
|
'seni_budaya',
|
|
'pjok',
|
|
'informatika'
|
|
];
|
|
|
|
$totalNilai = 0;
|
|
|
|
foreach ($mapel as $m) {
|
|
$totalNilai += (float) ($item->$m ?? 0);
|
|
}
|
|
|
|
$rataRata = count($mapel) > 0 ? $totalNilai / count($mapel) : 0;
|
|
|
|
return [
|
|
'label' => 'Tes ' . ($index + 1),
|
|
'nilai' => round($rataRata, 2)
|
|
];
|
|
});
|
|
|
|
return response()->json([
|
|
'success' => true,
|
|
'data' => [
|
|
'total_aktivitas' => $totalAktivitas,
|
|
'rekomendasi_terakhir' => $rekomendasiTerakhir
|
|
? $rekomendasiTerakhir->hasil_rekomendasi_jurusan
|
|
: 'Belum Ada Data',
|
|
'aktivitas_terbaru' => $aktivitasTerbaru,
|
|
'tren_nilai' => $trenNilai
|
|
]
|
|
]);
|
|
|
|
} catch (Exception $e) {
|
|
return response()->json([
|
|
'success' => false,
|
|
'message' => 'Error: ' . $e->getMessage()
|
|
], 500);
|
|
}
|
|
}
|
|
} |