TIF_NGANJUK_E41220737/app/Http/Controllers/Admin/AdminController.php

69 lines
2.5 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Petani;
use App\Models\Produk;
use App\Models\Transaksi;
use App\Models\DetailTransaksi;
use Illuminate\Support\Facades\DB;
class AdminController extends Controller
{
public function dashboard()
{
// STATISTIK
$totalPetani = Petani::where('status_akun', 'aktif')->count();
$totalProduk = Produk::count();
$totalTransaksi = Transaksi::count();
$transaksiTerbaru = Transaksi::with(['pembeli', 'petani'])->latest()->take(5)->get();
// PRODUK TERLARIS
$produkTerlaris = Produk::withSum(['detailTransaksis as total_terjual' => function ($query) {
$query->whereHas('transaksi', function ($q) {
$q->where('status', '!=', 'batal');
});
}], 'jumlah')
->orderByDesc('total_terjual')
->take(5)
->get();
$labelTerlaris = $produkTerlaris->pluck('nama_produk');
$dataTerlaris = $produkTerlaris->pluck('total_terjual');
// Menghitung rata-rata harga jual harian selama 7 hari terakhir
$hargaStabil = DetailTransaksi::join('transaksis', 'detail_transaksis.transaksi_id', '=', 'transaksis.id')
->selectRaw('DATE(transaksis.tanggal_transaksi) as tanggal, AVG(detail_transaksis.harga_satuan) as rata_harga')
->where('transaksis.status', '!=', 'batal')
->groupBy('tanggal')
->orderBy('tanggal', 'asc')
->take(7)
->get();
$labelHarga = $hargaStabil->pluck('tanggal')->map(function($date) {
return \Carbon\Carbon::parse($date)->format('d M');
});
$dataHarga = $hargaStabil->pluck('rata_harga');//isi grafik
return view('admin.dashboard', compact(
'totalPetani', 'totalProduk', 'totalTransaksi', 'transaksiTerbaru',
'labelTerlaris', 'dataTerlaris', 'labelHarga', 'dataHarga'
));
}
public function monitoring()
{
$produks = Produk::with('petani')->latest()->paginate(10);
$transaksis = Transaksi::with(['pembeli', 'petani'])->latest()->paginate(10);
return view('admin.monitoring', compact('produks', 'transaksis'));
}
public function transaksiDetail($id)
{
$transaksi = Transaksi::with(['pembeli', 'petani', 'detailTransaksis.produk'])->findOrFail($id);
return view('admin.transaksi_detail', compact('transaksi'));
}
}