From 74450727b1d3c940ef50536b25d478399b882e77 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Wed, 24 Jun 2020 21:49:06 +1000 Subject: [PATCH 1/2] Document events --- app/Events/Document/DocumentWasArchived.php | 54 +++++++++++++++++++++ app/Events/Document/DocumentWasCreated.php | 38 +++++++++++++++ app/Events/Document/DocumentWasDeleted.php | 38 +++++++++++++++ app/Events/Document/DocumentWasRestored.php | 38 +++++++++++++++ app/Events/Document/DocumentWasUpdated.php | 38 +++++++++++++++ app/Providers/EventServiceProvider.php | 11 +++++ app/Repositories/DocumentRepository.php | 42 ++++++++++++++++ resources/views/index/index.blade.php | 1 - 8 files changed, 259 insertions(+), 1 deletion(-) create mode 100644 app/Events/Document/DocumentWasArchived.php create mode 100644 app/Events/Document/DocumentWasCreated.php create mode 100644 app/Events/Document/DocumentWasDeleted.php create mode 100644 app/Events/Document/DocumentWasRestored.php create mode 100644 app/Events/Document/DocumentWasUpdated.php create mode 100644 app/Repositories/DocumentRepository.php diff --git a/app/Events/Document/DocumentWasArchived.php b/app/Events/Document/DocumentWasArchived.php new file mode 100644 index 000000000000..e613e6a40175 --- /dev/null +++ b/app/Events/Document/DocumentWasArchived.php @@ -0,0 +1,54 @@ +document = $document; + } + + /** + * Get the channels the event should broadcast on. + * + * @return \Illuminate\Broadcasting\Channel|array + */ + public function broadcastOn() + { + return new PrivateChannel('channel-name'); + } +} diff --git a/app/Events/Document/DocumentWasCreated.php b/app/Events/Document/DocumentWasCreated.php new file mode 100644 index 000000000000..442f7a7b49eb --- /dev/null +++ b/app/Events/Document/DocumentWasCreated.php @@ -0,0 +1,38 @@ +document = $document; + } +} diff --git a/app/Events/Document/DocumentWasDeleted.php b/app/Events/Document/DocumentWasDeleted.php new file mode 100644 index 000000000000..92d0856e9943 --- /dev/null +++ b/app/Events/Document/DocumentWasDeleted.php @@ -0,0 +1,38 @@ +document = $document; + } +} diff --git a/app/Events/Document/DocumentWasRestored.php b/app/Events/Document/DocumentWasRestored.php new file mode 100644 index 000000000000..4e6cd6aebc11 --- /dev/null +++ b/app/Events/Document/DocumentWasRestored.php @@ -0,0 +1,38 @@ +document = $document; + } +} diff --git a/app/Events/Document/DocumentWasUpdated.php b/app/Events/Document/DocumentWasUpdated.php new file mode 100644 index 000000000000..12c10d55feb8 --- /dev/null +++ b/app/Events/Document/DocumentWasUpdated.php @@ -0,0 +1,38 @@ +document = $document; + } +} diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index f2b657e4ea42..df8fc4cad950 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -111,6 +111,17 @@ class EventServiceProvider extends ServiceProvider ], ClientWasRestored::class =>[ ], + // Documents + DocumentWasCreated::class =>[ + ], + DocumentWasArchived::class =>[ + ], + DocumentWasUpdated::class =>[ + ], + DocumentWasDeleted::class =>[ + ], + DocumentWasRestored::class =>[ + ], CreditWasMarkedSent::class => [ ], //Designs diff --git a/app/Repositories/DocumentRepository.php b/app/Repositories/DocumentRepository.php new file mode 100644 index 000000000000..33da05b4a91a --- /dev/null +++ b/app/Repositories/DocumentRepository.php @@ -0,0 +1,42 @@ +deleteFile(); + $document->forceDelete(); + } + + public function restore() + { + + } +} diff --git a/resources/views/index/index.blade.php b/resources/views/index/index.blade.php index 47d528baefbb..1c2f0cfbdf51 100644 --- a/resources/views/index/index.blade.php +++ b/resources/views/index/index.blade.php @@ -5,7 +5,6 @@ Invoice Ninja - From 06413da0907424b067dc75215844a54fc85142f8 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Wed, 24 Jun 2020 22:12:43 +1000 Subject: [PATCH 2/2] Document behind route --- app/Http/Controllers/DocumentController.php | 6 +++--- app/Models/Document.php | 4 +--- app/Repositories/DocumentRepository.php | 10 +++++++++- routes/api.php | 2 +- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/app/Http/Controllers/DocumentController.php b/app/Http/Controllers/DocumentController.php index 317b5c436c1c..a1c2082f590c 100644 --- a/app/Http/Controllers/DocumentController.php +++ b/app/Http/Controllers/DocumentController.php @@ -78,7 +78,7 @@ class DocumentController extends BaseController return $this->itemResponse($document); } - public function download(DownloadDocumentRequest $request, Document $document) + public function download(ShowDocumentRequest $request, Document $document) { return response()->streamDownload(function () use($document) { echo file_get_contents($document->generateUrl()); @@ -93,7 +93,7 @@ class DocumentController extends BaseController */ public function edit(EditDocumentRegquest $request, Document $document) { - // + return $this->itemResponse($document); } /** @@ -105,7 +105,7 @@ class DocumentController extends BaseController */ public function update(UpdateDocumentRequest $request, Document $document) { - // + return $this->itemResponse($document); } /** diff --git a/app/Models/Document.php b/app/Models/Document.php index 63c736dfdfce..ed62e2bc7584 100644 --- a/app/Models/Document.php +++ b/app/Models/Document.php @@ -115,9 +115,7 @@ class Document extends BaseModel public function generateRoute($absolute = false) { - return route('api.documents.show', ['document' => $this->hashed_id]); - - //return route('document.show', ['document' => $this->hashed_id]); + return route('api.documents.show', ['document' => $this->hashed_id]) . '/download'; } public function deleteFile() diff --git a/app/Repositories/DocumentRepository.php b/app/Repositories/DocumentRepository.php index 33da05b4a91a..3620985bb954 100644 --- a/app/Repositories/DocumentRepository.php +++ b/app/Repositories/DocumentRepository.php @@ -35,8 +35,16 @@ class DocumentRepository extends BaseRepository $document->forceDelete(); } - public function restore() + public function restore($document) { + if (! $document->trashed()) { + return; + } + $document->restore(); + + if (class_exists($className)) { + event(new $className($document)); + } } } diff --git a/routes/api.php b/routes/api.php index 48dff4be8311..e7713fdc41ae 100644 --- a/routes/api.php +++ b/routes/api.php @@ -70,7 +70,7 @@ Route::group(['middleware' => ['api_db', 'token_auth', 'locale'], 'prefix' => 'a Route::post('vendors/bulk', 'VendorController@bulk')->name('vendors.bulk'); Route::resource('documents', 'DocumentController');// name = (documents. index / create / show / update / destroy / edit - + Route::get('documents/{document}/download', 'DocumentController@download')->name('documents.download'); Route::post('documents/bulk', 'DocumentController@bulk')->name('documents.bulk'); Route::resource('client_statement', 'ClientStatementController@statement');// name = (client_statement. index / create / show / update / destroy / edit