maskurir/app/Http/Controllers/SalaryController.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');
}
}