mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-28 19:10:40 +00:00
Create client
This commit is contained in:
@@ -2,10 +2,15 @@
|
|||||||
|
|
||||||
namespace App\Http\Controllers\Oasis;
|
namespace App\Http\Controllers\Oasis;
|
||||||
|
|
||||||
|
use App\Http\Requests\Oasis\StoreClientRequest;
|
||||||
use App\Http\Resources\Oasis\OasisClientCollection;
|
use App\Http\Resources\Oasis\OasisClientCollection;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Http\Resources\Oasis\OasisClientResource;
|
||||||
use App\Models\Oasis\Client;
|
use App\Models\Oasis\Client;
|
||||||
use Auth;
|
use Auth;
|
||||||
|
use Illuminate\Contracts\Foundation\Application;
|
||||||
|
use Illuminate\Contracts\Routing\ResponseFactory;
|
||||||
|
use Illuminate\Http\Response;
|
||||||
|
|
||||||
class ClientController extends Controller
|
class ClientController extends Controller
|
||||||
{
|
{
|
||||||
@@ -34,4 +39,31 @@ class ClientController extends Controller
|
|||||||
new OasisClientCollection($results), 200
|
new OasisClientCollection($results), 200
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param StoreClientRequest $request
|
||||||
|
* @return Application|ResponseFactory|Response
|
||||||
|
*/
|
||||||
|
public function store(StoreClientRequest $request)
|
||||||
|
{
|
||||||
|
$client = $request->user()
|
||||||
|
->clients()
|
||||||
|
->create([
|
||||||
|
'avatar' => store_avatar($request, 'avatar') ?? null,
|
||||||
|
'name' => $request->name,
|
||||||
|
'email' => $request->email ?? null,
|
||||||
|
'phone_number' => $request->phone_number ?? null,
|
||||||
|
'address' => $request->address,
|
||||||
|
'city' => $request->city,
|
||||||
|
'postal_code' => $request->postal_code,
|
||||||
|
'country' => $request->country,
|
||||||
|
'ico' => $request->ico ?? null,
|
||||||
|
'dic' => $request->dic ?? null,
|
||||||
|
'ic_dph' => $request->ic_dph ?? null,
|
||||||
|
]);
|
||||||
|
|
||||||
|
return response(
|
||||||
|
new OasisClientResource($client), 201
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Requests\Oasis;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
|
class StoreClientRequest extends FormRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Determine if the user is authorized to make this request.
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function authorize()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the validation rules that apply to the request.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function rules()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'avatar' => 'sometimes|file|nullable',
|
||||||
|
'name' => 'required|string',
|
||||||
|
'email' => 'sometimes|email|nullable',
|
||||||
|
'phone_number' => 'sometimes|string|nullable',
|
||||||
|
'address' => 'required|string',
|
||||||
|
'city' => 'required|string',
|
||||||
|
'postal_code' => 'required|string',
|
||||||
|
'country' => 'required|string',
|
||||||
|
'ico' => 'required|string',
|
||||||
|
'dic' => 'required|string',
|
||||||
|
'ic_dph' => 'required|string',
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -34,6 +34,8 @@ Route::group(['middleware' => 'api', 'prefix' => '/api/oasis'], function () {
|
|||||||
Route::group(['prefix' => 'clients'], function () {
|
Route::group(['prefix' => 'clients'], function () {
|
||||||
Route::get('/', [ClientController::class, 'index']);
|
Route::get('/', [ClientController::class, 'index']);
|
||||||
Route::get('/search', [ClientController::class, 'search']);
|
Route::get('/search', [ClientController::class, 'search']);
|
||||||
|
|
||||||
|
Route::post('/', [ClientController::class, 'store']);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -2,8 +2,11 @@
|
|||||||
|
|
||||||
namespace Tests\Feature\Oasis;
|
namespace Tests\Feature\Oasis;
|
||||||
|
|
||||||
|
use Carbon\Carbon;
|
||||||
use Illuminate\Foundation\Testing\DatabaseMigrations;
|
use Illuminate\Foundation\Testing\DatabaseMigrations;
|
||||||
use App\Models\Oasis\Client;
|
use App\Models\Oasis\Client;
|
||||||
|
use Illuminate\Http\UploadedFile;
|
||||||
|
use Illuminate\Support\Facades\Storage;
|
||||||
use Laravel\Sanctum\Sanctum;
|
use Laravel\Sanctum\Sanctum;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use Tests\TestCase;
|
use Tests\TestCase;
|
||||||
@@ -25,6 +28,77 @@ class OasisClientTest extends TestCase
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function user_create_new_client_with_avatar()
|
||||||
|
{
|
||||||
|
Storage::fake('local');
|
||||||
|
|
||||||
|
$avatar = UploadedFile::fake()
|
||||||
|
->image('fake-image.jpg');
|
||||||
|
|
||||||
|
$user = User::factory(User::class)
|
||||||
|
->create(['role' => 'user']);
|
||||||
|
|
||||||
|
Sanctum::actingAs($user);
|
||||||
|
|
||||||
|
$this->postJson('/api/oasis/clients', [
|
||||||
|
'avatar' => $avatar,
|
||||||
|
'name' => 'VueFileManager Inc.',
|
||||||
|
'email' => 'howdy@hi5ve.digital',
|
||||||
|
'phone_number' => '+421 950 123 456',
|
||||||
|
'address' => 'Does 12',
|
||||||
|
'city' => 'Bratislava',
|
||||||
|
'postal_code' => '076 54',
|
||||||
|
'country' => 'SK',
|
||||||
|
'ico' => '11111111',
|
||||||
|
'dic' => '11111111',
|
||||||
|
'ic_dph' => 'SK11111111',
|
||||||
|
])->assertStatus(201);
|
||||||
|
|
||||||
|
$this->assertDatabaseHas('clients', [
|
||||||
|
'user_id' => $user->id,
|
||||||
|
'name' => 'VueFileManager Inc.',
|
||||||
|
'email' => 'howdy@hi5ve.digital',
|
||||||
|
]);
|
||||||
|
|
||||||
|
Storage::disk('local')
|
||||||
|
->assertExists(
|
||||||
|
Client::first()->getRawOriginal('avatar')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function user_create_new_client_without_avatar_and_contact_info()
|
||||||
|
{
|
||||||
|
$user = User::factory(User::class)
|
||||||
|
->create(['role' => 'user']);
|
||||||
|
|
||||||
|
Sanctum::actingAs($user);
|
||||||
|
|
||||||
|
$this->postJson('/api/oasis/clients', [
|
||||||
|
'avatar' => null,
|
||||||
|
'name' => 'VueFileManager Inc.',
|
||||||
|
'email' => null,
|
||||||
|
'phone_number' => null,
|
||||||
|
'address' => 'Does 12',
|
||||||
|
'city' => 'Bratislava',
|
||||||
|
'postal_code' => '076 54',
|
||||||
|
'country' => 'SK',
|
||||||
|
'ico' => '11111111',
|
||||||
|
'dic' => '11111111',
|
||||||
|
'ic_dph' => 'SK11111111',
|
||||||
|
])->assertStatus(201);
|
||||||
|
|
||||||
|
$this->assertDatabaseHas('clients', [
|
||||||
|
'user_id' => $user->id,
|
||||||
|
'name' => 'VueFileManager Inc.',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @test
|
* @test
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -172,16 +172,17 @@ class OasisInvoiceTest extends TestCase
|
|||||||
public function user_create_new_invoice_with_storing_new_client()
|
public function user_create_new_invoice_with_storing_new_client()
|
||||||
{
|
{
|
||||||
Notification::fake();
|
Notification::fake();
|
||||||
|
|
||||||
Storage::fake('local');
|
Storage::fake('local');
|
||||||
|
|
||||||
|
$avatar = UploadedFile::fake()
|
||||||
|
->image('fake-image.jpg');
|
||||||
|
|
||||||
$user = User::factory(User::class)
|
$user = User::factory(User::class)
|
||||||
->create(['role' => 'user']);
|
->create(['role' => 'user']);
|
||||||
|
|
||||||
Sanctum::actingAs($user);
|
Sanctum::actingAs($user);
|
||||||
|
|
||||||
$avatar = UploadedFile::fake()
|
|
||||||
->image('fake-image.jpg');
|
|
||||||
|
|
||||||
$this->postJson('/api/oasis/invoices', [
|
$this->postJson('/api/oasis/invoices', [
|
||||||
'invoice_type' => 'regular-invoice',
|
'invoice_type' => 'regular-invoice',
|
||||||
'invoice_number' => '2120001',
|
'invoice_number' => '2120001',
|
||||||
@@ -221,7 +222,9 @@ class OasisInvoiceTest extends TestCase
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
Storage::disk('local')
|
Storage::disk('local')
|
||||||
->assertExists(Client::first()->getRawOriginal('avatar'));
|
->assertExists(
|
||||||
|
Client::first()->getRawOriginal('avatar')
|
||||||
|
);
|
||||||
|
|
||||||
Notification::assertTimesSent(1, InvoiceDeliveryNotification::class);
|
Notification::assertTimesSent(1, InvoiceDeliveryNotification::class);
|
||||||
}
|
}
|
||||||
@@ -335,7 +338,6 @@ class OasisInvoiceTest extends TestCase
|
|||||||
public function user_create_new_invoice_without_storing_client()
|
public function user_create_new_invoice_without_storing_client()
|
||||||
{
|
{
|
||||||
Notification::fake();
|
Notification::fake();
|
||||||
Storage::fake('local');
|
|
||||||
|
|
||||||
$user = User::factory(User::class)
|
$user = User::factory(User::class)
|
||||||
->create(['role' => 'user']);
|
->create(['role' => 'user']);
|
||||||
@@ -387,7 +389,6 @@ class OasisInvoiceTest extends TestCase
|
|||||||
public function user_create_new_invoice_with_existing_client()
|
public function user_create_new_invoice_with_existing_client()
|
||||||
{
|
{
|
||||||
Notification::fake();
|
Notification::fake();
|
||||||
Storage::fake('local');
|
|
||||||
|
|
||||||
$user = User::factory(User::class)
|
$user = User::factory(User::class)
|
||||||
->create(['role' => 'user']);
|
->create(['role' => 'user']);
|
||||||
|
|||||||
Reference in New Issue
Block a user