Files
CKB/app/Exports/TransactionExport.php
2025-05-27 19:09:17 +07:00

94 lines
3.4 KiB
PHP

<?php
namespace App\Exports;
use App\Models\Transaction;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;
class TransactionExport implements FromCollection, WithHeadings
{
protected $date_start;
protected $date_end;
protected $sa;
protected $mechanic;
protected $dealer;
function __construct($request) {
$this->date_start = $request->query('date_start');
$this->date_end = $request->query('date_end');
$this->sa = $request->query('sa');
$this->mechanic = $request->query('mechanic');
$this->dealer = $request->query('dealer');
}
/**
* @return \Illuminate\Support\Collection
*/
public function collection()
{
$data = Transaction::leftJoin('users', 'users.id', '=', 'transactions.user_id')
->leftJoin('users as sa', 'sa.id', '=', 'transactions.user_sa_id')
->leftJoin('works as w', 'w.id', '=', 'transactions.work_id')
->leftJoin('categories as cat', 'cat.id', '=', 'w.category_id')
->leftJoin('dealers as d', 'd.id', '=', 'transactions.dealer_id')
->select('transactions.id', 'transactions.status', 'transactions.user_id as user_id', 'transactions.user_sa_id as user_sa_id', 'users.name as username', 'sa.name as sa_name', 'cat.name as category_name', 'w.name as workname', 'transactions.qty as qty', 'transactions.date as date', 'transactions.police_number as police_number', 'transactions.warranty as warranty', 'transactions.spk as spk', 'transactions.dealer_id', 'd.name as dealer_name');
if(isset($this->date_start) && $this->date_start != null) {
$data = $data->where('transactions.date', '>=', $this->date_start);
}
if(isset($this->date_end) && $this->date_end != null) {
$data = $data->where('transactions.date', '<=', $this->date_end);
}
if(isset($this->sa) && $this->sa != null) {
$data = $data->where('transactions.user_sa_id', $this->sa);
}
if(isset($this->mechanic) && $this->mechanic != null) {
$data = $data->where('transactions.user_id', $this->mechanic);
}
if(isset($this->dealer) && $this->dealer != null) {
$data = $data->where('transactions.dealer_id', $this->dealer);
}
$data = $data->orderBy('date', 'DESC')->get();
$data2 = [];
foreach($data as $item) {
$data2[] = [
"date" => date('d-m-Y', strtotime($item['date'])),
"dealer" => $item['dealer_name'],
"spk" => $item['spk'],
"mechanic" => $item['username'],
"sa" => $item['sa_name'],
"police_number" => $item['police_number'],
"warranty" => $item['warranty'] == 1 ? 'Ya' : 'Tidak',
"category" => $item['category_name'],
"work" => $item['workname'],
"qty" => $item['qty']
];
}
$data2 = collect($data2);
return $data2;
}
public function headings(): array
{
return ["Tanggal", "Dealer", "Spk","Mekanik", "SA", "No. Polisi", "Warranty", "Kategori", "Pekerjaan", "Qty"];
}
// public function actions(Request $request)
// {
// return [
// (new DownloadExcel)->withHeadings('Tanggal', 'Mekanik', 'SA', 'No.Polisi', 'Warranty', 'Kategori', 'Qty')
// ];
// }
}