Strimoid/Strimoid

View on GitHub
app/Console/Commands/AddModerator.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace Strimoid\Console\Commands;

use Illuminate\Console\Command;
use Strimoid\Models\Group;
use Strimoid\Models\GroupModerator;
use Strimoid\Models\User;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputOption;

class AddModerator extends Command
{
    protected $name = 'lara:addmod';
    protected $description = 'Adds new moderator.';

    public function handle(): void
    {
        $user = User::findOrFail($this->argument('username'));
        $group = Group::findOrFail($this->argument('group'));

        $moderator = new GroupModerator();
        $moderator->group()->associate($group);
        $moderator->user()->associate($user);
        $moderator->type = $this->option('admin') ? 'admin' : 'moderator';
        $moderator->save();

        $this->info($user->name . ' is now moderator of ' . $group->urlname);
    }

    protected function getArguments(): array
    {
        return [
            ['group', InputArgument::REQUIRED, 'Group.'],
            ['username', InputArgument::REQUIRED, 'User name.'],
        ];
    }

    protected function getOptions(): array
    {
        return [
            ['admin', null, InputOption::VALUE_NONE, 'Makes user admin instead of moderator.', null],
        ];
    }
}