69 lines
2.5 KiB
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'));
|
|
}
|
|
|
|
} |