news_title = $news_title; $this->channel = $channel; $this->issue_status = $issue_status; $this->keyword = $keyword; $this->input_year = $input_year; $this->input_month = $input_month; $this->input_date = $input_date; $this->release_year = $release_year; $this->release_month = $release_month; $this->release_date = $release_date; } public function collection() { $query = MediaMonitoring::with(['enhancer', 'issue']); if($this->news_title){ $query->where('title', 'LIKE', '%'. $this->news_title.'%'); } if($this->channel && $this->channel !== 'all'){ $query->where('channel', $this->channel); } if ($this->issue_status && $this->issue_status !== 'all') { if ($this->issue_status === 'added') { $query->whereHas('issue'); } elseif ($this->issue_status === 'not_added') { $query->whereDoesntHave('issue'); } } if($this->keyword){ $query->where('keyword', 'LIKE', '%'. $this->keyword.'%'); } if ($this->input_year) { $query->whereYear('created_at', $this->input_year); } if ($this->input_month) { $monthYear = Carbon::parse($this->input_month); $query->whereYear('created_at', $monthYear->year) ->whereMonth('created_at', $monthYear->month); } if ($this->input_date) { $query->whereDate('created_at', $this->input_date); } if ($this->release_year) { $query->whereYear('release_date', $this->release_year); } if ($this->release_month) { $monthYear = Carbon::parse($this->release_month); $query->whereYear('release_date', $monthYear->year) ->whereMonth('release_date', $monthYear->month); } if ($this->release_date) { $query->whereDate('release_date', $this->release_date); } return $query->get(); } public function map($mediaMonitoring): array { return [ $this->no++, $mediaMonitoring->code, $mediaMonitoring->title, $mediaMonitoring->media_name, $mediaMonitoring->theme, $mediaMonitoring->writter, $mediaMonitoring->channel, $mediaMonitoring->keyword, $mediaMonitoring->influencer, $mediaMonitoring->link, $mediaMonitoring->news_page, $mediaMonitoring->release_date, $mediaMonitoring->issue ? 'Sudah Ditambahkan' : 'Belum Ditambahkan', $mediaMonitoring->enhancer->name ?? 'Admin', Carbon::parse($mediaMonitoring->created_at)->locale('id')->translatedFormat('l, d F Y'), ]; } public function headings(): array { return [ ['Data Monitoring Media', '', '', '', '', '', '', '', '', '', '', '', '', ''], ['NO', 'Kode', 'Judul Berita', 'Media', 'Tema', 'Penulis', 'Channel', 'Kata Kunci', 'Influencer', 'Link', 'Halaman Berita', 'Tanggal Rilis', 'Status Isu', 'Oleh', 'Tanggal Input'] ]; } public function styles(Worksheet $sheet) { $sheet->mergeCells('A1:N1'); // A1 sampai D1 digabung // Set alignment untuk pusat horizontal dan vertikal $sheet->getStyle('A1:N1')->getAlignment()->setHorizontal('center'); $sheet->getStyle('A1:N1')->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); $sheet->getColumnDimension('M')->setAutoSize(true); $sheet->getColumnDimension('N')->setAutoSize(true); // Menambahkan gaya lain jika diperlukan $sheet->getStyle('A1:N1')->getFont()->setBold(true); $sheet->getStyle('A1:N1')->getFont()->setSize(14); } }