Andrew Wallo 4 mesi fa
parent
commit
85d02f5889

+ 1
- 1
app/DTO/DocumentDTO.php Vedi File

72
             subheader: $document->subheader,
72
             subheader: $document->subheader,
73
             footer: $document->footer,
73
             footer: $document->footer,
74
             terms: $document->terms,
74
             terms: $document->terms,
75
-            logo: $document->logo,
75
+            logo: $document->logo_url ?? $settings->logo_url,
76
             number: $document->documentNumber(),
76
             number: $document->documentNumber(),
77
             referenceNumber: $document->referenceNumber(),
77
             referenceNumber: $document->referenceNumber(),
78
             date: $document->documentDate(),
78
             date: $document->documentDate(),

+ 6
- 16
app/Filament/Company/Clusters/Settings/Resources/DocumentDefaultResource.php Vedi File

19
 use Filament\Resources\Resource;
19
 use Filament\Resources\Resource;
20
 use Filament\Tables;
20
 use Filament\Tables;
21
 use Filament\Tables\Table;
21
 use Filament\Tables\Table;
22
-use Illuminate\Support\Facades\Auth;
23
-use Livewire\Features\SupportFileUploads\TemporaryUploadedFile;
24
 
22
 
25
 class DocumentDefaultResource extends Resource
23
 class DocumentDefaultResource extends Resource
