From 4c8992022ad0e110265ee987da336165efffddeb Mon Sep 17 00:00:00 2001 From: ajikamaludin Date: Fri, 27 Jan 2023 06:32:34 +0700 Subject: [PATCH] crud done , need adjust index and remider --- app/Http/Controllers/DocumentController.php | 60 +++- app/Models/Document.php | 2 +- resources/js/Pages/Document/Detail.jsx | 320 ++++++++++---------- resources/js/Pages/Document/Form.jsx | 65 ++-- resources/js/Pages/Document/Index.jsx | 2 +- 5 files changed, 246 insertions(+), 203 deletions(-) diff --git a/app/Http/Controllers/DocumentController.php b/app/Http/Controllers/DocumentController.php index 1a3037e..5e1bba4 100644 --- a/app/Http/Controllers/DocumentController.php +++ b/app/Http/Controllers/DocumentController.php @@ -19,7 +19,7 @@ class DocumentController extends Controller { public function index(Request $request) { - $query = Document::with(['type', 'category']); + $query = Document::with(['variety', 'category']); if ($request->has('sortBy') && $request->has('sortRule')) { $query->orderBy($request->sortBy, $request->sortRule); @@ -98,7 +98,7 @@ class DocumentController extends Controller $doc->save(); - return redirect("docs.index") + return redirect()->route("docs.index") ->with('message', ['type' => 'success', 'message' => 'The data has beed saved']); } @@ -107,19 +107,69 @@ class DocumentController extends Controller return inertia('Document/Form', [ 'types' => Type::all(), 'categories' => Category::all(), - 'doc' => $doc->load(['type', 'category']) + 'doc' => $doc->load(['variety', 'category']) ]); } public function update(Request $request, Document $doc) { - // + $request->validate([ + "no_doc" => "required|string", + "name" => "required|string", + "company_name" => "required|string", + "type_id" => "required|exists:types,id", + "category_id" => "required|exists:categories,id", + "publisher" => "required|string", + "description" => "nullable", + "publish_date" => "required|date", + "due_date" => "required_if:type,1", + "status" => "required|in:0,1", + "type" => "required|in:0,1", + "group" => "required|string", + "region" => "required|string", + "document" => "nullable|file", + ]); + + if($request->publish_date == Document::TYPE_TETAP) { + $request->validate([ + "due_date" => "date|after_or_equal:".$request->publish_date + ]); + } + + $doc->fill([ + "no" => Document::count() + 1, + "no_doc" => $request->no_doc, + "name" => $request->name, + "company_name" => $request->company_name, + "type_id" => $request->type_id, + "category_id" => $request->category_id, + "publisher" => $request->publisher, + "description" => $request->description, + "publish_date" => $request->publish_date, + "due_date" => $request->due_date, + "status" => $request->status, + "type" => $request->type, + "group" => $request->group, + "region" => $request->region, + "user_id" => auth()->user()->id, + ]); + + if ($request->hasFile('document')) { + $file = $request->file('document'); + $file->store('documents', 'public'); + $doc->document = $file->hashName(); + } + + $doc->save(); + + return redirect()->route("docs.index") + ->with('message', ['type' => 'success', 'message' => 'The data has beed updated']); } public function show(Document $doc) { return inertia('Document/Detail', [ - 'doc' => $doc->load(['type', 'category']), + 'doc' => $doc->load(['variety', 'category']), 'doc_url' => asset('documents/'.$doc->document), ]); } diff --git a/app/Models/Document.php b/app/Models/Document.php index 16df39f..956dc4d 100644 --- a/app/Models/Document.php +++ b/app/Models/Document.php @@ -44,7 +44,7 @@ class Document extends Model return $this->belongsTo(User::class, 'user_id'); } - public function type() + public function variety() { return $this->belongsTo(Type::class, 'type_id'); } diff --git a/resources/js/Pages/Document/Detail.jsx b/resources/js/Pages/Document/Detail.jsx index d6d247b..ac4e81d 100644 --- a/resources/js/Pages/Document/Detail.jsx +++ b/resources/js/Pages/Document/Detail.jsx @@ -6,19 +6,12 @@ import AuthenticatedLayout from '@/Layouts/AuthenticatedLayout' import InputLabel from '@/Components/InputLabel' import TextInput from '@/Components/TextInput' import { formatDate } from '@/utils' -import ModalShare from './ModalShare' import { useModalState } from '@/Hooks' export default function FormDocument(props) { const { doc, doc_url }= props - const shareModal = useModalState(false) - const handleShare = (doc) => { - shareModal.setData(doc) - shareModal.toggle() - } - return (

Dokumen

-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
-
- - -
- -
- - -
-
- - -
-
- - -
-
- - -
-
- - Download -
-
- - -
-
-
- +
+ +
-
- {doc.reminders.map((reminder, index) => ( -
-
- {reminder.date} -
-
- ))} +
+ +
-
-
-
- - Edit - -
handleShare(doc)}> - Share +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ + + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + Download +
+
+
+ + +
- - Kembali - +
+
+ + Edit + +
+ + Kembali + +
-
- ) diff --git a/resources/js/Pages/Document/Form.jsx b/resources/js/Pages/Document/Form.jsx index 1beb4d4..bd8048f 100644 --- a/resources/js/Pages/Document/Form.jsx +++ b/resources/js/Pages/Document/Form.jsx @@ -87,18 +87,31 @@ export default function FormDocument(props) {

Dokumen

-
- +
+ - + +
+
+ + +
@@ -130,6 +143,19 @@ export default function FormDocument(props) {
+
+ + + +
-
- - - -
-
- - - -
+
Simpan diff --git a/resources/js/Pages/Document/Index.jsx b/resources/js/Pages/Document/Index.jsx index 737aa24..f6ab3e5 100644 --- a/resources/js/Pages/Document/Index.jsx +++ b/resources/js/Pages/Document/Index.jsx @@ -115,7 +115,7 @@ export default function Document(props) { {docs?.map((doc) => ( - {doc.type.name} + {doc.variety.name} {doc.category.name} {doc.no_doc} {doc.name}