Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
UpdateSeniorIntegrationService
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
1 / 1
3
100.00% covered (success)
100.00%
1 / 1
 update
100.00% covered (success)
100.00%
9 / 9
100.00% covered (success)
100.00%
1 / 1
3
1<?php
2
3namespace Domain\User\Services;
4
5use App\Events\ServiceProcessed;
6use App\Models\User;
7use Domain\Login\Integrations\AuthenticateSenior;
8use Domain\Shared\Integrations\Senior\Exceptions\IntegrationSoapSeniorException;
9use Domain\User\DTOs\SeniorAuthenticationDTO;
10use Illuminate\Auth\AuthenticationException;
11use Illuminate\Support\Facades\Crypt;
12use SoapFault;
13
14readonly class UpdateSeniorIntegrationService
15{
16    /**
17     * @paparam User $userToUpdate
18     * @param SeniorAuthenticationDTO $seniorAuthenticationDTO
19     * @param User $userToUpdate
20     * @return void SeniorAuthenticationDTO $seniorAuthenticationDTO
21     * @throws AuthenticationException
22     * @throws IntegrationSoapSeniorException
23     * @throws SoapFault
24     */
25    public static function update(SeniorAuthenticationDTO $seniorAuthenticationDTO, User $userToUpdate): void
26    {
27        ['user' => $userSenior, 'password' => $passwordSenior] = $seniorAuthenticationDTO->toArray();
28
29        if ($userSenior && $passwordSenior) {
30            AuthenticateSenior::login($userSenior, $passwordSenior);
31
32            $passordCrypt = Crypt::encryptString($passwordSenior);
33            $userCrypt = Crypt::encryptString($userSenior);
34
35            $userToUpdate->setAttribute('integrations->senior->user', $userCrypt);
36            $userToUpdate->setAttribute('integrations->senior->password', $passordCrypt);
37            $userToUpdate->save();
38
39            ServiceProcessed::dispatch(self::class, $userToUpdate);
40        }
41
42    }
43}