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.']); } }