Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
<?php namespace Modules\Clients\Entities;
   
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Prettus\Repository\Traits\PresentableTrait;
use Rutorika\Sortable\SortableTrait;
use Spatie\MediaLibrary\HasMedia\HasMediaTrait;
use Spatie\MediaLibrary\HasMedia\Interfaces\HasMediaConversions;

/**
 * Modules\Clients\Entities\Client
 *
 * @property integer $id
 * @property string $name
 * @property string $url
 * @property integer $position
 * @property \Carbon\Carbon $created_at
 * @property \Carbon\Carbon $updated_at
 * @property string $deleted_at
 * @property-read \Spatie\MediaLibrary\Media $logo
 * @property-read \Illuminate\Database\Eloquent\Collection|\Spatie\MediaLibrary\Media[] $media
 * @method static \Illuminate\Database\Query\Builder|\Modules\Clients\Entities\Client whereId($value)
 * @method static \Illuminate\Database\Query\Builder|\Modules\Clients\Entities\Client whereName($value)
 * @method static \Illuminate\Database\Query\Builder|\Modules\Clients\Entities\Client whereUrl($value)
 * @method static \Illuminate\Database\Query\Builder|\Modules\Clients\Entities\Client wherePosition($value)
 * @method static \Illuminate\Database\Query\Builder|\Modules\Clients\Entities\Client whereCreatedAt($value)
 * @method static \Illuminate\Database\Query\Builder|\Modules\Clients\Entities\Client whereUpdatedAt($value)
 * @method static \Illuminate\Database\Query\Builder|\Modules\Clients\Entities\Client whereDeletedAt($value)
 * @method static \Illuminate\Database\Query\Builder|\Modules\Clients\Entities\Client sorted()
 * @mixin \Eloquent
 */
class Client extends Model implements HasMediaConversions {

    use SoftDeletes,SortableTrait,PresentableTrait, HasMediaTrait;

    protected $fillable = ['name', 'url', 'position'];

   // protected $attributes = ['logo'];

    public function registerMediaConversions()
    {
        $this->addMediaConversion('thumb')
            ->setManipulations(['w'=>180, 'h' => 90, 'fit'=>'crop-top-left', 'fm'=>'png'])
            ->performOnCollections('logo');
    }



    /**
     * @param $value
     * @return bool|\Spatie\MediaLibrary\Media
     */
    public function getLogoAttribute()
    {
        return $this->getFirstMedia('logo');
    }

    /**
     * @param string|\Symfony\Component\HttpFoundation\File\UploadedFile $file
     * @param array $properties
     */
    public function setLogo($file, array $properties = [])
    {
        $media = $this->clearMediaCollection('logo') // clear old medias
            ->addMedia($file) //starting method
        ->preservingOriginal() //middle method
        ->toMediaLibrary('logo'); //finishing method

        $media->manipulations = isset($properties['manipulations']) ? $properties['manipulations'] : [];
        $media->custom_properties = isset($properties['custom']) ? $properties['custom'] : [];
        $media->save();
    }
}