61 lines
2.2 KiB
PHP
61 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Models\User;
|
|
use Carbon\Carbon;
|
|
use App\Models\Order;
|
|
use Barryvdh\DomPDF\Facade\Pdf;
|
|
|
|
class SalaryController extends Controller
|
|
{
|
|
public function index(Request $request)
|
|
{
|
|
// Ambil tanggal dari request atau default ke bulan ini
|
|
$startDate = $request->startDate ?? Carbon::now()->startOfMonth()->toDateString();
|
|
$endDate = $request->endDate ?? Carbon::now()->endOfMonth()->toDateString();
|
|
|
|
// Ambil data gaji kurir berdasarkan order dalam periode tertentu
|
|
$courierSalaries = User::whereHas('ordersAsKurir', function ($query) use ($startDate, $endDate) {
|
|
$query->whereBetween('created_at', [$startDate, $endDate]);
|
|
})->with(['ordersAsKurir' => function ($query) use ($startDate, $endDate) {
|
|
$query->whereBetween('created_at', [$startDate, $endDate]);
|
|
}])->get()->map(function ($kurir) {
|
|
$totalOrders = $kurir->ordersAsKurir->count();
|
|
return (object) [
|
|
'courier_id' => $kurir->id,
|
|
'courier_name' => $kurir->name,
|
|
'total_orders' => $totalOrders,
|
|
'salary_per_order' => 5000, // Pastikan field ini ada di database
|
|
'total_salary' => $totalOrders * 5000,
|
|
'last_order_date' => $kurir->ordersAsKurir->max('created_at') ?? '-',
|
|
];
|
|
});
|
|
|
|
// Hitung total gaji semua kurir
|
|
$totalSalary = $courierSalaries->sum('total_salary');
|
|
$query = Order::whereNotNull('kurir_id');
|
|
|
|
if ($startDate && $endDate) {
|
|
$query->whereBetween('created_at', [$startDate, $endDate]);
|
|
} else {
|
|
// Default: bulan ini
|
|
$query->whereMonth('created_at', now()->month)
|
|
->whereYear('created_at', now()->year);
|
|
}
|
|
|
|
$totalGajiKurir = $query->count() * 5000;
|
|
|
|
return view('salary.index', compact('courierSalaries', 'totalSalary', 'startDate', 'endDate', 'totalGajiKurir'));
|
|
}
|
|
|
|
public function printPDF()
|
|
{
|
|
$kurirs = User::where('role', 'kurir')->get(); // Ambil kurir dari tabel users
|
|
|
|
$pdf = Pdf::loadView('salary.print', compact('kurirs'));
|
|
return $pdf->download('gaji_kurir.pdf');
|
|
}
|
|
}
|