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    
webbingbrasil/courses-module / Repositories / Eloquent / CourseRepositoryEloquent.php
Size: Mime:
<?php

namespace Modules\Courses\Repositories\Eloquent;

use Modules\Core\Repositories\CoreRepository;
use Modules\Courses\Contracts\Repositories\CourseRepository;
use Modules\Courses\Entities\Course as Model;
use Modules\Courses\Repositories\Criteria\ActiveCriteria;

/**
 * Class CourseRepositoryEloquent
 * @package namespace App\Repositories\Eloquent;
 */
class CourseRepositoryEloquent extends CoreRepository implements CourseRepository
{
    /**
     * Specify Model class name
     *
     * @return string
     */
    public function model()
    {
        return Model::class;
    }

    /**
     * Boot up the repository, pushing criteria
     */
    public function all($columns = ['*'])
    {
        $this->pushCriteria(app(ActiveCriteria::class));
        return parent::all($columns);
    }

    public function findWithSlides($id){
        $this->applyCriteria();
        $this->applyScope();
        $model = $this->model->with(['slides' => function($query){
            /** @var \Illuminate\Database\Query\Builder $query */
            $query->orderBy('order', 'asc');
        }])->findOrFail($id);
        $this->resetModel();
        return $this->parserResult($model);
    }

    public function countActive()
    {
        return $this->pushCriteria(app(ActiveCriteria::class))->count();
    }
}