| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- <?php
- namespace App\Services;
- use App\Models\TreasuryAccount;
- use Illuminate\Database\Eloquent\Collection;
- class TreasuryAccountService
- {
- /**
- * Lista as contas de tesouraria por escopo:
- * - franqueador (rede/conta-mãe): sem unit_id => contas com unit_id null;
- * - franchisee: unit_id da unidade ativa => contas daquela unidade.
- */
- public function getAll(?int $unitId = null): Collection
- {
- return TreasuryAccount::query()
- ->when(
- $unitId !== null,
- fn ($query) => $query->where('unit_id', $unitId),
- fn ($query) => $query->whereNull('unit_id'),
- )
- ->orderBy('created_at', 'desc')
- ->get();
- }
- public function findById(int $id): ?TreasuryAccount
- {
- return TreasuryAccount::find($id);
- }
- public function create(array $data): TreasuryAccount
- {
- // Sem unit_id => conta da rede (franqueador). Com unit_id => conta da unidade (franchisee).
- $data['unit_id'] = $data['unit_id'] ?? null;
- return TreasuryAccount::create($data);
- }
- public function update(int $id, array $data): ?TreasuryAccount
- {
- $model = $this->findById($id);
- if (!$model) {
- return null;
- }
- $model->update($data);
- return $model->fresh();
- }
- public function delete(int $id): bool
- {
- $model = $this->findById($id);
- if (!$model) {
- return false;
- }
- return $model->delete();
- }
- // Add custom business logic methods here
- }
|