Merge pull request #3836 from turbo124/v2

Documents loaded behind route
This commit is contained in:
David Bomba 2020-06-24 22:13:05 +10:00 committed by GitHub
commit 15dc8fb865
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 272 additions and 8 deletions

View File

@ -0,0 +1,54 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com)
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2020. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://opensource.org/licenses/AAL
*/
namespace App\Events\Document;
use App\Models\Document;
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
/**
* Class DocumentWasArchived.
*/
class DocumentWasArchived
{
use Dispatchable, InteractsWithSockets, SerializesModels;
/**
* @var Document
*/
public $document;
/**
* Create a new event instance.
*
* @param Document $document
*/
public function __construct(Document $document)
{
$this->document = $document;
}
/**
* Get the channels the event should broadcast on.
*
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
{
return new PrivateChannel('channel-name');
}
}

View File

@ -0,0 +1,38 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com)
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2020. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://opensource.org/licenses/AAL
*/
namespace App\Events\Document;
use App\Models\Document;
use Illuminate\Queue\SerializesModels;
/**
* Class DocumentWasCreated.
*/
class DocumentWasCreated
{
use SerializesModels;
/**
* @var Document
*/
public $document;
/**
* Create a new event instance.
*
* @param Document $document
*/
public function __construct(Document $document)
{
$this->document = $document;
}
}

View File

@ -0,0 +1,38 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com)
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2020. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://opensource.org/licenses/AAL
*/
namespace App\Events\Document;
use App\Models\Document;
use Illuminate\Queue\SerializesModels;
/**
* Class DocumentWasDeleted.
*/
class DocumentWasDeleted
{
use SerializesModels;
/**
* @var Document
*/
public $document;
/**
* Create a new event instance.
*
* @param Document $document
*/
public function __construct(Document $document)
{
$this->document = $document;
}
}

View File

@ -0,0 +1,38 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com)
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2020. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://opensource.org/licenses/AAL
*/
namespace App\Events\Document;
use App\Models\Document;
use Illuminate\Queue\SerializesModels;
/**
* Class DocumentWasRestored.
*/
class DocumentWasRestored
{
use SerializesModels;
/**
* @var Document
*/
public $document;
/**
* Create a new event instance.
*
* @param Document $document
*/
public function __construct(Document $document)
{
$this->document = $document;
}
}

View File

@ -0,0 +1,38 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com)
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2020. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://opensource.org/licenses/AAL
*/
namespace App\Events\Document;
use App\Models\Document;
use Illuminate\Queue\SerializesModels;
/**
* Class DocumentWasUpdated.
*/
class DocumentWasUpdated
{
use SerializesModels;
/**
* @var Document
*/
public $document;
/**
* Create a new event instance.
*
* @param Document $document
*/
public function __construct(Document $document)
{
$this->document = $document;
}
}

View File

@ -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);
}
/**

View File

@ -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()

View File

@ -111,6 +111,17 @@ class EventServiceProvider extends ServiceProvider
],
ClientWasRestored::class =>[
],
// Documents
DocumentWasCreated::class =>[
],
DocumentWasArchived::class =>[
],
DocumentWasUpdated::class =>[
],
DocumentWasDeleted::class =>[
],
DocumentWasRestored::class =>[
],
CreditWasMarkedSent::class => [
],
//Designs

View File

@ -0,0 +1,50 @@
<?php
/**
* Invoice Ninja (https://invoiceninja.com)
*
* @link https://github.com/invoiceninja/invoiceninja source repository
*
* @copyright Copyright (c) 2020. Invoice Ninja LLC (https://invoiceninja.com)
*
* @license https://opensource.org/licenses/AAL
*/
namespace App\Repositories;
use App\Models\Document;
/**
* Class for document repository.
*/
class DocumentRepository extends BaseRepository
{
/**
* Gets the class name.
*
* @return string The class name.
*/
public function getClassName()
{
return Document::class;
}
public function delete($document)
{
$document->deleteFile();
$document->forceDelete();
}
public function restore($document)
{
if (! $document->trashed()) {
return;
}
$document->restore();
if (class_exists($className)) {
event(new $className($document));
}
}
}

View File

@ -5,7 +5,6 @@
<title>Invoice Ninja</title>
<meta name="report_errors" content="{{ $report_errors }}">
<meta name="google-signin-client_id" content="{{ config('services.google.client_id') }}">
<meta name="minimum_client_version" content="{{ config('ninja.minimum_client_version') }}">
<link rel="manifest" href="manifest.json">
</head>
<body style="background-color:#888888;">

View File

@ -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