49 lines
1.1 KiB
PHP
49 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace App\Actions\Schools;
|
|
|
|
use App\Exceptions\AuditionAdminException;
|
|
use App\Models\School;
|
|
|
|
class CreateSchool
|
|
{
|
|
public function __invoke(
|
|
string $name,
|
|
?string $address = null,
|
|
?string $city = null,
|
|
?string $state = null,
|
|
?string $zip = null
|
|
): School {
|
|
return $this->create($name, $address, $city, $state, $zip);
|
|
}
|
|
|
|
public function create(
|
|
string $name,
|
|
?string $address = null,
|
|
?string $city = null,
|
|
?string $state = null,
|
|
?string $zip = null
|
|
): School {
|
|
|
|
if (School::where('name', $name)->exists()) {
|
|
throw new AuditionAdminException('The school '.$name.' already exists');
|
|
}
|
|
|
|
$newSchool = School::create([
|
|
'name' => $name,
|
|
'address' => $address,
|
|
'city' => $city,
|
|
'state' => $state,
|
|
'zip' => $zip,
|
|
]);
|
|
|
|
if (auth()->user()) {
|
|
$message = 'Created school '.$newSchool->name;
|
|
$affects = ['schools' => [$newSchool->id]];
|
|
auditionLog($message, $affects);
|
|
}
|
|
|
|
return $newSchool;
|
|
}
|
|
}
|