Resource refactoring

This commit is contained in:
Peter Papp
2021-04-29 12:53:17 +02:00
parent 1486ce63fa
commit 31dd782bae
17 changed files with 1601 additions and 549 deletions

View File

@@ -3,9 +3,10 @@
namespace App\Http\Controllers\Oasis;
use App\Http\Requests\Oasis\StoreClientRequest;
use App\Http\Resources\Oasis\OasisClientCollection;
use App\Http\Resources\Oasis\OasisViewClientCollection;
use App\Http\Controllers\Controller;
use App\Http\Resources\Oasis\OasisClientResource;
use App\Http\Resources\Oasis\OasisViewClientResource;
use App\Http\Resources\Oasis\OasisViewInvoiceCollection;
use App\Models\Oasis\Client;
use Auth;
use Illuminate\Contracts\Foundation\Application;
@@ -21,7 +22,7 @@ class ClientController extends Controller
public function index()
{
return response(
new OasisClientCollection(Auth::user()->clients), 200
new OasisViewClientCollection(Auth::user()->clients), 200
);
}
@@ -48,7 +49,7 @@ class ClientController extends Controller
]);
return response(
new OasisClientResource($client), 201
new OasisViewClientResource($client), 201
);
}
@@ -58,7 +59,7 @@ class ClientController extends Controller
*/
public function show(Client $client)
{
return response(new OasisClientResource($client), 200);
return response(new OasisViewClientResource($client), 200);
}
/**
@@ -97,6 +98,15 @@ class ClientController extends Controller
return response('Done', 204);
}
/**
* @param Client $client
* @return Application|ResponseFactory|Response
*/
public function show_invoices(Client $client)
{
return response(new OasisViewInvoiceCollection($client->invoices), 200);
}
/**
* @return mixed
*/
@@ -109,7 +119,7 @@ class ClientController extends Controller
->get();
return response(
new OasisClientCollection($results), 200
new OasisViewClientCollection($results), 200
);
}
}

View File

@@ -4,8 +4,8 @@ namespace App\Http\Controllers\Oasis;
use App\Http\Controllers\Controller;
use App\Http\Requests\Oasis\StoreInvoiceRequest;
use App\Http\Resources\Oasis\OasisInvoiceCollection;
use App\Http\Resources\Oasis\OasisInvoiceResource;
use App\Http\Resources\Oasis\OasisViewInvoiceCollection;
use App\Http\Resources\Oasis\OasisViewInvoiceResource;
use App\Models\Oasis\Client;
use App\Models\Oasis\Invoice;
use App\Notifications\Oasis\InvoiceDeliveryNotification;
@@ -26,7 +26,7 @@ class InvoiceController extends Controller
public function get_all_regular_invoices()
{
return response(
new OasisInvoiceCollection(Auth::user()->regularInvoices), 200
new OasisViewInvoiceCollection(Auth::user()->regularInvoices), 200
);
}
@@ -36,7 +36,7 @@ class InvoiceController extends Controller
public function get_all_advance_invoices()
{
return response(
new OasisInvoiceCollection(Auth::user()->advanceInvoices), 200
new OasisViewInvoiceCollection(Auth::user()->advanceInvoices), 200
);
}
@@ -66,7 +66,7 @@ class InvoiceController extends Controller
->get();
return response(
new OasisInvoiceCollection($results), 200
new OasisViewInvoiceCollection($results), 200
);
}
@@ -123,7 +123,7 @@ class InvoiceController extends Controller
}
return response(
new OasisInvoiceResource($invoice), 201
new OasisViewInvoiceResource($invoice), 201
);
}

View File

