67 lines
2.1 KiB
PHP
67 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace App\Providers;
|
|
|
|
use App\Livewire\FileUpload;
|
|
use App\Livewire\ImageUploader;
|
|
use App\Livewire\PdfViewer;
|
|
use App\Livewire\ProjectShow;
|
|
use App\Livewire\Toolbar;
|
|
use App\View\Components\Multiselect;
|
|
use App\Services\ProjectCodeService;
|
|
use App\Services\ProjectCodeValidator;
|
|
|
|
use Illuminate\Support\ServiceProvider;
|
|
use Illuminate\Support\Facades\Blade;
|
|
use Illuminate\Support\Facades\Validator;
|
|
use Livewire\Livewire;
|
|
|
|
class AppServiceProvider extends ServiceProvider
|
|
{
|
|
|
|
/**
|
|
* Register any application services.
|
|
*/
|
|
public function register(): void
|
|
{
|
|
// Registrar el Service
|
|
$this->app->singleton(ProjectCodeService::class, function ($app) {
|
|
return new ProjectCodeService(new ProjectCodeValidator([]));
|
|
});
|
|
|
|
// O si prefieres, registrar el validador por separado
|
|
$this->app->bind(ProjectCodeValidator::class, function ($app, $params) {
|
|
// $params[0] contendría los datos del proyecto
|
|
return new ProjectCodeValidator($params[0] ?? []);
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Bootstrap any application services.
|
|
*/
|
|
public function boot(): void
|
|
{
|
|
// Configuración de componentes Blade
|
|
Blade::componentNamespace('App\\View\\Components', 'icons');
|
|
Blade::component('multiselect', Multiselect::class);
|
|
|
|
// Registro de componentes Livewire
|
|
Livewire::component('project-show', ProjectShow::class);
|
|
Livewire::component('file-upload', FileUpload::class);
|
|
Livewire::component('toolbar', Toolbar::class);
|
|
Livewire::component('image-uploader', ImageUploader::class);
|
|
Livewire::component('pdf-viewer', PdfViewer::class);
|
|
|
|
// Validación personalizada
|
|
Validator::extend('max_upload_size', function ($attribute, $value, $parameters, $validator) {
|
|
$maxSize = env('MAX_UPLOAD_SIZE', 51200); // 50MB por defecto
|
|
$totalSize = array_reduce($value, function($sum, $file) {
|
|
return $sum + $file->getSize();
|
|
}, 0);
|
|
|
|
return $totalSize <= ($maxSize * 1024);
|
|
});
|
|
|
|
}
|
|
}
|