12345678910111213141516171819202122232425262728293031323334353637383940 |
- <?php
-
- namespace App\Actions\FilamentCompanies;
-
- use App\Models\Company;
- use App\Models\User;
- use Illuminate\Auth\Access\AuthorizationException;
- use Illuminate\Support\Facades\Gate;
- use Illuminate\Support\Facades\Validator;
- use Wallo\FilamentCompanies\Contracts\CreatesCompanies;
- use Wallo\FilamentCompanies\Events\AddingCompany;
- use Wallo\FilamentCompanies\FilamentCompanies;
-
- class CreateCompany implements CreatesCompanies
- {
- /**
- * Validate and create a new company for the given user.
- *
- * @param array<string, string> $input
- *
- * @throws AuthorizationException
- */
- public function create(User $user, array $input): Company
- {
- Gate::forUser($user)->authorize('create', FilamentCompanies::newCompanyModel());
-
- Validator::make($input, [
- 'name' => ['required', 'string', 'max:255'],
- ])->validateWithBag('createCompany');
-
- AddingCompany::dispatch($user);
-
- $user->switchCompany($company = $user->ownedCompanies()->create([
- 'name' => $input['name'],
- 'personal_company' => false,
- ]));
-
- return $company;
- }
- }
|