|
|
@@ -2,6 +2,8 @@
|
|
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
|
|
+use App\Http\Controllers\Concerns\ResolvesActiveUnit;
|
|
|
+use App\Services\TreasuryAccountService;
|
|
|
use App\Services\TreasuryLaunchService;
|
|
|
use App\Http\Requests\TreasuryLaunchRequest;
|
|
|
use App\Http\Resources\TreasuryLaunchResource;
|
|
|
@@ -10,10 +12,53 @@
|
|
|
|
|
|
class TreasuryLaunchController extends Controller
|
|
|
{
|
|
|
+ use ResolvesActiveUnit;
|
|
|
+
|
|
|
public function __construct(
|
|
|
protected TreasuryLaunchService $service,
|
|
|
+ protected TreasuryAccountService $accountService,
|
|
|
) {}
|
|
|
|
|
|
+ // --- Unidade ativa (Franchisee): extrato e movimentação manual ---
|
|
|
+
|
|
|
+ public function indexMe(Request $request): JsonResponse
|
|
|
+ {
|
|
|
+ $unitId = $this->activeUnitId();
|
|
|
+ if (!$unitId) {
|
|
|
+ return $this->errorResponse(message: 'Unidade não encontrada', code: 404);
|
|
|
+ }
|
|
|
+
|
|
|
+ $accountId = $request->filled('account_id') ? (int) $request->input('account_id') : null;
|
|
|
+
|
|
|
+ // Extrato só de uma conta da própria unidade.
|
|
|
+ if ($accountId !== null && !$this->accountService->findByIdForUnit($accountId, $unitId)) {
|
|
|
+ return $this->errorResponse(message: 'Conta não encontrada', code: 404);
|
|
|
+ }
|
|
|
+
|
|
|
+ return $this->successResponse(
|
|
|
+ payload: TreasuryLaunchResource::collection($this->service->getAll($accountId)),
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ public function storeMe(TreasuryLaunchRequest $request): JsonResponse
|
|
|
+ {
|
|
|
+ $unitId = $this->activeUnitId();
|
|
|
+ if (!$unitId) {
|
|
|
+ return $this->errorResponse(message: 'Unidade não encontrada', code: 404);
|
|
|
+ }
|
|
|
+
|
|
|
+ $data = $request->validated();
|
|
|
+
|
|
|
+ // A conta movimentada precisa pertencer à unidade ativa.
|
|
|
+ if (!$this->accountService->findByIdForUnit((int) $data['account_id'], $unitId)) {
|
|
|
+ return $this->errorResponse(message: 'Conta não encontrada', code: 404);
|
|
|
+ }
|
|
|
+
|
|
|
+ $item = $this->service->create($data);
|
|
|
+
|
|
|
+ return $this->successResponse(payload: new TreasuryLaunchResource($item), message: __('messages.created'), code: 201);
|
|
|
+ }
|
|
|
+
|
|
|
public function index(Request $request): JsonResponse
|
|
|
{
|
|
|
$accountId = $request->filled('account_id') ? (int) $request->input('account_id') : null;
|