classification = $classification; $this->sub_classification = $sub_classification; $this->location = $location; $this->sub_location = $sub_location; $this->government_agency = $government_agency; $this->issue = $issue; $this->response = $response; $this->year = $year; $this->month = $month; $this->date = $date; $this->start_date = $start_date; $this->end_date = $end_date; $this->user = $user; } public function collection() { $query = IssueManagement::with(['location', 'subLocation', 'classification', 'subClassification', 'enhancer', 'governmentAgencies']); if ($this->classification) { $query->where('classification_id', decrypt_id($this->classification)); } if ($this->sub_classification) { $query->where('sub_classification_id', decrypt_id($this->sub_classification)); } if ($this->location) { $query->where('location_id', decrypt_id($this->location)); } if ($this->sub_location) { $query->where('sub_location_id', decrypt_id($this->sub_location)); } if ($this->government_agency) { $query->whereHas('governmentAgencies', function ($query) { $query->where('issue_managements_government_agencies.government_agency_id', decrypt_id($this->government_agency)); }); } if ($this->issue) { switch ($this->issue) { case 'positive': $query->where('issue', 'positif'); break; case 'negative': $query->where('issue', 'negatif'); break; case 'neutral': $query->where('issue', 'netral'); break; case 'crisis': $query->where('issue', 'krisis'); break; } } if ($this->response) { switch ($this->response) { case 'positive': $query->where('response', 'positif'); break; case 'negative': $query->where('response', 'negatif'); break; case 'neutral': $query->where('response', 'netral'); break; case 'crisis': $query->where('response', 'krisis'); break; } } if ($this->year) { $query->whereYear('created_at', $this->year); } if ($this->month) { $monthYear = Carbon::parse($this->month); $query->whereYear('created_at', $monthYear->year) ->whereMonth('created_at', $monthYear->month); } if ($this->date) { $query->whereDate('created_at', $this->date); } if ($this->start_date && $this->end_date) { $start = \Carbon\Carbon::createFromFormat('m/d/Y', $this->start_date)->startOfDay(); $end = \Carbon\Carbon::createFromFormat('m/d/Y', $this->end_date)->endOfDay(); $query->whereBetween('created_at', [$start, $end]); } if ($this->user) { $query->where('enhancer_id', decrypt_id($this->user)); } return $query->get(); } public function map($issueManagement): array { return [ $this->no++, $issueManagement->mediaMonitoring->code, $issueManagement->mediaMonitoring->title, $issueManagement->classification->name, $issueManagement->subClassification->name, $issueManagement->location->name, $issueManagement->subLocation->name, ucfirst($issueManagement->issue), ucfirst($issueManagement->response), $issueManagement->governmentAgencies->map(function ($agency) { return Str::ucfirst($agency->name); })->implode(', '), $issueManagement->enhancer->name ?? 'Admin', Carbon::parse($issueManagement->created_at)->locale('id')->translatedFormat('l, d F Y'), ]; } public function headings(): array { return [ ['Data Managemen Isu', '', '', '', '', '', '', '', '', '', '', ''], ['NO', 'Kode', 'Monitoring Media', 'Klasifikasi', 'Sub Klasifikasi', 'Lokus', 'Sub Lokus', 'Isu', 'Tanggapan', 'Dinas', 'Oleh', 'Dibuat Pada'], ]; } public function styles(Worksheet $sheet) { $sheet->mergeCells('A1:L1'); // A1 sampai D1 digabung // Set alignment untuk pusat horizontal dan vertikal $sheet->getStyle('A1:L1')->getAlignment()->setHorizontal('center'); $sheet->getStyle('A1:L1')->getAlignment()->setVertical('center'); $sheet->getColumnDimension('A')->setWidth(7); // Set column A width $sheet->getColumnDimension('B')->setAutoSize(true); $sheet->getColumnDimension('C')->setAutoSize(true); $sheet->getColumnDimension('D')->setAutoSize(true); $sheet->getColumnDimension('E')->setAutoSize(true); $sheet->getColumnDimension('F')->setAutoSize(true); $sheet->getColumnDimension('G')->setAutoSize(true); $sheet->getColumnDimension('H')->setAutoSize(true); $sheet->getColumnDimension('I')->setAutoSize(true); $sheet->getColumnDimension('J')->setAutoSize(true); $sheet->getColumnDimension('K')->setAutoSize(true); $sheet->getColumnDimension('L')->setAutoSize(true); // Menambahkan gaya lain jika diperlukan $sheet->getStyle('A1:L1')->getFont()->setBold(true); $sheet->getStyle('A1:L1')->getFont()->setSize(14); } }