GetAvatar::execute()   A
last analyzed

Complexity

Conditions 2
Paths 1

Size

Total Lines 22
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 14
c 1
b 0
f 0
nc 1
nop 2
dl 0
loc 22
rs 9.7998
1
<?php
2
3
4
namespace App\Src\UseCases\Domain\Users;
5
6
7
use App\Src\UseCases\Domain\Ports\UserRepository;
8
use App\Src\UseCases\Domain\User;
9
use Intervention\Image\Facades\Image;
10
11
class GetAvatar
12
{
13
    private $userRepository;
14
15
    public function __construct(UserRepository $userRepository)
16
    {
17
        $this->userRepository = $userRepository;
18
    }
19
20
    public function execute(string $uuid, int $dim)
21
    {
22
        $user = $this->userRepository->getById($uuid);
23
        $pathPicture = $this->getPathPicture($user);
24
25
        $img = Image::make($pathPicture);
26
        $h = $img->height();
27
        $w = $img->width();
28
29
        $img = Image::cache(function($image) use($pathPicture, $dim, $w, $h){
30
            if($w <= $h) {
31
                $image->make($pathPicture)->widen($dim, function ($constraint) {
32
                    $constraint->upsize();
33
                });
34
            }else{
35
                $image->make($pathPicture)->heighten($dim, function ($constraint) {
36
                    $constraint->upsize();
37
                });
38
            }
39
        }, 3600, true);
40
41
        return $img->response();
42
43
    }
44
45
46
    private function getPathPicture(?User $user): string
47
    {
48
        if (isset($user) && $user->toArray()['path_picture'] !== null) {
49
            return storage_path($user->toArray()['path_picture']);
50
        }
51
        return public_path(config('neayi.default_avatar'));
52
    }
53
}
54