initial commit
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Cat;
|
||||
use App\Models\Kitten;
|
||||
use App\Models\Matting;
|
||||
use App\Models\WeightHistory;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
|
||||
class DashboardController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
Gate::authorize('check-access', ['cats', 'read']);
|
||||
$now = now();
|
||||
$upcoming = Matting::with(['sire:id,nama_kucing','dam:id,nama_kucing'])
|
||||
->where('status', 'proses')->whereNotNull('tgl_kawin_awal')->latest('tgl_kawin_awal')->take(20)->get()
|
||||
->map(function ($m) use ($now) {
|
||||
$edd = Carbon::parse($m->tgl_kawin_awal)->addDays(63);
|
||||
return ['id'=>$m->id,'sire'=>$m->sire?->nama_kucing,'dam'=>$m->dam?->nama_kucing,'tanggal_kawin'=>$m->tgl_kawin_awal?->format('Y-m-d'),'perkiraan_lahir'=>$edd->format('Y-m-d'),'sisa_hari'=>$now->startOfDay()->diffInDays($edd->copy()->startOfDay(), false)];
|
||||
})->filter(fn($v) => $v['sisa_hari'] >= -3 && $v['sisa_hari'] <= 30)->values();
|
||||
|
||||
return response()->json([
|
||||
'ringkasan' => [
|
||||
'total_kucing' => Cat::count(),
|
||||
'jantan' => Cat::where('jenis_kelamin','Jantan')->count(),
|
||||
'betina' => Cat::where('jenis_kelamin','Betina')->count(),
|
||||
'breeding_aktif' => Matting::where('status','proses')->count(),
|
||||
'total_anakan' => Kitten::count(),
|
||||
],
|
||||
'perkiraan_kelahiran' => $upcoming,
|
||||
'berat_terbaru' => WeightHistory::with('cat:id,nama_kucing,foto')->latest('tanggal_timbang')->take(8)->get()->map(fn($w)=>['cat_id'=>$w->cat_id,'nama'=>$w->cat?->nama_kucing,'foto'=>$w->cat?->foto_url,'berat'=>(float)$w->berat,'tanggal'=>$w->tanggal_timbang?->format('Y-m-d') ?? (string)$w->tanggal_timbang]),
|
||||
'kucing_terbaru' => Cat::latest()->take(6)->get(['id','nama_kucing','foto','jenis_kelamin','kode_ems','status'])->map(fn($c)=>['id'=>$c->id,'nama'=>$c->nama_kucing,'foto'=>$c->foto_url,'jenis_kelamin'=>$c->jenis_kelamin,'kode_ems'=>$c->kode_ems,'status'=>$c->status]),
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user