buckets/app/Actions/CreateScenarioAction.php
2025-12-31 00:02:54 +01:00

31 lines
913 B
PHP

<?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);
}
}