From edb6e17951d2b9e222ed3d5a4e15207b6a9b871e Mon Sep 17 00:00:00 2001 From: pxambre Date: Fri, 1 Apr 2022 16:25:32 +0100 Subject: [PATCH] delete feature --- resources/js/components/IndexField.vue | 16 +++++++++- resources/js/components/Notes/Note.vue | 40 +++++++++++++++++++++++-- resources/js/components/Notes/Notes.vue | 10 +++++-- routes/api.php | 6 ++++ src/Http/Controllers/NoteController.php | 24 ++++++++------- 5 files changed, 80 insertions(+), 16 deletions(-) diff --git a/resources/js/components/IndexField.vue b/resources/js/components/IndexField.vue index f265544..c588abf 100644 --- a/resources/js/components/IndexField.vue +++ b/resources/js/components/IndexField.vue @@ -13,7 +13,10 @@
- +
note.id === data.notableID)].notes : this.notes + + this.$delete(noteArray, noteArray.findIndex(note => note.id === data.dataID)) + + if(!data.isReply){ + this.notesCount = this.notesCount - 1; + } } } }; diff --git a/resources/js/components/Notes/Note.vue b/resources/js/components/Notes/Note.vue index 37b1f61..4736b9b 100644 --- a/resources/js/components/Notes/Note.vue +++ b/resources/js/components/Notes/Note.vue @@ -8,9 +8,20 @@ />
+

{{ data.author ? data.author.name : '-' }}

- + + + + Edit + + + Delete

+

{{ data.note }}

{{ createdAt }}

@@ -27,11 +39,10 @@
- +
- @@ -66,6 +77,29 @@ export default { reply_to_id: this.data.id, reply_to_name: this.data.author ? this.data.author.name : '-' }); + }, + onDelete(data, reply) { + + if(!reply){ + Nova.request().delete('/nova-vendor/notes-field/' + this.data.id).then(response => { + this.$toasted.show('Note Removed', {type: 'success'}) + + this.$emit('delete-note', { + isReply: this.isReply, + notableID: this.data.notable_id, + dataID: this.data.id + }) + }) + } else { + this.$emit('delete-note', data) + } + }, + onEdit() { + //get NOTE ID + //check personal status + //check html status + //display note + //update changes } }, computed: { diff --git a/resources/js/components/Notes/Notes.vue b/resources/js/components/Notes/Notes.vue index 6ccaaf7..fda558f 100644 --- a/resources/js/components/Notes/Notes.vue +++ b/resources/js/components/Notes/Notes.vue @@ -4,7 +4,10 @@

No notes found...

@@ -21,11 +24,14 @@ export default { notes: { type: Array, required: true - }, + } }, methods: { handleReplyTo(data) { this.$emit('reply-to', data) + }, + deleteNote(data){ + this.$emit('delete-note', data) } } } diff --git a/routes/api.php b/routes/api.php index 327cd99..a9b7bab 100644 --- a/routes/api.php +++ b/routes/api.php @@ -16,3 +16,9 @@ Route::get('', [NoteController::class, 'index']); Route::post('new', [NoteController::class, 'store']); + +//DELETE NOTE (DELETE -> DESTROY) +Route::delete('{note}', [NoteController::class, 'destroy']); + +//EDIT NOTE (PATCH?) +Route::patch('updateNote', [NoteController::class, 'update']); diff --git a/src/Http/Controllers/NoteController.php b/src/Http/Controllers/NoteController.php index abffd9c..a7d1c5d 100644 --- a/src/Http/Controllers/NoteController.php +++ b/src/Http/Controllers/NoteController.php @@ -10,11 +10,13 @@ class NoteController extends Controller { + //VIEW ALL NOTES public function index(Request $request): JsonResponse { return response()->json(Note::whereNotableTypeAndId($request->input('notable_type'), $request->input('notable_id'))->with('author', 'notes')->get()); } + //SAVE A NOTE public function store(NoteRequest $request): JsonResponse { if($request->input('reply_to_id')) { @@ -32,14 +34,16 @@ public function store(NoteRequest $request): JsonResponse return response()->json(Note::create($request->validated())->load('author', 'notes')); } - // public function store(NoteRequest $request): JsonResponse - // { - // if($request->validated()['reply_to_id'] != null){ - // $note = Note::find($request->input('reply_to_id')); - // $noteData = collect($request->validated())->except('notable_type', 'notable_id', 'reply_to_id')->toArray(); - // $newNote = $note->notes()->create($noteData); - // return response()->json($newNote->load('author')); - // } - // return response()->json(Note::create($request->validated())->load('author')); - // } + //DELETE NOTE + public function destroy(Request $request, Note $note): JsonResponse + { + $note->delete(); + return response()->json(['message'=>'success']); + } + + //UPDATE NOTE + public function update(NoteRequest $request): JsonResponse + { + return response(); + } }