<?php
namespace App\Exports;
use App\Models\Transaksi;
use DateInterval;
use DatePeriod;
use DateTime;
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 AnggaranExport implements FromView, ShouldAutoSize, WithStyles
{
/**
* @return \Illuminate\Support\Collection
*/
protected $first, $last, $search;
function __construct($first, $last, $search) {
$this->first = $first;
$this->last = $last;
$this->search = $search;
}
public function view(): View
{
$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::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."%");
}
}
}
if($this->first && $this->last || $this->search) {
$data['transaksi'] = $data['transaksi']->get();
}
return view('laporan.rincian_anggaran.cetak', [
'transaksi' => $data['transaksi']
]);
// $pdf = Pdf::loadview('laporan.rincian_biaya.cetak', ['transaksi' => $data['transaksi']]);
// // return $pdf->download('laporan-pegawai.pdf');
// return $pdf->stream("dompdf_out.pdf", array("Attachment" => false));
}
public function styles(Worksheet $sheet)
{
$sheet->mergeCells('A1:A2');
$sheet->mergeCells('I1:I2');
$sheet->mergeCells('B1:H1');
$sheet->mergeCells('B2:H2');
$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:I4');
$sheet->getStyle('A4:I4')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->mergeCells('A5:I5');
$sheet->getStyle('A5:I5')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
// $sheet->mergeCells('A1:L1');
// $sheet->getStyle('A1')->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");
$sumSapi = count($sapi);
$begin = new DateTime($this->first);
$end = new DateTime($this->last);
$interval = DateInterval::createFromDateString('1 month');
$period = new DatePeriod($begin, $interval, $end);
$total_realisasi = 0;
foreach ($period as $dt) {
// $total_realisasi++;
array_push($sapi,chr(64+ $sumSapi++));
// echo $dt->format("M")."<br>";
}
array_push($sapi,chr(64+ $sumSapi));
array_push($sapi,chr(64+ $sumSapi + 1));
array_push($sapi,chr(64+ $sumSapi + 2));
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_CENTER);
$sheet->getStyle($a."6")->getAlignment()->setVertical(Alignment::VERTICAL_CENTER);
}
foreach($sapi as $a) {
$sheet->getStyle($a."7")->applyFromArray([
'borders' => [
'allBorders' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
'color' => ['argb' => '000000'],
],
],
]);
// $sheet->getStyle($a.'7')->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB('D9D9D9');
$sheet->getStyle($a."7")->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle($a."7")->getAlignment()->setVertical(Alignment::VERTICAL_CENTER);
}
$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();
}
$no = 7;
foreach($data['transaksi'] as $b) {
$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->anggaran as $c) {
$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($sapi as $a) {
$sheet->getStyle($a.$no + 1)->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 + 1)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
}
// if ($this->kode == 0) {
// $this->kode = "";
// }
// if($this->status == 2) {
// $this->status = "";
// }
// if( $this->dari != "0" || $this->sampai != "0") {
// $datas = BarangDatangDesc::where('kode_barang','like',"%".$this->kode."%")->where('date_in', '>=', $this->dari)->where('date_in', '<=', $this->sampai)->where('status','like',"%".$this->status."%")->get();
// } else {
// $datas = BarangDatangDesc::where('kode_barang','like',"%".$this->kode."%")->where('status','like',"%".$this->status."%")->get();
// }
// $no = 3;
// foreach($datas as $b) {
// $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)->getAlignment()->setHorizontal(Alignment::HORIZONTAL_LEFT);
// }
// }
}
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]