feat: print data
This commit is contained in:
parent
64f0eae22e
commit
88d9da1762
@ -2466,6 +2466,8 @@ public function issueManagement(Request $request){
|
|||||||
->addColumn('action', function ($data) {
|
->addColumn('action', function ($data) {
|
||||||
$showUrl = route('dashboard.issue.managements.show', ['id' => encrypt_id($data->id)]);
|
$showUrl = route('dashboard.issue.managements.show', ['id' => encrypt_id($data->id)]);
|
||||||
|
|
||||||
|
$printUrl = route('dashboard.issue.managements.print', ['id' => encrypt_id($data->id)]);
|
||||||
|
|
||||||
$editUrl = route('dashboard.issue.managements.edit', ['id' => encrypt_id($data->id)]);
|
$editUrl = route('dashboard.issue.managements.edit', ['id' => encrypt_id($data->id)]);
|
||||||
|
|
||||||
$deleteUrl = route('dashboard.issue.managements.destroy', ['id' => encrypt_id($data->id)]);
|
$deleteUrl = route('dashboard.issue.managements.destroy', ['id' => encrypt_id($data->id)]);
|
||||||
@ -2476,6 +2478,10 @@ public function issueManagement(Request $request){
|
|||||||
<ul class="link-list-opt">
|
<ul class="link-list-opt">
|
||||||
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
|
<li><a href="'.$showUrl.'"><em class="icon ni ni-eye"></em><span>Detail</span></a></li>';
|
||||||
|
|
||||||
|
if (is_role([1])) {
|
||||||
|
$dropdown .= '<li><a href="'.$printUrl.'" target="_blank"><em class="icon ni ni-printer"></em><span>Cetak</span></a></li>';
|
||||||
|
}
|
||||||
|
|
||||||
if (is_role([1])) {
|
if (is_role([1])) {
|
||||||
$dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
|
$dropdown .= '<li><a href="'.$editUrl.'"><em class="icon ni ni-edit"></em><span>Ubah</span></a></li>';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,6 +12,7 @@
|
|||||||
use App\Models\MediaMonitoring;
|
use App\Models\MediaMonitoring;
|
||||||
use App\Models\SubClassification;
|
use App\Models\SubClassification;
|
||||||
use App\Models\SubLocation;
|
use App\Models\SubLocation;
|
||||||
|
use Barryvdh\DomPDF\Facade\Pdf;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
@ -175,4 +176,16 @@ public function export(Request $request)
|
|||||||
|
|
||||||
return Excel::download(new IssueManagementExport($classification, $sub_classification, $location, $sub_location, $government_agency, $issue, $response, $year, $month, $date), 'issue-managements-'.$formattedNow.'.xlsx');
|
return Excel::download(new IssueManagementExport($classification, $sub_classification, $location, $sub_location, $government_agency, $issue, $response, $year, $month, $date), 'issue-managements-'.$formattedNow.'.xlsx');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function printData($id){
|
||||||
|
|
||||||
|
$issueManagement = IssueManagement::with([
|
||||||
|
'location', 'subLocation', 'classification', 'subClassification', 'governmentAgencies','enhancer', 'mediaMonitoring'
|
||||||
|
])->findOrFail(decrypt_id($id));
|
||||||
|
|
||||||
|
|
||||||
|
$pdf = Pdf::loadView('dashboard.issue-managements.print', compact('issueManagement'));
|
||||||
|
|
||||||
|
return $pdf->stream(slugify('manajemen isu '. $issueManagement->mediaMonitoring->code).'.pdf');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
188
resources/views/dashboard/issue-managements/print.blade.php
Normal file
188
resources/views/dashboard/issue-managements/print.blade.php
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="id">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Data Isu</title>
|
||||||
|
<style>
|
||||||
|
/* Styling tetap sama seperti sebelumnya */
|
||||||
|
body {
|
||||||
|
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body::before {
|
||||||
|
content: "";
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background-image: url('assets/defaults/simedkom-logo-circle.png');
|
||||||
|
background-size: 300px auto;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center center;
|
||||||
|
opacity: 0.05;
|
||||||
|
z-index: -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
header .icon {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
header .icon img {
|
||||||
|
width: 20% !important;
|
||||||
|
max-width: 200px;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
width: 80%;
|
||||||
|
margin: 20px auto;
|
||||||
|
padding: 20px;
|
||||||
|
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
||||||
|
}
|
||||||
|
.header {
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
padding-bottom: 20px;
|
||||||
|
border-bottom: 2px solid #e0e0e0;
|
||||||
|
}
|
||||||
|
.header h2 {
|
||||||
|
font-size: 24px;
|
||||||
|
color: #3A59D1;
|
||||||
|
}
|
||||||
|
.header h3 {
|
||||||
|
font-size: 20px;
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
.row {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
padding: 5px 0;
|
||||||
|
border-bottom: 1px solid #f1f1f1;
|
||||||
|
}
|
||||||
|
.row:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
.label {
|
||||||
|
font-weight: bold;
|
||||||
|
width: 35%;
|
||||||
|
color: #444;
|
||||||
|
}
|
||||||
|
.value {
|
||||||
|
width: 60%;
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
.section {
|
||||||
|
margin-bottom: 25px;
|
||||||
|
}
|
||||||
|
.document {
|
||||||
|
margin-top: 10px;
|
||||||
|
padding: 5px 0;
|
||||||
|
}
|
||||||
|
.document img {
|
||||||
|
max-width: 300px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.document .content {
|
||||||
|
background-color: rgba(241, 237, 237, 0.363);
|
||||||
|
padding: 1rem;
|
||||||
|
border-radius: 0.5rem;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center; /* ini yang bikin vertikal align tengah */
|
||||||
|
text-align: center;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.document a {
|
||||||
|
color: #007bff;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
.footer {
|
||||||
|
text-align: right;
|
||||||
|
font-size: 12px;
|
||||||
|
color: #aaa;
|
||||||
|
margin-top: 30px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<header>
|
||||||
|
<div class="icon">
|
||||||
|
<img src="{{ public_path('assets/defaults/simedkom-logo-full.png') }}" alt="">
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
<div class="container">
|
||||||
|
<div class="header">
|
||||||
|
<h2>Manajemen Isu</h2>
|
||||||
|
{{-- <h3>{{ $issueManagement->content_theme }}</h3> --}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="section">
|
||||||
|
<div class="row">
|
||||||
|
<div class="label">Klasifikasi</div>
|
||||||
|
<div class="value">{{ $issueManagement->classification->name }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="label">Sub Klasifikasi</div>
|
||||||
|
<div class="value">{{ $issueManagement->subClassification->name }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="label">Lokus</div>
|
||||||
|
<div class="value">{{ $issueManagement->location->name }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="label">Sub Lokus</div>
|
||||||
|
<div class="value">{{ $issueManagement->subLocation->name }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="label">Kode</div>
|
||||||
|
<div class="value">{{ $issueManagement->mediaMonitoring->code }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="label">Media</div>
|
||||||
|
<div class="value">{{ $issueManagement->mediaMonitoring->media_name }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="label">Judul Monitoring Media</div>
|
||||||
|
<div class="value">{{ $issueManagement->mediaMonitoring->title }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="label">Isu</div>
|
||||||
|
<div class="value">{{ ucfirst($issueManagement->issue) }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="label">Tanggapan</div>
|
||||||
|
<div class="value">{{ ucfirst($issueManagement->response) }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="label">Dinas</div>
|
||||||
|
<div class="value">{{ $issueManagement->governmentAgencies->map(function($agency) {
|
||||||
|
return Str::ucfirst($agency->name);
|
||||||
|
})->implode(', ') }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="label">Deskripsi</div>
|
||||||
|
<div class="value">{{ strip_tags($issueManagement->description) }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="label">Tanggal Input</div>
|
||||||
|
<div class="value">{{ idn_date($issueManagement->created_at, 'l, d F Y') }}</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="label">Diinput Oleh</div>
|
||||||
|
<div class="value">{{ $issueManagement->enhancer?->name ?? 'Admin' }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="footer">
|
||||||
|
Dicetak pada {{ now()->format('d-m-Y H:i') . ' - ' . $app->app_title }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@ -546,6 +546,7 @@
|
|||||||
|
|
||||||
Route::post('/filter', 'filter')->name('filter');
|
Route::post('/filter', 'filter')->name('filter');
|
||||||
Route::post('/export', 'export')->name('export');
|
Route::post('/export', 'export')->name('export');
|
||||||
|
Route::get('/print/{id}', 'printData')->name('print');
|
||||||
});
|
});
|
||||||
|
|
||||||
Route::get('/data', [DatatableController::class, 'issueManagement'])->name('data');
|
Route::get('/data', [DatatableController::class, 'issueManagement'])->name('data');
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user