@@ -4,9 +4,9 @@ namespace App\Http\Resources\Oasis;
use Illuminate\Http\Resources\Json\ResourceCollection;
class OasisClientCollection extends ResourceCollection
class OasisViewClientCollection extends ResourceCollection
{
public $collects = OasisClientResource::class;
public $collects = OasisViewClientResource::class;
/**
* Transform the resource collection into an array.

View File

@@ -4,7 +4,7 @@ namespace App\Http\Resources\Oasis;
use Illuminate\Http\Resources\Json\JsonResource;
class OasisClientResource extends JsonResource
class OasisViewClientResource extends JsonResource
{
/**
* Transform the resource into an array.

View File

@@ -4,9 +4,9 @@ namespace App\Http\Resources\Oasis;
use Illuminate\Http\Resources\Json\ResourceCollection;
class OasisInvoiceCollection extends ResourceCollection
class OasisViewInvoiceCollection extends ResourceCollection
{
public $collects = OasisInvoiceResource::class;
public $collects = OasisViewInvoiceResource::class;
/**
* Transform the resource collection into an array.

View File

@@ -6,7 +6,7 @@ use Illuminate\Http\Resources\Json\JsonResource;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
class OasisInvoiceResource extends JsonResource
class OasisViewInvoiceResource extends JsonResource
{
/**
* Transform the resource into an array.
@@ -18,6 +18,7 @@ class OasisInvoiceResource extends JsonResource
{
return [
'id' => $this->id,
'client_id' => $this->client_id,
'name' => $this->client['name'] . ' ' . format_to_currency($this->total_net, $this->currency),
'invoiceNumber' => $this->invoice_number,
'total' => format_to_currency($this->total_net, $this->currency),

View File

@@ -50,7 +50,7 @@ class Client extends Model
public function invoices()
{
return $this->hasMany(Invoice::class, 'client_id', 'id');
return $this->hasMany(Invoice::class);
}
/**

1847
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -43,8 +43,8 @@
"/chunks/files~chunks/oasis/invoices/list~chunks/shared-files~chunks/shared/file-browser.js": "/chunks/files~chunks/oasis/invoices/list~chunks/shared-files~chunks/shared/file-browser.js?id=a35f0d58f42da919a182",
"/chunks/files~chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform~chunks/shared~chunks/s~707bd579.js": "/chunks/files~chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform~chunks/shared~chunks/s~707bd579.js?id=3c49df5afaf5bb1f42f3",
"/chunks/files~chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform~chunks/shared~chunks/s~87b39a8d.js": "/chunks/files~chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform~chunks/shared~chunks/s~87b39a8d.js?id=c226fe89b510c599615f",
"/chunks/files~chunks/shared-files~chunks/shared/file-browser.js": "/chunks/files~chunks/shared-files~chunks/shared/file-browser.js?id=14b259c05259260985ec",
"/chunks/files~chunks/shared-files~chunks/shared/file-browser~chunks/shared/single-file.js": "/chunks/files~chunks/shared-files~chunks/shared/file-browser~chunks/shared/single-file.js?id=06665bebae33953fed87",
"/chunks/files~chunks/shared-files~chunks/shared/file-browser.js": "/chunks/files~chunks/shared-files~chunks/shared/file-browser.js?id=b16063b4c7277725485e",
"/chunks/files~chunks/shared-files~chunks/shared/file-browser~chunks/shared/single-file.js": "/chunks/files~chunks/shared-files~chunks/shared/file-browser~chunks/shared/single-file.js?id=01b0782ff7a9c0bd5f5f",
"/chunks/files~chunks/shared/file-browser.js": "/chunks/files~chunks/shared/file-browser.js?id=44899a3c3880630dbcd9",
"/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=877a9289b77ac3885042",
"/chunks/homepage.js": "/chunks/homepage.js?id=1a86b7f0efa95ad65c4a",
@@ -52,8 +52,8 @@
"/chunks/invoices.js": "/chunks/invoices.js?id=1deb187f6d3eb1e81ad0",
"/chunks/not-found-shared.js": "/chunks/not-found-shared.js?id=7fc7f9b6f10bdfac770e",
"/chunks/oasis/homepage.js": "/chunks/oasis/homepage.js?id=a1885dd8814f9eb63a1c",
"/chunks/oasis/invoices.js": "/chunks/oasis/invoices.js?id=996b95c4cd43f0a6bcc1",
"/chunks/oasis/invoices/list.js": "/chunks/oasis/invoices/list.js?id=b72362eac5928244f6fd",
"/chunks/oasis/invoices.js": "/chunks/oasis/invoices.js?id=959a8324daa7af8a644e",
"/chunks/oasis/invoices/list.js": "/chunks/oasis/invoices/list.js?id=290b41f70e5205491b2d",
"/chunks/oasis/invoices~chunks/oasis/invoices/list.js": "/chunks/oasis/invoices~chunks/oasis/invoices/list.js?id=045d3dd7ce573cb7ed11",
"/chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform~chunks/shared.js": "/chunks/oasis/invoices~chunks/oasis/invoices/list~chunks/platform~chunks/shared.js?id=c69c0503d09d1588f14a",
"/chunks/oasis/platba.js": "/chunks/oasis/platba.js?id=53d9f2a31b1dd5dad85e",
@@ -351,7 +351,7 @@
"/js/main.2a5b52cd5a8d1d56d0d8.hot-update.js": "/js/main.2a5b52cd5a8d1d56d0d8.hot-update.js",
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~dea0c278.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~dea0c278.js?id=a81252d0e451803fdcef",
"/chunks/app-language~chunks/app-settings~chunks/dashboard~chunks/dashboard-oasis~chunks/invoices~chun~e9fdda75.js": "/chunks/app-language~chunks/app-settings~chunks/dashboard~chunks/dashboard-oasis~chunks/invoices~chun~e9fdda75.js?id=62ce022b3544cd69a5bd",
"/chunks/oasis/invoices/client.js": "/chunks/oasis/invoices/client.js?id=6cfca92e372179ebf697",
"/chunks/oasis/invoices/client.js": "/chunks/oasis/invoices/client.js?id=09e5ec06d67a01b449cb",
"/chunks/oasis/invoices/client.c97bd30d932ea2b47e55.hot-update.js": "/chunks/oasis/invoices/client.c97bd30d932ea2b47e55.hot-update.js",
"/chunks/oasis/invoices/client.5ee30b20f1f55c124785.hot-update.js": "/chunks/oasis/invoices/client.5ee30b20f1f55c124785.hot-update.js",
"/chunks/oasis/invoices/client.773c1b1645b07a8396a3.hot-update.js": "/chunks/oasis/invoices/client.773c1b1645b07a8396a3.hot-update.js",
@@ -417,5 +417,67 @@
"/chunks/oasis/invoices/client-detail.c350c71f1522f9270a28.hot-update.js": "/chunks/oasis/invoices/client-detail.c350c71f1522f9270a28.hot-update.js",
"/chunks/oasis/invoices/client-detail.c2e95634b2714e59ac83.hot-update.js": "/chunks/oasis/invoices/client-detail.c2e95634b2714e59ac83.hot-update.js",
"/chunks/oasis/invoices/client-detail.3590afdbba0a7343190f.hot-update.js": "/chunks/oasis/invoices/client-detail.3590afdbba0a7343190f.hot-update.js",
"/chunks/oasis/invoices/list.76adce30ace314ca7046.hot-update.js": "/chunks/oasis/invoices/list.76adce30ace314ca7046.hot-update.js"
"/chunks/oasis/invoices/list.76adce30ace314ca7046.hot-update.js": "/chunks/oasis/invoices/list.76adce30ace314ca7046.hot-update.js",
"/js/main.949d57b42db2e54d9ef8.hot-update.js": "/js/main.949d57b42db2e54d9ef8.hot-update.js",
"/chunks/files~chunks/shared-files~chunks/shared/file-browser.949d57b42db2e54d9ef8.hot-update.js": "/chunks/files~chunks/shared-files~chunks/shared/file-browser.949d57b42db2e54d9ef8.hot-update.js",
"/chunks/files~chunks/shared-files~chunks/shared/file-browser~chunks/shared/single-file.949d57b42db2e54d9ef8.hot-update.js": "/chunks/files~chunks/shared-files~chunks/shared/file-browser~chunks/shared/single-file.949d57b42db2e54d9ef8.hot-update.js",
"/js/main.0acefcdbb3ae22c7a075.hot-update.js": "/js/main.0acefcdbb3ae22c7a075.hot-update.js",
"/chunks/files~chunks/shared-files~chunks/shared/file-browser~chunks/shared/single-file.0acefcdbb3ae22c7a075.hot-update.js": "/chunks/files~chunks/shared-files~chunks/shared/file-browser~chunks/shared/single-file.0acefcdbb3ae22c7a075.hot-update.js",
"/chunks/oasis/invoices~chunks/platform~chunks/shared.0acefcdbb3ae22c7a075.hot-update.js": "/chunks/oasis/invoices~chunks/platform~chunks/shared.0acefcdbb3ae22c7a075.hot-update.js",
"/vendors~chunks/oasis/invoices~chunks/platform~chunks/shared.0acefcdbb3ae22c7a075.hot-update.js": "/vendors~chunks/oasis/invoices~chunks/platform~chunks/shared.0acefcdbb3ae22c7a075.hot-update.js",
"/chunks/files~chunks/shared-files~chunks/shared/file-browser.adefc99a839b60a22adf.hot-update.js": "/chunks/files~chunks/shared-files~chunks/shared/file-browser.adefc99a839b60a22adf.hot-update.js",
"/chunks/oasis/invoices/list.616072dbe8ace74114f6.hot-update.js": "/chunks/oasis/invoices/list.616072dbe8ace74114f6.hot-update.js",
"/chunks/oasis/invoices.5ad7206eb392bb13647d.hot-update.js": "/chunks/oasis/invoices.5ad7206eb392bb13647d.hot-update.js",
"/chunks/oasis/invoices/list.698d548b849e1b05b79a.hot-update.js": "/chunks/oasis/invoices/list.698d548b849e1b05b79a.hot-update.js",
"/chunks/oasis/invoices/list.9a34c553ecf98d2acf32.hot-update.js": "/chunks/oasis/invoices/list.9a34c553ecf98d2acf32.hot-update.js",
"/chunks/oasis/invoices/list.ebe2d8f30827200af75e.hot-update.js": "/chunks/oasis/invoices/list.ebe2d8f30827200af75e.hot-update.js",
"/js/main.b22157a399b189834e9b.hot-update.js": "/js/main.b22157a399b189834e9b.hot-update.js",
"/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~c245a133.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~c245a133.js?id=02b690cfccbe93e8014d",
"/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~bd242892.js": "/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~bd242892.js?id=b4113f174772fb0c55ce",
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~2e1d0044.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~2e1d0044.js?id=7c1507c48bdb1e99af77",
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~477d1d8f.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~477d1d8f.js?id=59621032c5dcceae7e47",
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~a98b1a0e.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~a98b1a0e.js?id=6bf0e1b64f73e663a621",
"/chunks/oasis/invoices/client-invoices.js": "/chunks/oasis/invoices/client-invoices.js?id=67b0305dbf50ae099003",
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~3fc458f1.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~3fc458f1.js?id=fdbb65c6c6f217a4d5b8",
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~4ee7ad30.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~4ee7ad30.js?id=2e16bdf5ea299297e2ff",
"/js/main.7106615f8bf3723b0c18.hot-update.js": "/js/main.7106615f8bf3723b0c18.hot-update.js",
"/chunks/oasis/invoices/client.10eb23d236e474739551.hot-update.js": "/chunks/oasis/invoices/client.10eb23d236e474739551.hot-update.js",
"/js/main.4ad66715fdccfa95f533.hot-update.js": "/js/main.4ad66715fdccfa95f533.hot-update.js",
"/chunks/admin~chunks/files~chunks/oasis/invoices~chunks/oasis/invoices/client-invoices~chunks/oasis/i~c867553e.js": "/chunks/admin~chunks/files~chunks/oasis/invoices~chunks/oasis/invoices/client-invoices~chunks/oasis/i~c867553e.js?id=40b170a96d02c3294462",
"/chunks/app-language~chunks/dashboard~chunks/dashboard-oasis~chunks/files~chunks/invoices~chunks/oasi~539547d0.js": "/chunks/app-language~chunks/dashboard~chunks/dashboard-oasis~chunks/files~chunks/invoices~chunks/oasi~539547d0.js?id=6c2f3e360ad156780374",
"/chunks/files~chunks/oasis/invoices/client-invoices~chunks/oasis/invoices/list~chunks/oasis/platba~ch~4e5ec961.js": "/chunks/files~chunks/oasis/invoices/client-invoices~chunks/oasis/invoices/list~chunks/oasis/platba~ch~4e5ec961.js?id=1c2667ef00c54a8c481b",
"/chunks/files~chunks/oasis/invoices/client-invoices~chunks/oasis/invoices/list~chunks/platform~chunks~bc314893.js": "/chunks/files~chunks/oasis/invoices/client-invoices~chunks/oasis/invoices/list~chunks/platform~chunks~bc314893.js?id=898141b624d13e675c0b",
"/chunks/files~chunks/oasis/invoices/client-invoices~chunks/oasis/invoices/list~chunks/shared-files~ch~6bbd80ba.js": "/chunks/files~chunks/oasis/invoices/client-invoices~chunks/oasis/invoices/list~chunks/shared-files~ch~6bbd80ba.js?id=c9cc99392d62a81de376",
"/chunks/files~chunks/oasis/invoices~chunks/oasis/invoices/client-invoices~chunks/oasis/invoices/list~~02eb9e16.js": "/chunks/files~chunks/oasis/invoices~chunks/oasis/invoices/client-invoices~chunks/oasis/invoices/list~~02eb9e16.js?id=6c6df9203e494228df82",
"/chunks/oasis/invoices/client-invoices~chunks/oasis/invoices/list.js": "/chunks/oasis/invoices/client-invoices~chunks/oasis/invoices/list.js?id=ba52c10e1adf03f05a1f",
"/chunks/oasis/invoices/list.4ad66715fdccfa95f533.hot-update.js": "/chunks/oasis/invoices/list.4ad66715fdccfa95f533.hot-update.js",
"/chunks/oasis/invoices/client-invoices.eca4bf7c2665f3a86e8b.hot-update.js": "/chunks/oasis/invoices/client-invoices.eca4bf7c2665f3a86e8b.hot-update.js",
"/chunks/oasis/invoices/client-invoices.79a0651d4a1216bf04f2.hot-update.js": "/chunks/oasis/invoices/client-invoices.79a0651d4a1216bf04f2.hot-update.js",
"/chunks/oasis/invoices/client-invoices.dd5d9e96cc93ec546155.hot-update.js": "/chunks/oasis/invoices/client-invoices.dd5d9e96cc93ec546155.hot-update.js",
"/chunks/oasis/invoices/client-invoices.df2a2d1f0c814db34976.hot-update.js": "/chunks/oasis/invoices/client-invoices.df2a2d1f0c814db34976.hot-update.js",
"/chunks/oasis/invoices/client-invoices.55531eb42c48014ab720.hot-update.js": "/chunks/oasis/invoices/client-invoices.55531eb42c48014ab720.hot-update.js",
"/chunks/oasis/invoices/client-invoices.00779bf008f6236fe0de.hot-update.js": "/chunks/oasis/invoices/client-invoices.00779bf008f6236fe0de.hot-update.js",
"/js/main.72ac2d8eb6753e857da8.hot-update.js": "/js/main.72ac2d8eb6753e857da8.hot-update.js",
"/chunks/files~chunks/oasis/invoices/client-invoices~chunks/oasis/invoices/list~chunks/platform~chunks~bc314893.72ac2d8eb6753e857da8.hot-update.js": "/chunks/files~chunks/oasis/invoices/client-invoices~chunks/oasis/invoices/list~chunks/platform~chunks~bc314893.72ac2d8eb6753e857da8.hot-update.js",
"/chunks/files~chunks/oasis/invoices/client-invoices~chunks/oasis/invoices/list~chunks/shared-files~ch~6bbd80ba.72ac2d8eb6753e857da8.hot-update.js": "/chunks/files~chunks/oasis/invoices/client-invoices~chunks/oasis/invoices/list~chunks/shared-files~ch~6bbd80ba.72ac2d8eb6753e857da8.hot-update.js",
"/chunks/files~chunks/shared-files~chunks/shared/file-browser.72ac2d8eb6753e857da8.hot-update.js": "/chunks/files~chunks/shared-files~chunks/shared/file-browser.72ac2d8eb6753e857da8.hot-update.js",
"/chunks/oasis/invoices/client-invoices.72ac2d8eb6753e857da8.hot-update.js": "/chunks/oasis/invoices/client-invoices.72ac2d8eb6753e857da8.hot-update.js",
"/chunks/oasis/invoices/client-invoices~chunks/oasis/invoices/list.72ac2d8eb6753e857da8.hot-update.js": "/chunks/oasis/invoices/client-invoices~chunks/oasis/invoices/list.72ac2d8eb6753e857da8.hot-update.js",
"/chunks/oasis/invoices/list.72ac2d8eb6753e857da8.hot-update.js": "/chunks/oasis/invoices/list.72ac2d8eb6753e857da8.hot-update.js",
"/chunks/shared.72ac2d8eb6753e857da8.hot-update.js": "/chunks/shared.72ac2d8eb6753e857da8.hot-update.js",
"/js/main.9b9acc6b3530c2a6ce80.hot-update.js": "/js/main.9b9acc6b3530c2a6ce80.hot-update.js",
"/chunks/files~chunks/oasis/invoices/list~chunks/shared-files~chunks/shared/file-browser.9b9acc6b3530c2a6ce80.hot-update.js": "/chunks/files~chunks/oasis/invoices/list~chunks/shared-files~chunks/shared/file-browser.9b9acc6b3530c2a6ce80.hot-update.js",
"/chunks/oasis/invoices/client-invoices.9b9acc6b3530c2a6ce80.hot-update.js": "/chunks/oasis/invoices/client-invoices.9b9acc6b3530c2a6ce80.hot-update.js",
"/chunks/platform~chunks/shared.9b9acc6b3530c2a6ce80.hot-update.js": "/chunks/platform~chunks/shared.9b9acc6b3530c2a6ce80.hot-update.js",
"/js/main.532abbf83c5da815682c.hot-update.js": "/js/main.532abbf83c5da815682c.hot-update.js",
"/chunks/dashboard~chunks/dashboard-oasis~chunks/invoices~chunks/oasis/invoices/client-invoices~chunks~4ba83fa1.js": "/chunks/dashboard~chunks/dashboard-oasis~chunks/invoices~chunks/oasis/invoices/client-invoices~chunks~4ba83fa1.js?id=2e029bf012cccfd18e6c",
"/chunks/oasis/invoices/client-invoices.532abbf83c5da815682c.hot-update.js": "/chunks/oasis/invoices/client-invoices.532abbf83c5da815682c.hot-update.js",
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~2e1d0044.efa0b15371ac92a0034b.hot-update.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~2e1d0044.efa0b15371ac92a0034b.hot-update.js",
"/chunks/oasis/invoices/client-invoices.8912057e1f7fbbe34e8d.hot-update.js": "/chunks/oasis/invoices/client-invoices.8912057e1f7fbbe34e8d.hot-update.js",
"/chunks/oasis/invoices/client-invoices.1831c58d108af8138f9d.hot-update.js": "/chunks/oasis/invoices/client-invoices.1831c58d108af8138f9d.hot-update.js",
"/chunks/oasis/invoices/client-invoices.1d87fe5c5a77d9f9f6df.hot-update.js": "/chunks/oasis/invoices/client-invoices.1d87fe5c5a77d9f9f6df.hot-update.js",
"/chunks/oasis/invoices/client-invoices.323f8d8e0a775c320522.hot-update.js": "/chunks/oasis/invoices/client-invoices.323f8d8e0a775c320522.hot-update.js",
"/chunks/oasis/invoices/client-invoices.4d6128bbc9738fa7a06a.hot-update.js": "/chunks/oasis/invoices/client-invoices.4d6128bbc9738fa7a06a.hot-update.js",
"/chunks/oasis/invoices/client-invoices.4d13629f9f2c3d4813ad.hot-update.js": "/chunks/oasis/invoices/client-invoices.4d13629f9f2c3d4813ad.hot-update.js",
"/chunks/oasis/invoices/client-invoices.ad5b0ca68d5f8fa58917.hot-update.js": "/chunks/oasis/invoices/client-invoices.ad5b0ca68d5f8fa58917.hot-update.js"
}

View File

@@ -27,7 +27,7 @@
</div>
</router-link>
<router-link replace :to="{name: 'UserInvoices'}" class="menu-list-item link border-bottom-theme">
<router-link replace :to="{name: 'ClientInvoices'}" class="menu-list-item link border-bottom-theme">
<div class="icon text-theme">
<file-text-icon size="17" />
</div>

View File

@@ -0,0 +1,112 @@
<template>
<PageTab>
<PageTabGroup>
<DatatableWrapper
@init="isLoading = false"
:api="`/api/oasis/clients/${$route.params.id}/invoices`"
:paginator="false"
:columns="columns"
class="table"
>
<!--Table data content-->
<template slot-scope="{ row }">
<tr>
<td>
<a target="_blank" class="cell-item">
{{ row.invoiceNumber }}
</a>
</td>
<td>
<span class="cell-item">
{{ row.total }}
</span>
</td>
<td>
<span class="cell-item">
{{ row.created_at }}
</span>
</td>
<td>
<div class="action-icons">
<a target="_blank">
<external-link-icon size="15" class="icon" />
</a>
</div>
</td>
</tr>
</template>
<!--Empty page-->
<template v-slot:empty-page>
<InfoBox class="form-fixed-width">
<p>Client doesn't have any invoices yet.</p>
</InfoBox>
</template>
</DatatableWrapper>
</PageTabGroup>
</PageTab>
</template>
<script>
import DatatableWrapper from '@/components/Others/Tables/DatatableWrapper'
import EmptyPageContent from '@/components/Others/EmptyPageContent'
import PageTabGroup from '@/components/Others/Layout/PageTabGroup'
import PageTab from '@/components/Others/Layout/PageTab'
import InfoBox from '@/components/Others/Forms/InfoBox'
import {ExternalLinkIcon} from "vue-feather-icons";
import axios from 'axios'
export default {
name: 'UserInvoices',
components: {
EmptyPageContent,
DatatableWrapper,
ExternalLinkIcon,
PageTabGroup,
InfoBox,
PageTab,
},
data() {
return {
isLoading: true,
columns: [
{
label: this.$t('admin_page_invoices.table.number'),
field: 'data.attributes.order',
sortable: false
},
{
label: this.$t('admin_page_invoices.table.total'),
field: 'data.attributes.bag.amount',
sortable: false
},
{
label: this.$t('admin_page_invoices.table.plan'),
field: 'data.attributes.bag.amount',
sortable: false
},
{
label: this.$t('admin_page_invoices.table.payed'),
field: 'data.attributes.created_at',
sortable: false
},
{
label: this.$t('admin_page_user.table.action'),
sortable: false
},
],
}
},
}
</script>
<style lang="scss" scoped>
@import '@assets/vuefilemanager/_variables';
@import '@assets/vuefilemanager/_mixins';
@import '@assets/vuefilemanager/_forms';
.block-form {
max-width: 100%;
}
</style>

View File

@@ -19,11 +19,11 @@
<!--Client-->
<div v-show="isClient" class="menu-options" id="menu-list">
<OptionGroup class="menu-option-group">
<Option @click.native="" title="Edit" icon="rename" />
<Option @click.native="goToCompany" title="Edit" icon="rename" />
<Option @click.native="deleteItem" title="Delete" icon="trash" />
</OptionGroup>
<OptionGroup>
<Option @click.native="showDetail" title="Go to Profile" icon="user" />
<Option @click.native="goToCompany" title="Go to Profile" icon="user" />
<Option @click.native="showDetail" :title="$t('context_menu.detail')" icon="detail" />
</OptionGroup>
</div>

View File

@@ -13,7 +13,7 @@
<OptionGroup class="menu-option-group">
<Option @click.native="" title="Edit Invoice" icon="rename" />
<Option @click.native="" title="Send Invoice" icon="send" />
<Option @click.native="" title="Go to Company" icon="user" />
<Option @click.native="goToCompany" title="Go to Company" icon="user" />
<Option @click.native="" :title="$t('context_menu.delete')" icon="trash" />
</OptionGroup>
@@ -56,7 +56,9 @@ export default {
}
},
methods: {
goToCompany() {
this.$router.push({name: 'ClientDetail', params: {id: this.item.client_id}})
},
}
}
</script>

View File

@@ -22,4 +22,8 @@
<style lang="scss" scoped>
@import '@assets/vuefilemanager/_variables';
@import '@assets/vuefilemanager/_mixins';
.page-tab {
position: relative;
}
</style>

View File

@@ -131,7 +131,17 @@ const routesOasis = [
requiresAuth: true,
title: 'Client Detail'
},
}
},
{
name: 'ClientInvoices',
path: '/invoice/client/:id/invoices',
component: () =>
import(/* webpackChunkName: "chunks/oasis/invoices/client-invoices" */ './Oasis/Invoices/Clients/Tabs/ClientInvoices'),
meta: {
requiresAuth: true,
title: 'Client Invoices'
},
},
]
}
]

