60 lines
2.0 KiB
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('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.']);
|
|
}
|
|
}
|