sigd/app/Http/Controllers/Activity/FormMetadataController.php

60 lines
2.0 KiB
PHP

<?php
namespace App\Http\Controllers\Activity;
use App\Http\Controllers\Controller;
use App\Models\ActivityForm;
use App\Models\ActivityFormMetadata;
use App\Services\Activity\FormMetadataService;
use Illuminate\Http\Request;
class FormMetadataController extends Controller
{
protected $metaService;
public function __construct(FormMetadataService $metaService)
{
$this->metaService = $metaService;
}
public function index(Request $request)
{
$formId = $request->query('form_id');
$metadataList = ActivityFormMetadata::rowActive()->where('form_id', $formId)->orderBy('updated_at', 'DESC')->get();
$form = ActivityForm::rowActive()->where('id', $formId)->first();
if ($form) {
$form['storagePath'] = 'forms/' . $form->sector . '/' . $form->form_code . '/' . $form->inventory_year . '/metadata';
}
return view('modules.form.metadata.list', compact('metadataList', 'form'));
}
public function store(Request $request)
{
$request->validate([
'name' => 'required|string|max:255',
'publisher' => 'required|string|max:255',
'published_year' => 'required|integer',
'contact_name' => 'required|string|max:255',
'contact_phone' => 'required|string|max:255',
'contact_email' => 'required|email|max:255',
'file_document' => 'required|file|max:2048|mimes:pdf,doc,docx,xlsx,xls',
], [
'file_document.max' => 'Ukuran file tidak boleh melebihi 2MB.',
]);
$metadata = $this->metaService->store($request->all());
return response()->json(['success' => 'Metadata berhasil disimpan.']);
}
public function destroy(Request $request, ActivityFormMetadata $metadata)
{
$storagePath = $request->input('storage_path');
$this->metaService->destroy($metadata, $storagePath);
return response()->json(['success' => 'Metadata berhasil dihapus.']);
}
}