View File

@@ -43,6 +43,7 @@ Route::group(['middleware' => 'api', 'prefix' => '/api/oasis'], function () {
Route::get('/search', [ClientController::class, 'search']);
Route::get('/{client}', [ClientController::class, 'show']);
Route::get('/{client}/invoices', [ClientController::class, 'show_invoices']);
Route::patch('/{client}', [ClientController::class, 'update']);
Route::delete('/{client}', [ClientController::class, 'destroy']);

View File

@@ -2,6 +2,8 @@
namespace Tests\Feature\Oasis;
use App\Models\Oasis\Invoice;
use App\Models\Oasis\InvoiceProfile;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use App\Models\Oasis\Client;
use Illuminate\Http\UploadedFile;
@@ -211,6 +213,43 @@ class OasisClientTest extends TestCase
])->assertStatus(200);
}
/**
* @test
*/
public function it_get_client_client_invoices()
{
$user = User::factory(User::class)
->create(['role' => 'user']);
Sanctum::actingAs($user);
$client = Client::factory(Client::class)
->create([
'user_id' => $user->id,
]);
$profile = InvoiceProfile::factory(InvoiceProfile::class)
->create(['user_id' => $user->id]);
$invoice = Invoice::factory(Invoice::class)
->create([
'user_id' => $user->id,
'client_id' => $client->id,
'invoice_type' => 'regular-invoice',
'invoice_number' => 2001212,
'client' => [
'name' => 'VueFileManager Inc.',
],
'user' => $profile->toArray(),
]);
$this->getJson("/api/oasis/clients/$client->id/invoices")
->assertJsonFragment([
'id' => $invoice->id,
])
->assertStatus(200);
}
/**
* @test
*/