2024-07-26 02:19:42 -04:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Observers;
|
|
|
|
|
2024-08-22 17:04:07 -04:00
|
|
|
use App\Exceptions\CircularDependencyException;
|
2024-07-26 02:19:42 -04:00
|
|
|
use App\Models\ModDependency;
|
|
|
|
use App\Models\ModVersion;
|
2024-08-22 17:04:07 -04:00
|
|
|
use App\Services\DependencyVersionService;
|
|
|
|
use App\Services\SptVersionService;
|
2024-07-26 02:19:42 -04:00
|
|
|
|
|
|
|
class ModVersionObserver
|
|
|
|
{
|
2024-08-22 17:04:07 -04:00
|
|
|
protected DependencyVersionService $dependencyVersionService;
|
2024-07-26 02:19:42 -04:00
|
|
|
|
2024-08-22 17:04:07 -04:00
|
|
|
protected SptVersionService $sptVersionService;
|
|
|
|
|
|
|
|
public function __construct(
|
|
|
|
DependencyVersionService $dependencyVersionService,
|
|
|
|
SptVersionService $sptVersionService,
|
|
|
|
) {
|
|
|
|
$this->dependencyVersionService = $dependencyVersionService;
|
|
|
|
$this->sptVersionService = $sptVersionService;
|
2024-07-26 02:19:42 -04:00
|
|
|
}
|
|
|
|
|
2024-08-22 17:04:07 -04:00
|
|
|
/**
|
|
|
|
* Handle the ModVersion "saved" event.
|
|
|
|
*
|
|
|
|
* @throws CircularDependencyException
|
|
|
|
*/
|
2024-07-26 02:19:42 -04:00
|
|
|
public function saved(ModVersion $modVersion): void
|
2024-08-22 17:04:07 -04:00
|
|
|
{
|
|
|
|
$this->resolveDependencyVersion($modVersion);
|
|
|
|
$this->sptVersionService->resolve($modVersion);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Resolve the ModVersion's dependencies.
|
|
|
|
*
|
|
|
|
* @throws CircularDependencyException
|
|
|
|
*/
|
|
|
|
private function resolveDependencyVersion(ModVersion $modVersion): void
|
2024-07-26 02:19:42 -04:00
|
|
|
{
|
|
|
|
$dependencies = ModDependency::where('resolved_version_id', $modVersion->id)->get();
|
|
|
|
foreach ($dependencies as $dependency) {
|
2024-08-22 17:04:07 -04:00
|
|
|
$this->dependencyVersionService->resolve($dependency->modVersion);
|
2024-07-26 02:19:42 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-08-22 17:04:07 -04:00
|
|
|
/**
|
|
|
|
* Handle the ModVersion "deleted" event.
|
|
|
|
*
|
|
|
|
* @throws CircularDependencyException
|
|
|
|
*/
|
2024-07-26 02:19:42 -04:00
|
|
|
public function deleted(ModVersion $modVersion): void
|
|
|
|
{
|
2024-08-22 17:04:07 -04:00
|
|
|
$this->resolveDependencyVersion($modVersion);
|
2024-07-26 02:19:42 -04:00
|
|
|
}
|
|
|
|
}
|