-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
/
ContactPhotosIndexViewHelper.php
61 lines (56 loc) · 2.02 KB
/
ContactPhotosIndexViewHelper.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
namespace App\Contact\ManagePhotos\Web\ViewHelpers;
use App\Helpers\FileHelper;
use App\Helpers\StorageHelper;
use App\Models\Contact;
use App\Models\File;
class ContactPhotosIndexViewHelper
{
public static function data($files, Contact $contact): array
{
$photosCollection = $files->map(function (File $file) use ($contact) {
return self::dto($file, $contact);
});
return [
'contact' => [
'name' => $contact->name,
],
'photos' => $photosCollection,
'uploadcarePublicKey' => config('services.uploadcare.public_key'),
'canUploadFile' => StorageHelper::canUploadFile($contact->vault->account),
'url' => [
'show' => route('contact.show', [
'vault' => $contact->vault_id,
'contact' => $contact->id,
]),
'store' => route('contact.photo.store', [
'vault' => $contact->vault_id,
'contact' => $contact->id,
]),
],
];
}
public static function dto(File $file, Contact $contact): array
{
return [
'id' => $file->id,
'name' => $file->name,
'mime_type' => $file->mime_type,
'size' => FileHelper::formatFileSize($file->size),
'url' => [
'display' => 'https://ucarecdn.com/' . $file->uuid . '/-/scale_crop/400x400/smart/-/format/auto/-/quality/smart_retina/',
'download' => $file->cdn_url,
'show' => route('contact.photo.show', [
'vault' => $contact->vault_id,
'contact' => $contact->id,
'photo' => $file->id,
]),
'destroy' => route('contact.photo.destroy', [
'vault' => $contact->vault_id,
'contact' => $contact->id,
'photo' => $file->id,
]),
],
];
}
}