Completed
Push — master ( 5b54fc...16c96d )
by Bertrand
14:42
created

InviteUsersInOrganization   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 28
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 15
dl 0
loc 28
rs 10
c 0
b 0
f 0
wmc 5

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 7 1
A invite() 0 14 4
1
<?php
2
3
4
namespace App\Src\UseCases\Domain\Organizations\Invitation;
5
6
7
use App\Mail\InvitationLinkToOrganization;
8
use App\Src\UseCases\Domain\Organizations\Model\Invitation;
9
use App\Src\UseCases\Domain\Ports\InvitationRepository;
10
use App\Src\UseCases\Domain\Ports\OrganizationRepository;
11
use Illuminate\Support\Facades\Mail;
12
13
class InviteUsersInOrganization
14
{
15
    private $organizationRepository;
16
    private $invitationRepository;
17
18
    public function __construct(
19
        OrganizationRepository $organizationRepository,
20
        InvitationRepository $invitationRepository
21
    )
22
    {
23
        $this->organizationRepository = $organizationRepository;
24
        $this->invitationRepository = $invitationRepository;
25
    }
26
27
    public function invite(string $organizationId, array $users)
28
    {
29
        $invitations = [];
30
        $organization = $this->organizationRepository->get($organizationId);
31
        foreach($users as $user){
32
            $email = $user['email'];
33
            $firstname = isset($user['firstname']) ? $user['firstname'] : '';
34
            $lastname = isset($user['lastname']) ? $user['lastname'] : '';
35
36
            $invitations[] = $invitation = new Invitation($organizationId, $email, $firstname, $lastname);
37
            $this->invitationRepository->add($invitation);
38
            Mail::to($email)->send(new InvitationLinkToOrganization($invitation->hash(), $email, $organization->name(), $firstname, $lastname));
39
        }
40
        return $invitations;
41
    }
42
}
43