Update Form
This commit is contained in:
@@ -4,6 +4,8 @@ namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\FileUpload;
|
||||
use App\Models\Letter;
|
||||
use Barryvdh\DomPDF\Facade\Pdf;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\Http\Request;
|
||||
@@ -11,6 +13,7 @@ use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\Support\Facades\URL;
|
||||
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
||||
use Exception;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
|
||||
/**
|
||||
@@ -103,8 +106,8 @@ class LetterController extends Controller
|
||||
'program_studi_mahasiswa' => 'required|string',
|
||||
'tahun_ajaran' => 'required|string',
|
||||
'start_date' => 'required|date',
|
||||
'completion_date' => 'nullable|date',
|
||||
'nomor_surat_acceptance' => 'nullable|string',
|
||||
'completion_date' => 'required|date',
|
||||
'nomor_surat_acceptance' => 'required|string',
|
||||
'nomor_surat_completion' => 'nullable|string',
|
||||
'lampiran' => 'nullable|file|mimes:pdf,jpg,png|max:2048',
|
||||
]);
|
||||
@@ -197,25 +200,27 @@ class LetterController extends Controller
|
||||
'program_studi_mahasiswa' => 'sometimes|string',
|
||||
'tahun_ajaran' => 'sometimes|string',
|
||||
'start_date' => 'sometimes|date',
|
||||
'completion_date' => 'sometimes|date',
|
||||
'completion_date' => 'required|date',
|
||||
'is_acceptance' => 'sometimes|boolean',
|
||||
'nomor_surat_acceptance' => 'nullable|string',
|
||||
'is_completion' => 'sometimes|boolean',
|
||||
'is_completion' => 'nullable|boolean',
|
||||
'nomor_surat_completion' => 'nullable|string',
|
||||
'lampiran' => 'nullable|file|mimes:pdf,jpg,png|max:2048',
|
||||
]);
|
||||
|
||||
// Update boolean flags if letter numbers are provided
|
||||
// Force update boolean if nomor_surat_* diberikan
|
||||
if ($request->has('nomor_surat_acceptance')) {
|
||||
$validated['is_acceptance'] = !empty($request->nomor_surat_acceptance);
|
||||
$validated['is_acceptance'] = !empty($request->input('nomor_surat_acceptance'));
|
||||
}
|
||||
|
||||
if ($request->has('nomor_surat_completion')) {
|
||||
$validated['is_completion'] = !empty($request->nomor_surat_completion);
|
||||
$validated['is_completion'] = !empty($request->input('nomor_surat_completion'));
|
||||
}
|
||||
|
||||
// Update letter
|
||||
$letter->update($validated);
|
||||
|
||||
// Upload file jika ada
|
||||
if ($request->hasFile('lampiran')) {
|
||||
$this->handleFileUpload($request->file('lampiran'), $letter, true);
|
||||
}
|
||||
@@ -314,6 +319,20 @@ class LetterController extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
public function generateSurat($id)
|
||||
{
|
||||
$letter = Letter::findOrFail($id);
|
||||
$letter->start_formatted = Carbon::parse($letter->start_date)->translatedFormat('j F Y');
|
||||
$letter->end_formatted = Carbon::parse($letter->completion_date)->translatedFormat('j F Y');
|
||||
$pdf = Pdf::loadView('template', ['letter' => $letter, 'tanggalSurat' => Carbon::now()->isoFormat('D MMMM Y')]);
|
||||
return $pdf->download('Surat.pdf')
|
||||
->withHeaders([
|
||||
'Access-Control-Allow-Origin' => '*',
|
||||
'Access-Control-Allow-Methods' => 'GET, OPTIONS',
|
||||
'Access-Control-Allow-Headers' => 'Content-Type, Authorization',
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Format letter data for consistent API response
|
||||
*
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Providers;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Dedoc\Scramble\Scramble;
|
||||
use Dedoc\Scramble\Support\Generator\OpenApi;
|
||||
use Dedoc\Scramble\Support\Generator\SecurityScheme;
|
||||
@@ -23,6 +24,9 @@ class AppServiceProvider extends ServiceProvider
|
||||
*/
|
||||
public function boot(): void
|
||||
{
|
||||
Carbon::setLocale('id');
|
||||
setlocale(LC_TIME, 'id_ID.UTF-8');
|
||||
|
||||
Scramble::configure()
|
||||
->withDocumentTransformers(function (OpenApi $openApi) {
|
||||
$openApi->secure(
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
"license": "MIT",
|
||||
"require": {
|
||||
"php": "^8.2",
|
||||
"barryvdh/laravel-dompdf": "^3.1",
|
||||
"dedoc/scramble": "^0.12.15",
|
||||
"laravel/framework": "^12.0",
|
||||
"laravel/pulse": "^1.4",
|
||||
|
||||
Generated
+516
-143
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,138 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="id">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Surat Penerimaan</title>
|
||||
<style>
|
||||
@page {
|
||||
size: A4;
|
||||
margin: 2cm;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: Helvetica, Arial, sans-serif;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
.container {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.kop {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.kop img {
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
}
|
||||
|
||||
.kop-text {
|
||||
flex: 1;
|
||||
text-align: start;
|
||||
}
|
||||
|
||||
.line {
|
||||
border-bottom: 2px solid black;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.section {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.label {
|
||||
display: inline-block;
|
||||
width: 100px;
|
||||
}
|
||||
|
||||
.bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="container">
|
||||
{{-- Kop Surat --}}
|
||||
<table style="width: 100%; margin-bottom: 20px;">
|
||||
<tr>
|
||||
<td style="width: 80px;">
|
||||
<img src="{{ public_path('assets/humic.jpg') }}" alt="Logo" style="width: 80px;height: 80px">
|
||||
</td>
|
||||
<td style="text-align: center;">
|
||||
<div style="font-size: 14pt; font-weight: bold; line-height: 1.3;">
|
||||
Pusat Penelitian HUMIC Engineering<br>
|
||||
Universitas Telkom
|
||||
</div>
|
||||
<div style="font-size: 10pt; margin-top: 4px; line-height: 1.4;">
|
||||
Jl. Telekomunikasi Terusan Buah Batu, Bandung 40257, Jawa Barat, Indonesia<br>
|
||||
Telp/Faks: +6281321397936 / +6222-70658638 / +6222-7565931
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
<div class="line"></div>
|
||||
|
||||
|
||||
|
||||
{{-- Detail Surat --}}
|
||||
<div class="section">
|
||||
<div><span class="label">Nomor</span>: {{ $letter->nomor_surat_acceptance }}</div>
|
||||
<div><span class="label">Lampiran</span>: -</div>
|
||||
<div><span class="label">Perihal</span>: Surat Penerimaan Kerja Praktek</div>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<p>Kepada Yth.<br>
|
||||
Kaprodi {{ $letter->program_studi_mahasiswa }} <br>
|
||||
di Tempat</p>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<p>Dengan hormat,</p>
|
||||
<p>
|
||||
Sehubungan dengan pengajuan kerja praktek di CoE Humic Engineering yang telah diajukan oleh mahasiswa
|
||||
atas nama:
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<div><span class="label">Nama</span>: {{ $letter->nama_mahasiswa }}</div>
|
||||
<div><span class="label">NIM</span>: {{ $letter->nomor_induk_mahasiswa }}</div>
|
||||
<div><span class="label">Prodi</span>: {{ $letter->program_studi_mahasiswa }}</div>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<p>
|
||||
Dengan ini kami menyatakan bahwa mahasiswa yang bersangkutan <span class="bold">DITERIMA</span> untuk
|
||||
melaksanakan kerja praktek di CoE Human Centric Engineering, Telkom University. Kegiatan ini
|
||||
dilaksanakan pada tanggal {{ $letter->start_formatted }} sampai dengan {{ $letter->end_formatted }},
|
||||
periode Tahun Ajaran Ganjil {{ $letter->tahun_ajaran }}.
|
||||
</p>
|
||||
<p>
|
||||
Demikian surat keterangan ini kami buat agar dapat dipergunakan sebagaimana mestinya.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<p>Bandung, {{ $tanggalSurat }}</p>
|
||||
<br><br><br>
|
||||
<p><span class="bold" style="text-decoration: underline;">Assoc. Prof. Dr. Satria Manda</span><br>
|
||||
Direktur CoE HUMIC ENGINERING</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -1,6 +1,7 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\AdminMonitoringController;
|
||||
use App\Http\Controllers\LetterController;
|
||||
use Illuminate\Auth\Middleware\Authorize;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
@@ -14,4 +15,5 @@ Route::post('/monitoring/login', [AdminMonitoringController::class, 'login'])
|
||||
Route::middleware('auth:monitoring')->group(function () {
|
||||
Route::post('/monitoring/logout', [AdminMonitoringController::class, 'logout'])
|
||||
->name('monitoring.logout');
|
||||
Route::get('/generate-surat', [LetterController::class, 'generateSurat']);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user