feat: implement BankAccount management with CRUD operations and routes for tenant selection
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
|
||||
namespace App\Domains\BankAccount\Controllers;
|
||||
|
||||
use App\Domains\BankAccount\Models\BankAccount;
|
||||
use App\Domains\Tenant\Models\Tenant;
|
||||
use App\Domains\BankAccount\Requests\StoreBankAccountRequest;
|
||||
use App\Domains\BankAccount\Requests\UpdateBankAccountRequest;
|
||||
use App\Domains\BankAccount\Resources\BankAccountResource;
|
||||
use App\Domains\Tenant\Resources\TenantResource;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Response;
|
||||
|
||||
class BankAccountController extends Controller
|
||||
{
|
||||
public function index(Tenant $tenant): JsonResponse
|
||||
{
|
||||
$accounts = $tenant->bankAccounts()->latest()->get();
|
||||
return BankAccountResource::collection($accounts)->response();
|
||||
}
|
||||
|
||||
public function store(StoreBankAccountRequest $request, Tenant $tenant): JsonResponse
|
||||
{
|
||||
$data = $request->validated();
|
||||
$data['tenant_code'] = $tenant->codigo;
|
||||
|
||||
$account = BankAccount::query()->create($data);
|
||||
|
||||
return BankAccountResource::make($account)->response()->setStatusCode(201);
|
||||
}
|
||||
|
||||
public function show(Tenant $tenant, BankAccount $bankAccount): BankAccountResource
|
||||
{
|
||||
abort_if($bankAccount->tenant_code !== $tenant->codigo, 404);
|
||||
|
||||
return BankAccountResource::make($bankAccount);
|
||||
}
|
||||
|
||||
public function update(UpdateBankAccountRequest $request, Tenant $tenant, BankAccount $bankAccount): BankAccountResource
|
||||
{
|
||||
abort_if($bankAccount->tenant_code !== $tenant->codigo, 404);
|
||||
|
||||
$bankAccount->update($request->validated());
|
||||
|
||||
return BankAccountResource::make($bankAccount);
|
||||
}
|
||||
|
||||
public function destroy(Tenant $tenant, BankAccount $bankAccount): Response
|
||||
{
|
||||
abort_if($bankAccount->tenant_code !== $tenant->codigo, 404);
|
||||
|
||||
$bankAccount->delete();
|
||||
|
||||
return response()->noContent();
|
||||
}
|
||||
|
||||
public function select(Tenant $tenant, BankAccount $bankAccount): TenantResource
|
||||
{
|
||||
abort_if($bankAccount->tenant_code !== $tenant->codigo, 400, 'La cuenta bancaria no pertenece a este tenant.');
|
||||
|
||||
$tenant->selected_bank_account_id = $bankAccount->id;
|
||||
$tenant->save();
|
||||
|
||||
return TenantResource::make($tenant->loadMissing(['headerLogo', 'footerLogo']));
|
||||
}
|
||||
|
||||
public function selected(Tenant $tenant): JsonResponse
|
||||
{
|
||||
$account = $tenant->selectedBankAccount;
|
||||
|
||||
abort_if(!$account, 404, 'No hay ninguna cuenta bancaria seleccionada para este tenant.');
|
||||
|
||||
return BankAccountResource::make($account)->response();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user