Edit File: Delegate.php
<?php namespace App\Models; use App\Services\Auth\AuthService; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\MorphOne; class Delegate extends AuthBaseModel { use HasFactory; const IMAGEPATH = 'delegates'; protected $fillable = [ 'name', 'country_code', 'phone', 'email', 'image', 'avg_rate', 'active', 'is_blocked', 'is_approved', 'is_available_to_recieve_orders', 'car_plat_number', 'car_images', 'licencses_certificate', 'identity_images', 'lang', 'is_notify', 'code', 'code_expire', 'lat', 'lng', 'map_desc', 'city_id', ]; protected $casts = [ 'avg_rate' => 'double', 'active' => 'boolean', 'is_blocked' => 'boolean', 'is_approved' => 'boolean', 'is_available_to_recieve_orders' => 'boolean', 'is_notify' => 'boolean', 'code_expire' => 'datetime', ]; 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 orders(): HasMany { return $this->hasMany(Order::class, 'delegate_id', 'id'); } public function neighborhoods(): BelongsToMany { return $this->belongsToMany(Neighborhood::class, 'delegate_neighborhood', 'delegate_id', 'neighborhood_id'); } public function bankAccount(): MorphOne { return $this->morphOne(BankAccount::class, 'bankable'); } public function city(): BelongsTo { return $this->belongsTo(City::class, 'city_id', 'id'); } public function ignoredOrders() { return $this->belongsToMany(Order::class, 'ignored_orders', 'delegate_id', 'order_id'); } public function orderTransactions(): HasMany { return $this->hasMany(OrderTransaction::class); } public function profileUpdates() { return $this->hasMany(DelegateUpdate::class); } }
Back to File Manager