buckets/app/Actions/CreateScenarioAction.php

32 lines
913 B
PHP
Raw Normal View History

2025-12-31 00:02:54 +01:00
<?php
namespace App\Actions;
use App\Models\Bucket;
use App\Models\Scenario;
use Illuminate\Support\Facades\DB;
readonly class CreateScenarioAction
{
public function __construct(
private CreateBucketAction $createBucketAction
) {}
public function execute(array $data): Scenario
{
return DB::transaction(function () use ($data) {
$scenario = Scenario::create($data);
$this->createDefaultBuckets($scenario);
return $scenario;
});
}
private function createDefaultBuckets(Scenario $scenario): void
{
$this->createBucketAction->execute($scenario, 'Monthly Expenses', Bucket::TYPE_FIXED_LIMIT, 0, 1);
$this->createBucketAction->execute($scenario, 'Emergency Fund', Bucket::TYPE_FIXED_LIMIT, 0, 2);
$this->createBucketAction->execute($scenario, 'Investments', Bucket::TYPE_UNLIMITED, null, 3);
}
}