Edit File: DelegateUpdate.php
<?php namespace App\Models; use App\Services\Auth\AuthService; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class DelegateUpdate extends BaseModel { use HasFactory; const IMAGEPATH = 'delegates'; protected $guarded = ['id', 'created_at', 'updated_at']; public function delegate() { return $this->belongsTo(Delegate::class); } public function city() { return $this->belongsTo(City::class); } public function getImageAttribute(): string { if ($this->attributes['image']) { $image = $this->getImage($this->attributes['image'], self::IMAGEPATH); } else { $image = ''; } return $image; } public function setLicencsesCertificateAttribute($value): void { $this->attributes['licencses_certificate'] = $this->storeFiles($value, isset($this->attributes['licencses_certificate']) ? $this->attributes['licencses_certificate'] : '[]'); } protected function storeFiles($val, $attribute) { $authService = new AuthService(); $existingFiles = $attribute ?? '[]'; $existingFiles = json_decode($existingFiles, true); $newFiles = $authService->uploadMultiImages($val, self::IMAGEPATH); $mergedFiles = array_merge($newFiles, array_diff($existingFiles, array_keys($val))); return json_encode($mergedFiles); } public function setIdentityImagesAttribute($value): void { $this->attributes['identity_images'] = $this->storeFiles($value, isset($this->attributes['identity_images']) ? $this->attributes['identity_images'] : '[]'); } public function setCarImagesAttribute($value): void { $this->attributes['car_images'] = $this->storeFiles($value, isset($this->attributes['car_images']) ? $this->attributes['car_images'] : '[]'); } public function getCarImagesAttribute() { $images = []; foreach (json_decode($this->attributes['car_images'], true) ?? [] as $key => $image) { $images[$key]['path'] = $this->getImage($image, self::IMAGEPATH); $images[$key]['name'] = $image; } return $images; } public function getIdentityImagesAttribute(): array { $images = []; foreach (json_decode($this->attributes['identity_images'], true) ?? [] as $key => $image) { $images[$key]['path'] = $this->getImage($image, self::IMAGEPATH); $images[$key]['name'] = $image; } return $images; } public function getLicencsesCertificateAttribute(): array { $images = []; foreach (json_decode($this->attributes['licencses_certificate'], true) ?? [] as $key => $image) { $images[$key]['path'] = $this->getImage($image, self::IMAGEPATH); $images[$key]['name'] = $image; } return $images; } public function setNeighborhoodsAttribute($value) { $this->attributes['neighborhoods'] = is_array($value) ? json_encode($value) : null; } public function getNeighborhoodsAttribute() { return json_decode($this->attributes['neighborhoods'], true); } }
Back to File Manager