26
 {
24
 {
88
                 Forms\Components\Grid::make(1)
86
                 Forms\Components\Grid::make(1)
89
                     ->schema([
87
                     ->schema([
90
                         Forms\Components\FileUpload::make('logo')
88
                         Forms\Components\FileUpload::make('logo')
91
-                            ->openable()
92
                             ->maxSize(1024)
89
                             ->maxSize(1024)
93
                             ->localizeLabel()
90
                             ->localizeLabel()
94
-                            ->visibility('public')
95
-                            ->disk('public')
91
+                            ->openable()
96
                             ->directory('logos/document')
92
                             ->directory('logos/document')
97
-                            ->imageResizeMode('contain')
93
+                            ->image()
98
                             ->imageCropAspectRatio('3:2')
94
                             ->imageCropAspectRatio('3:2')
99
                             ->panelAspectRatio('3:2')
95
                             ->panelAspectRatio('3:2')
100
-                            ->panelLayout('integrated')
101
-                            ->removeUploadedFileButtonPosition('center bottom')
102
-                            ->uploadButtonPosition('center bottom')
103
-                            ->uploadProgressIndicatorPosition('center bottom')
104
-                            ->getUploadedFileNameForStorageUsing(
105
-                                static fn (TemporaryUploadedFile $file): string => (string) str($file->getClientOriginalName())
106
-                                    ->prepend(Auth::user()->currentCompany->id . '_'),
107
-                            )
96
+                            ->panelLayout('compact')
108
                             ->extraAttributes([
97
                             ->extraAttributes([
109
-                                'class' => 'aspect-[3/2] w-[9.375rem] max-w-full',
98
+                                'class' => 'es-file-upload document-logo-preview',
110
                             ])
99
                             ])
111
-                            ->acceptedFileTypes(['image/png', 'image/jpeg', 'image/gif']),
100
+                            ->loadingIndicatorPosition('left')
101
+                            ->removeUploadedFileButtonPosition('right'),
112
                         Forms\Components\Checkbox::make('show_logo')
102
                         Forms\Components\Checkbox::make('show_logo')
113
                             ->localizeLabel(),
103
                             ->localizeLabel(),
114
                         Forms\Components\ColorPicker::make('accent_color')
104
                         Forms\Components\ColorPicker::make('accent_color')

+ 8
- 17
app/Filament/Forms/Components/DocumentHeaderSection.php Vedi File

8
 use Filament\Forms\Components\Section;
8
 use Filament\Forms\Components\Section;
9
 use Filament\Forms\Components\Split;
9
 use Filament\Forms\Components\Split;
10
 use Filament\Forms\Components\TextInput;
10
 use Filament\Forms\Components\TextInput;
11
-use Filament\Support\Enums\MaxWidth;
12
-use Illuminate\Support\Facades\Auth;
13
-use Livewire\Features\SupportFileUploads\TemporaryUploadedFile;
14
 
11
 
15
 class DocumentHeaderSection extends Section
12
 class DocumentHeaderSection extends Section
16
 {
13
 {
43
             Split::make([
40
             Split::make([
44
                 Group::make([
41
                 Group::make([
45
                     FileUpload::make('logo')
42
                     FileUpload::make('logo')
46
-                        ->openable()
47
                         ->maxSize(1024)
43
                         ->maxSize(1024)
48
                         ->localizeLabel()
44
                         ->localizeLabel()
49
-                        ->visibility('public')
50
-                        ->disk('public')
45
+                        ->openable()
51
                         ->directory('logos/document')
46
                         ->directory('logos/document')
52
-                        ->imageResizeMode('contain')
47
+                        ->image()
53
                         ->imageCropAspectRatio('3:2')
48
                         ->imageCropAspectRatio('3:2')
54
                         ->panelAspectRatio('3:2')
49
                         ->panelAspectRatio('3:2')
55
-                        ->maxWidth(MaxWidth::ExtraSmall)
56
-                        ->panelLayout('integrated')
57
-                        ->removeUploadedFileButtonPosition('center bottom')
58
-                        ->uploadButtonPosition('center bottom')
59
-                        ->uploadProgressIndicatorPosition('center bottom')
60
-                        ->getUploadedFileNameForStorageUsing(
61
-                            static fn (TemporaryUploadedFile $file): string => (string) str($file->getClientOriginalName())
62
-                                ->prepend(Auth::user()->currentCompany->id . '_'),
63
-                        )
64
-                        ->acceptedFileTypes(['image/png', 'image/jpeg', 'image/gif']),
50
+                        ->panelLayout('compact')
51
+                        ->extraAttributes([
52
+                            'class' => 'es-file-upload document-logo',
53
+                        ])
54
+                        ->loadingIndicatorPosition('left')
55
+                        ->removeUploadedFileButtonPosition('right'),
65
                 ]),
56
                 ]),
66
                 Group::make([
57
                 Group::make([
67
                     TextInput::make('header')
58
                     TextInput::make('header')

+ 12
- 0
app/Models/Accounting/Estimate.php Vedi File

28
 use Illuminate\Database\Eloquent\Relations\BelongsTo;
28
 use Illuminate\Database\Eloquent\Relations\BelongsTo;
29
 use Illuminate\Database\Eloquent\Relations\HasOne;
29
 use Illuminate\Database\Eloquent\Relations\HasOne;
30
 use Illuminate\Support\Carbon;
30
 use Illuminate\Support\Carbon;
31
+use Illuminate\Support\Facades\Storage;
31
 use Livewire\Component;
32
 use Livewire\Component;
32
 
33
 
33
 #[CollectedBy(DocumentCollection::class)]
34
 #[CollectedBy(DocumentCollection::class)]
83
         'total' => MoneyCast::class,
84
         'total' => MoneyCast::class,
84
     ];
85
     ];
85
 
86
 
87
+    protected $appends = [
88
+        'logo_url',
89
+    ];
90
+
91
+    protected function logoUrl(): Attribute
92
+    {
93
+        return Attribute::get(static function (mixed $value, array $attributes): ?string {
94
+            return $attributes['logo'] ? Storage::disk('public')->url($attributes['logo']) : null;
95
+        });
96
+    }
97
+
86
     public function client(): BelongsTo
98
     public function client(): BelongsTo
87
     {
99
     {
88
         return $this->belongsTo(Client::class);
100
         return $this->belongsTo(Client::class);

+ 12
- 0
app/Models/Accounting/Invoice.php Vedi File

34
 use Illuminate\Database\Eloquent\Relations\MorphMany;
34
 use Illuminate\Database\Eloquent\Relations\MorphMany;
35
 use Illuminate\Database\Eloquent\Relations\MorphOne;
35
 use Illuminate\Database\Eloquent\Relations\MorphOne;
36
 use Illuminate\Support\Carbon;
36
 use Illuminate\Support\Carbon;
37
+use Illuminate\Support\Facades\Storage;
37
 use Illuminate\Support\HtmlString;
38
 use Illuminate\Support\HtmlString;
38
 use Livewire\Component;
39
 use Livewire\Component;
39
 
40
 
94
         'amount_due' => MoneyCast::class,
95
         'amount_due' => MoneyCast::class,
95
     ];
96
     ];
96
 
97
 
98
+    protected $appends = [
99
+        'logo_url',
100
+    ];
101
+
102
+    protected function logoUrl(): Attribute
103
+    {
104
+        return Attribute::get(static function (mixed $value, array $attributes): ?string {
105
+            return $attributes['logo'] ? Storage::disk('public')->url($attributes['logo']) : null;
106
+        });
107
+    }
108
+
97
     public function client(): BelongsTo
109
     public function client(): BelongsTo
98
     {
110
     {
99
         return $this->belongsTo(Client::class);
111
         return $this->belongsTo(Client::class);

+ 8
- 0
resources/css/filament/company/theme.css Vedi File

10
 
10
 
11
 @config 'tailwind.config.js';
11
 @config 'tailwind.config.js';
12
 
12
 
13
+.es-file-upload.document-logo > div {
14
+    @apply w-48;
15
+}
16
+
17
+.es-file-upload.document-logo-preview > div {
18
+    @apply w-40;
19
+}
20
+
13
 .fi-in-text-item .group-hover\/item\:underline, .fi-ta-text-item .group-hover\/item\:underline {
21
 .fi-in-text-item .group-hover\/item\:underline, .fi-ta-text-item .group-hover\/item\:underline {
14
     @apply text-primary-600 dark:text-primary-400 font-semibold;
22
     @apply text-primary-600 dark:text-primary-400 font-semibold;
15
 }
23
 }

+ 1
- 1
resources/views/components/company/document-template/logo.blade.php Vedi File

1
 @props([
1
 @props([
2
     'shape' => 'square',
2
     'shape' => 'square',
3
-    'size' => 'md',
3
+    'size' => 'lg',
4
 ])
4
 ])
5
 
5
 
6
 <img {{
6
 <img {{

Loading…
Annulla
Salva