Update Form

This commit is contained in:
NoBody313
2025-05-08 09:36:20 +07:00
parent 653482d2b2
commit ca9fd810a7
6 changed files with 687 additions and 150 deletions
+26 -7
View File
@@ -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
*
+4
View File
@@ -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(