RegisterFormHandler::handle()   B
last analyzed

Complexity

Conditions 5
Paths 5

Size

Total Lines 25
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
dl 0
loc 25
rs 8.439
c 1
b 0
f 0
cc 5
eloc 14
nc 5
nop 3
1
<?php namespace Anomaly\UsersModule\User\Register;
2
3
use Anomaly\UsersModule\User\UserModel;
4
use Anomaly\UsersModule\User\UserActivator;
5
use Anomaly\Streams\Platform\Traits\Eventable;
6
use Anomaly\Streams\Platform\Traits\Transmitter;
7
use Anomaly\UsersModule\User\Contract\UserInterface;
8
use Anomaly\UsersModule\User\Notification\UserHasRegistered;
9
use Anomaly\UsersModule\User\Register\Command\HandleAutomaticRegistration;
10
use Anomaly\UsersModule\User\Register\Command\HandleEmailRegistration;
11
use Anomaly\UsersModule\User\Register\Command\HandleManualRegistration;
12
use Illuminate\Foundation\Bus\DispatchesJobs;
13
use Illuminate\Contracts\Config\Repository;
14
15
class RegisterFormHandler
16
{
17
    use Transmitter;
18
    use DispatchesJobs;
19
20
    /**
21
     * Handle the form.
22
     *
23
     * @param  Repository          $config
24
     * @param  RegisterFormBuilder $builder
25
     * @param  UserActivator       $activator
26
     * @throws \Exception
27
     */
28
    public function handle(Repository $config, RegisterFormBuilder $builder, UserActivator $activator)
29
    {
30
        if (!$builder->canSave()) {
31
            return;
32
        }
33
34
        $builder->saveForm(); // Save the new user.
35
36
        /* @var UserInterface $user */
37
        $user = $builder->getFormEntry();
38
39
        $activator->start($user);
40
41
        $mode = $config->get('anomaly.module.users::config.activation_mode');
42
43
        if ($mode === 'automatic') {
44
            $this->dispatch(new HandleAutomaticRegistration($builder));
45
        } elseif ($mode === 'manual') {
46
            $this->dispatch(new HandleManualRegistration($builder));
47
        } elseif ($mode === 'email') {
48
            $this->dispatch(new HandleEmailRegistration($builder));
49
        }
50
51
        $this->transmit(new UserHasRegistered($user));
52
    }
53
}
54