77 lines
2.5 KiB
PHP
77 lines
2.5 KiB
PHP
<?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();
|
|
}
|
|
}
|