feat: Update user roles and enhance transaksi_bukets table with new fields
This commit is contained in:
parent
1f94e59459
commit
297ee8817d
|
|
@ -5,7 +5,7 @@
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
use Illuminate\Support\Facades\Hash; // <--- WAJIB NAMBAH INI
|
use Illuminate\Support\Facades\Hash;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
|
|
||||||
class AuthController extends Controller
|
class AuthController extends Controller
|
||||||
|
|
@ -43,16 +43,8 @@ public function authenticate(Request $request)
|
||||||
])->onlyInput('username');
|
])->onlyInput('username');
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3. KALAU LOLOS DUA-DUANYA -> LOGIN
|
|
||||||
Auth::login($user);
|
Auth::login($user);
|
||||||
$request->session()->regenerate();
|
$request->session()->regenerate();
|
||||||
|
|
||||||
// Redirect sesuai role
|
|
||||||
$role = $user->role ?? 'admin';
|
|
||||||
if ($role === 'pemilik') {
|
|
||||||
return redirect()->intended(route('admin.beranda.pemilik'));
|
|
||||||
}
|
|
||||||
|
|
||||||
return redirect()->intended(route('admin.beranda'));
|
return redirect()->intended(route('admin.beranda'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,73 @@
|
||||||
namespace App\Http\Controllers\Admin;
|
namespace App\Http\Controllers\Admin;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Illuminate\Http\Request;
|
use App\Models\TransaksiBuket;
|
||||||
|
use App\Models\BookingFoto;
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class BerandaController extends Controller
|
class BerandaController extends Controller
|
||||||
{
|
{
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
|
$now = Carbon::now();
|
||||||
|
$lastMonth = Carbon::now()->subMonth();
|
||||||
|
$today = Carbon::today();
|
||||||
|
|
||||||
return view('admin.beranda-admin');
|
// Fungsi pembantu untuk hitung pertumbuhan (%)
|
||||||
|
$getGrowth = function ($current, $previous) {
|
||||||
|
if ($previous <= 0) return $current > 0 ? 100 : 0;
|
||||||
|
return round((($current - $previous) / $previous) * 100, 1);
|
||||||
|
};
|
||||||
|
|
||||||
|
// --- 1. HITUNG DATA BULAN INI ---
|
||||||
|
$currPendapatan = TransaksiBuket::whereMonth('created_at', $now->month)->whereYear('created_at', $now->year)->where('status_transaksi', 'diterima')->sum('total_bayar') +
|
||||||
|
BookingFoto::whereMonth('created_at', $now->month)->whereYear('created_at', $now->year)->where('status_booking', 'diterima')->sum('total_bayar');
|
||||||
|
|
||||||
|
$currMasuk = TransaksiBuket::whereMonth('created_at', $now->month)->whereYear('created_at', $now->year)->count() +
|
||||||
|
BookingFoto::whereMonth('created_at', $now->month)->whereYear('created_at', $now->year)->count();
|
||||||
|
|
||||||
|
$currSelesai = TransaksiBuket::whereMonth('created_at', $now->month)->whereYear('created_at', $now->year)->where('status_transaksi', 'diterima')->count() +
|
||||||
|
BookingFoto::whereMonth('created_at', $now->month)->whereYear('created_at', $now->year)->where('status_booking', 'diterima')->count();
|
||||||
|
|
||||||
|
$currBatal = TransaksiBuket::whereMonth('created_at', $now->month)->whereYear('created_at', $now->year)->where('status_transaksi', 'ditolak')->count() +
|
||||||
|
BookingFoto::whereMonth('created_at', $now->month)->whereYear('created_at', $now->year)->where('status_booking', 'ditolak')->count();
|
||||||
|
|
||||||
|
// --- 2. HITUNG DATA BULAN LALU (Untuk Perbandingan %) ---
|
||||||
|
$prevPendapatan = TransaksiBuket::whereMonth('created_at', $lastMonth->month)->whereYear('created_at', $lastMonth->year)->where('status_transaksi', 'diterima')->sum('total_bayar') +
|
||||||
|
BookingFoto::whereMonth('created_at', $lastMonth->month)->whereYear('created_at', $lastMonth->year)->where('status_booking', 'diterima')->sum('total_bayar');
|
||||||
|
|
||||||
|
$prevMasuk = TransaksiBuket::whereMonth('created_at', $lastMonth->month)->whereYear('created_at', $lastMonth->year)->count() +
|
||||||
|
BookingFoto::whereMonth('created_at', $lastMonth->month)->whereYear('created_at', $lastMonth->year)->count();
|
||||||
|
|
||||||
|
$prevSelesai = TransaksiBuket::whereMonth('created_at', $lastMonth->month)->whereYear('created_at', $lastMonth->year)->where('status_transaksi', 'diterima')->count() +
|
||||||
|
BookingFoto::whereMonth('created_at', $lastMonth->month)->whereYear('created_at', $lastMonth->year)->where('status_booking', 'diterima')->count();
|
||||||
|
|
||||||
|
$prevBatal = TransaksiBuket::whereMonth('created_at', $lastMonth->month)->whereYear('created_at', $lastMonth->year)->where('status_transaksi', 'ditolak')->count() +
|
||||||
|
BookingFoto::whereMonth('created_at', $lastMonth->month)->whereYear('created_at', $lastMonth->year)->where('status_booking', 'ditolak')->count();
|
||||||
|
|
||||||
|
// --- 3. SUSUN ARRAY STATISTIK ---
|
||||||
|
$stat = [
|
||||||
|
'pendapatan' => $currPendapatan,
|
||||||
|
'pendapatan_grow' => $getGrowth($currPendapatan, $prevPendapatan),
|
||||||
|
|
||||||
|
'masuk_count' => $currMasuk,
|
||||||
|
'masuk_grow' => $getGrowth($currMasuk, $prevMasuk),
|
||||||
|
|
||||||
|
'selesai_count' => $currSelesai,
|
||||||
|
'selesai_grow' => $getGrowth($currSelesai, $prevSelesai),
|
||||||
|
|
||||||
|
'batal_count' => $currBatal,
|
||||||
|
'batal_grow' => $getGrowth($currBatal, $prevBatal),
|
||||||
|
];
|
||||||
|
|
||||||
|
// --- 4. JADWAL & PENDING (Sudah Benar) ---
|
||||||
|
$buketToday = TransaksiBuket::with(['pelanggan', 'buket'])->whereDate('tgl_ambil', $today)->where('status_transaksi', 'diterima')->get();
|
||||||
|
$fotoToday = BookingFoto::with(['pelanggan', 'paketFoto'])->whereDate('tgl_booking', $today)->where('status_booking', 'diterima')->orderBy('jam_mulai', 'asc')->get();
|
||||||
|
|
||||||
|
$riwayatBuket = TransaksiBuket::with(['pelanggan', 'buket'])->where('status_transaksi', 'menunggu_verifikasi')->latest()->get();
|
||||||
|
$riwayatFoto = BookingFoto::with(['pelanggan', 'paketFoto'])->where('status_booking', 'menunggu_verifikasi')->latest()->get();
|
||||||
|
|
||||||
|
return view('admin.beranda.index', compact('stat', 'buketToday', 'fotoToday', 'riwayatBuket', 'riwayatFoto'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ public function up(): void
|
||||||
$table->string('password');
|
$table->string('password');
|
||||||
$table->string('no_wa', 20)->nullable();
|
$table->string('no_wa', 20)->nullable();
|
||||||
$table->text('alamat')->nullable();
|
$table->text('alamat')->nullable();
|
||||||
$table->enum('role', ['admin', 'pemilik']); // Enum Role
|
$table->enum('role', ['admin_buket', 'admin_foto', 'pemilik']); // Enum Role
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
});
|
});
|
||||||
Schema::create('sessions', function (Blueprint $table) {
|
Schema::create('sessions', function (Blueprint $table) {
|
||||||
|
|
|
||||||
|
|
@ -20,12 +20,13 @@ public function up(): void
|
||||||
$table->foreignId('id_buket')->constrained('bukets', 'id_buket')->onDelete('cascade');
|
$table->foreignId('id_buket')->constrained('bukets', 'id_buket')->onDelete('cascade');
|
||||||
|
|
||||||
$table->text('request')->nullable(); // Catatan khusus
|
$table->text('request')->nullable(); // Catatan khusus
|
||||||
|
$table->text('ucapan')->nullable(); // Catatan khusus
|
||||||
$table->dateTime('tgl_ambil');
|
$table->dateTime('tgl_ambil');
|
||||||
$table->decimal('total_bayar', 12, 2);
|
$table->decimal('total_bayar', 12, 2);
|
||||||
$table->string('bukti_bayar')->nullable();
|
$table->string('bukti_bayar')->nullable();
|
||||||
|
|
||||||
// Enum Status Final
|
// Enum Status Final
|
||||||
$table->enum('status_transaksi', ['menunggu_verifikasi', 'diproses', 'selesai', 'dibatalkan'])->default('menunggu_verifikasi');
|
$table->enum('status_transaksi', ['menunggu_verifikasi', 'diterima', 'ditolak', 'selesai', 'dibatalkan'])->default('menunggu_verifikasi');
|
||||||
|
|
||||||
$table->timestamps();
|
$table->timestamps();
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue