RegisterFormHandler   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 39
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 5

Importance

Changes 3
Bugs 0 Features 0
Metric Value
wmc 5
lcom 0
cbo 5
dl 0
loc 39
rs 10
c 3
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
B handle() 0 25 5
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