update invoice profile

This commit is contained in:
Peter Papp
2021-04-28 08:34:37 +02:00
parent bcf14595bf
commit 1e4bbd10f3
7 changed files with 123 additions and 30 deletions
@@ -3,16 +3,24 @@
namespace App\Http\Controllers\Oasis; namespace App\Http\Controllers\Oasis;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Resources\Oasis\InvoiceProfileCollection; use App\Http\Resources\Oasis\InvoiceProfileResource;
use App\Models\Oasis\InvoiceProfile;
use App\Models\Setting;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\Routing\ResponseFactory;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Response;
class InvoiceProfileController extends Controller class InvoiceProfileController extends Controller
{ {
/**
* @param Request $request
* @return Application|ResponseFactory|Response
*/
public function store(Request $request) public function store(Request $request)
{ {
$profile = \Auth::user() $profile = InvoiceProfile::create([
->invoiceProfile() 'user_id' => $request->user()->id,
->create([
'logo' => store_avatar($request, 'logo') ?? null, 'logo' => store_avatar($request, 'logo') ?? null,
'stamp' => store_avatar($request, 'stamp') ?? null, 'stamp' => store_avatar($request, 'stamp') ?? null,
'company' => $request->company, 'company' => $request->company,
@@ -34,7 +42,33 @@ class InvoiceProfileController extends Controller
]); ]);
return response( return response(
new InvoiceProfileCollection($profile), 201 new InvoiceProfileResource($profile), 201
); );
} }
/**
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function update(Request $request)
{
// Store image if exist
if ($request->hasFile($request->name)) {
// Find and update image path
$request->user()
->invoiceProfile()
->update([
$request->name => store_avatar($request, $request->name)
]);
return response('Done', 204);
}
$request->user()
->invoiceProfile()
->update(make_single_input($request));
return response('Done', 204);
}
} }
@@ -12,10 +12,12 @@ class InvoiceProfileCollection extends ResourceCollection
* Transform the resource collection into an array. * Transform the resource collection into an array.
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @return \Illuminate\Support\Collection * @return array
*/ */
public function toArray($request) public function toArray($request)
{ {
return $this->collection; return [
'data' => $this->collection,
];
} }
} }
@@ -3,7 +3,6 @@
namespace App\Http\Resources\Oasis; namespace App\Http\Resources\Oasis;
use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Http\Resources\Json\JsonResource;
use Laravel\Cashier\Cashier;
class InvoiceProfileResource extends JsonResource class InvoiceProfileResource extends JsonResource
{ {
+1
View File
@@ -32,6 +32,7 @@ Route::group(['middleware' => 'api', 'prefix' => '/api/oasis'], function () {
Route::post('/', [InvoiceController::class, 'store']); Route::post('/', [InvoiceController::class, 'store']);
Route::post('/profile', [InvoiceProfileController::class, 'store']); Route::post('/profile', [InvoiceProfileController::class, 'store']);
Route::patch('/profile', [InvoiceProfileController::class, 'update']);
}); });
// Clients // Clients
+1 -1
View File
@@ -12,7 +12,7 @@ use Tests\TestCase;
class LanguageEditorTest extends TestCase class LanguageEditorTest extends TestCase
{ {
//use DatabaseMigrations; use DatabaseMigrations;
protected $setup; protected $setup;
+1 -1
View File
@@ -142,7 +142,7 @@ class OasisClientTest extends TestCase
'id' => $client->id, 'id' => $client->id,
])->assertStatus(200); ])->assertStatus(200);
$this->getJson('/api/oasis/clients/search?query=info') $this->getJson('/api/oasis/clients/search?query=inf')
->assertJsonFragment([ ->assertJsonFragment([
'id' => $client->id, 'id' => $client->id,
])->assertStatus(200); ])->assertStatus(200);
@@ -48,7 +48,10 @@ class OasisInvoiceProfileTest extends TestCase
'bank' => 'Fio Banka', 'bank' => 'Fio Banka',
'iban' => 'SK20000054236423624', 'iban' => 'SK20000054236423624',
'swift' => 'FIOZXXX', 'swift' => 'FIOZXXX',
])->assertStatus(201); ])->assertStatus(201)
->assertJsonFragment([
'company' => 'VueFileManager Inc.',
]);
$this->assertDatabaseHas('invoice_profiles', [ $this->assertDatabaseHas('invoice_profiles', [
'user_id' => $user->id, 'user_id' => $user->id,
@@ -61,4 +64,58 @@ class OasisInvoiceProfileTest extends TestCase
Storage::disk('local')->assertExists($profile->logo); Storage::disk('local')->assertExists($profile->logo);
Storage::disk('local')->assertExists($profile->stamp); Storage::disk('local')->assertExists($profile->stamp);
} }
/**
* @test
*/
public function user_update_invoice_profile_column()
{
$user = User::factory(User::class)
->create(['role' => 'user']);
InvoiceProfile::factory(InvoiceProfile::class)
->create(['user_id' => $user->id]);
Sanctum::actingAs($user);
$this->patchJson('/api/oasis/invoices/profile', [
'name' => 'company',
'value' => 'VueFileManager Inc.',
])->assertStatus(204);
$this->assertDatabaseHas('invoice_profiles', [
'user_id' => $user->id,
'company' => 'VueFileManager Inc.',
]);
}
/**
* @test
*/
public function user_update_invoice_profile_logo()
{
$user = User::factory(User::class)
->create(['role' => 'user']);
InvoiceProfile::factory(InvoiceProfile::class)
->create(['user_id' => $user->id]);
Sanctum::actingAs($user);
$image = UploadedFile::fake()
->image('fake-image.jpg');
$this->patchJson('/api/oasis/invoices/profile', [
'name' => 'logo',
'logo' => $image,
])->assertStatus(204);
$this->assertDatabaseMissing('invoice_profiles', [
'logo' => null,
]);
Storage::disk('local')->assertExists(
InvoiceProfile::first()->logo
);
}
} }