Test Setup Failed
Push — master ( cbc6b9...b0c301 )
by guillaume
09:28 queued 04:37
created

AttachUserToAnOrganization::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 2
nc 1
nop 2
dl 0
loc 4
rs 10
c 1
b 0
f 0
1
<?php
2
3
4
namespace App\Src\UseCases\Domain\Invitation;
5
6
7
use App\Mail\UserJoinsOrganizationToAdmin;
8
use App\Src\UseCases\Domain\Ports\OrganizationRepository;
9
use App\Src\UseCases\Domain\Ports\UserRepository;
10
use App\Src\UseCases\Domain\User;
11
use Illuminate\Support\Facades\Mail;
12
13
class AttachUserToAnOrganization
14
{
15
    private $userRepository;
16
    private $organizationRepository;
17
18
    public function __construct(UserRepository $userRepository, OrganizationRepository $organizationRepository)
19
    {
20
        $this->userRepository = $userRepository;
21
        $this->organizationRepository = $organizationRepository;
22
    }
23
24
    public function attach(string $userId, string $organizationId)
25
    {
26
        $user = $this->userRepository->getById($userId);
27
        $user->joinsOrganization($organizationId);
28
29
        $this->sendMailUserJoinsToAdmin($organizationId, $user);
0 ignored issues
show
Bug introduced by
It seems like $user can also be of type null; however, parameter $user of App\Src\UseCases\Domain\...dMailUserJoinsToAdmin() does only seem to accept App\Src\UseCases\Domain\User, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

29
        $this->sendMailUserJoinsToAdmin($organizationId, /** @scrutinizer ignore-type */ $user);
Loading history...
30
    }
31
32
    private function sendMailUserJoinsToAdmin(string $organizationId, User $user): void
33
    {
34
        $admins = $this->userRepository->getAdminOfOrganization($organizationId);
35
        $fullname = $user->fullname();
36
        $organization = $this->organizationRepository->get($organizationId);
37
        foreach ($admins as $admin) {
38
            Mail::to($admin->email())->send(new UserJoinsOrganizationToAdmin($fullname, $organization->name()));
39
        }
40
    }
41
}
42