<?php
namespace App\Exports;
use App\Models\CetakRincianBiaya;
use App\Models\Rekening;
use App\Models\Transaksi;
use Illuminate\Contracts\View\View;
use Illuminate\Support\Facades\Schema;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\FromView;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithStyles;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
class BiayaExport implements FromView, ShouldAutoSize, WithStyles
{
/**
* @return \Illuminate\Support\Collection
*/
// public function collection()
// {
// //
// }
protected $first, $last, $search, $uang;
function __construct($first, $last, $search, $uang) {
$this->first = $first;
$this->last = $last;
$this->search = $search;
$this->uang = $uang;
}
public function view(): View
{
$post = new Transaksi;
$tableName = $post->getTable();
$column = Schema::getColumnListing($tableName);
//dd($column);
// $data['transaksi'] = Transaksi::orderBy('created_at', 'ASC');
// $data['cetak'] = CetakRincianBiaya::find($this->id);
$data['rekening'] = Rekening::where('id',0);
if($this->first && $this->last) {
$first = $this->first;
$last = $this->last;
$data['rekening'] = Rekening::whereHas('transaksi', function($t) use($first, $last) {
$t->orderBy('created_at', 'DESC')->whereNotNull('staf_id')->whereNotNull('bendahara_id')->whereNotNull('kepala_id');
$t = $t->whereBetween('tanggal', [$first, $last]);
});
// $data['transaksi'] = Transaksi::orderBy('created_at', 'DESC')->whereNotNull('staf_id')->whereNotNull('bendahara_id')->whereNotNull('kepala_id');
// $data['transaksi'] = $data['transaksi']->whereBetween('tanggal', [$this->first, $this->last]);
}
if($this->search) {
// $data['transaksi'] = Transaksi::orderBy('created_at', 'DESC')->whereNotNull('staf_id')->whereNotNull('bendahara_id')->whereNotNull('kepala_id');
$cari = $this->search;
$data['rekening'] = Rekening::whereHas('transaksi', function($t) use($first, $last, $column, $cari) {
$t->orderBy('created_at', 'DESC')->whereNotNull('staf_id')->whereNotNull('bendahara_id')->whereNotNull('kepala_id');
foreach($column as $a => $value) {
if($a == 0) {
$t = $t->where($value,'like',"%".$cari."%");
} else if($a == 1) {
$t = $t->orWhereHas('kode_rekening', function($kode) use($cari) {
$kode->Where('kode','like',"%".$cari."%");
});
} else if($a == 5) {
$t = $t->orWhereHas('tahun_rekening', function($tahun) use($cari) {
$tahun->Where('tahun','like',"%".$cari."%");
});
}else {
$t = $t->orWhere($value,'like',"%".$cari."%");
}
}
});
// $data['transaksi'] = $data['transaksi']->get();
}
if($this->first && $this->last || $this->search) {
$data['rekening'] = $data['rekening']->get();
}
// if($this->first && $this->last) {
// $data['transaksi'] = Transaksi::orderBy('created_at', 'DESC')->whereNotNull('staf_id')->whereNotNull('bendahara_id')->whereNotNull('kepala_id');
// $data['transaksi'] = $data['transaksi']->whereBetween('tanggal', [$this->first, $this->last]);
// }
// if($this->search) {
// $data['transaksi'] = Transaksi::orderBy('created_at', 'DESC')->whereNotNull('staf_id')->whereNotNull('bendahara_id')->whereNotNull('kepala_id');
// $cari = $this->search;
// foreach($column as $a => $value) {
// if($a == 0) {
// $data['transaksi'] = $data['transaksi']->where($value,'like',"%".$cari."%");
// } else if($a == 1) {
// $data['transaksi'] = $data['transaksi']->orWhereHas('kode_rekening', function($kode) use($cari) {
// $kode->Where('kode','like',"%".$cari."%");
// });
// } else if($a == 5) {
// $data['transaksi'] = $data['transaksi']->orWhereHas('tahun_rekening', function($tahun) use($cari) {
// $tahun->Where('tahun','like',"%".$cari."%");
// });
// }else {
// $data['transaksi'] = $data['transaksi']->orWhere($value,'like',"%".$cari."%");
// }
// }
// $data['transaksi'] = $data['transaksi']->get();
// }
// if($this->first && $this->last || $this->search) {
// $data['transaksi'] = $data['transaksi']->get();
// }
$data['uang_muka'] = $this->uang;
// dd($data['uang_muka']);
return view('laporan.rincian_biaya.cetak',$data);
}
public function styles(Worksheet $sheet)
{
$sheet->mergeCells('A1:A2');
$sheet->mergeCells('F1:F2');
$sheet->mergeCells('B1:E1');
$sheet->mergeCells('B2:E2');
$sheet->getStyle('B1:E1')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle('B1:E1')->getAlignment()->setVertical(Alignment::VERTICAL_CENTER);
$sheet->getStyle('B2:E2')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle('B2:E2')->getAlignment()->setVertical(Alignment::VERTICAL_CENTER);
$sheet->mergeCells('A4:F4');
$sheet->getStyle('A4:F4')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->mergeCells('A5:F5');
$sheet->getStyle('A5:F5')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
// $sheet->getStyle('A1')->getFont()->setSize(26);
// $sheet->getStyle('A1')->getFont()->setBold(true);
// $sheet->getStyle('A3:L3')->getFont()->setBold(true);
$sapi = array("A","B","C","D","E","F");
foreach($sapi as $a) {
$sheet->getStyle($a."6")->applyFromArray([
'borders' => [
'allBorders' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
'color' => ['argb' => '000000'],
],
],
]);
// $sheet->getStyle($a.'6')->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB('D9D9D9');
$sheet->getStyle($a."6")->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
}
$post = new Transaksi;
$tableName = $post->getTable();
$column = Schema::getColumnListing($tableName);
//dd($column);
// $data['transaksi'] = Transaksi::orderBy('created_at', 'ASC');
// if($this->first && $this->last) {
// $data['transaksi'] = Transaksi::whereBetween('tanggal', [$this->first, $this->last]);
// }
// if($this->search) {
// $cari = $this->search;
// foreach($column as $a => $value) {
// if($a == 0) {
// $data['transaksi'] = $data['transaksi']->where($value,'like',"%".$cari."%");
// } else if($a == 1) {
// $data['transaksi'] = $data['transaksi']->orWhereHas('kode_rekening', function($kode) use($cari) {
// $kode->Where('kode','like',"%".$cari."%");
// });
// } else if($a == 5) {
// $data['transaksi'] = $data['transaksi']->orWhereHas('tahun_rekening', function($tahun) use($cari) {
// $tahun->Where('tahun','like',"%".$cari."%");
// });
// }else {
// $data['transaksi'] = $data['transaksi']->orWhere($value,'like',"%".$cari."%");
// }
// }
// }
// if($this->first && $this->last || $this->search) {
// $data['transaksi'] = $data['transaksi']->get();
// }
$data['rekening'] = Rekening::where('id',0);
if($this->first && $this->last) {
$first = $this->first;
$last = $this->last;
$data['rekening'] = Rekening::whereHas('transaksi', function($t) use($first, $last) {
$t->orderBy('created_at', 'DESC')->whereNotNull('staf_id')->whereNotNull('bendahara_id')->whereNotNull('kepala_id');
$t = $t->whereBetween('tanggal', [$first, $last]);
});
// $data['transaksi'] = Transaksi::orderBy('created_at', 'DESC')->whereNotNull('staf_id')->whereNotNull('bendahara_id')->whereNotNull('kepala_id');
// $data['transaksi'] = $data['transaksi']->whereBetween('tanggal', [$this->first, $this->last]);
}
if($this->search) {
// $data['transaksi'] = Transaksi::orderBy('created_at', 'DESC')->whereNotNull('staf_id')->whereNotNull('bendahara_id')->whereNotNull('kepala_id');
$cari = $this->search;
$data['rekening'] = Rekening::whereHas('transaksi', function($t) use($first, $last, $column, $cari) {
$t->orderBy('created_at', 'DESC')->whereNotNull('staf_id')->whereNotNull('bendahara_id')->whereNotNull('kepala_id');
foreach($column as $a => $value) {
if($a == 0) {
$t = $t->where($value,'like',"%".$cari."%");
} else if($a == 1) {
$t = $t->orWhereHas('kode_rekening', function($kode) use($cari) {
$kode->Where('kode','like',"%".$cari."%");
});
} else if($a == 5) {
$t = $t->orWhereHas('tahun_rekening', function($tahun) use($cari) {
$tahun->Where('tahun','like',"%".$cari."%");
});
}else {
$t = $t->orWhere($value,'like',"%".$cari."%");
}
}
});
// $data['transaksi'] = $data['transaksi']->get();
}
if($this->first && $this->last || $this->search) {
$data['rekening'] = $data['rekening']->get();
}
$no = 6;
foreach($data['rekening'] as $b) {
// dd($b->transaksi);
// $no++;
// foreach($sapi as $a) {
// $sheet->getStyle($a.$no)->applyFromArray([
// 'borders' => [
// 'allBorders' => [
// 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
// 'color' => ['argb' => '000000'],
// ],
// ],
// ]);
// // $sheet->getStyle($a.$no)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB('D9D9D9');
// $sheet->getStyle($a.$no)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
// }
foreach ($b->transaksi as $a) {
$no++;
foreach($sapi as $a) {
$sheet->getStyle($a.$no)->applyFromArray([
'borders' => [
'allBorders' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
'color' => ['argb' => '000000'],
],
],
]);
// $sheet->getStyle($a.$no)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB('D9D9D9');
$sheet->getStyle($a.$no)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
}
}
$no++;
foreach($sapi as $a) {
$sheet->getStyle($a.$no)->applyFromArray([
'borders' => [
'allBorders' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
'color' => ['argb' => '000000'],
],
],
]);
// $sheet->getStyle($a.$no + 1)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB('D9D9D9');
$sheet->getStyle($a.$no)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
}
$sheet->mergeCells('A'.($no).':D'.($no));
$sheet->getStyle('A'.($no).':D'.($no))->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$no++;
foreach($sapi as $a) {
$sheet->getStyle($a.$no)->applyFromArray([
'borders' => [
'allBorders' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
'color' => ['argb' => '000000'],
],
],
]);
// $sheet->getStyle($a.$no + 2)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB('D9D9D9');
$sheet->getStyle($a.$no)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
}
$sheet->mergeCells('A'.($no).':D'.($no));
$sheet->getStyle('A'.($no).':D'.($no))->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
}
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]