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/users-module / Services / UsersDatatable.php
Size: Mime:
<?php

namespace Modules\Users\Services;

use Illuminate\Contracts\View\Factory;
use Illuminate\Support\Facades\Lang;
use Modules\Users\Contracts\Repositories\UserRepository;
use Yajra\Datatables\Datatables;
use Yajra\Datatables\Services\DataTable;

class UsersDataTable extends DataTable
{
    // protected $printPreview  = 'path-to-print-preview-view';
    // protected $exportColumns = ['id', 'name'];
    // protected $printColumns  = '*';

    /**
     * @var UserRepository
     */
    protected $repository;

    /**
     * Medico constructor.
     * @param UserRepository $repository
     */
    public function __construct(UserRepository $repository, Datatables $datatables, Factory $viewFactory)
    {
        parent::__construct($datatables, $viewFactory);
        $this->repository = $repository;
    }

    /**
     * Display ajax response.
     *
     * @return \Illuminate\Http\JsonResponse
     */
    public function ajax()
    {
        return $this->datatables
            ->of($this->query())
            ->setTransformer(config('users.transformer.datatable'))
            ->make(true);
    }

    /**
     * Get the query object to be processed by datatables.
     *
     * @return \Illuminate\Database\Query\Builder|\Illuminate\Database\Eloquent\Builder
     */
    public function query()
    {
        $repository = $this->repository->getModel()
            ->join('role_user', 'role_user.user_id', '=', 'users.id')
            ->where('role_user.role_id', 1)
            ->select(config('users.datatable.query_select'));

        return $this->applyScopes($repository);
    }

    /**
     * Optional method if you want to use html builder.
     *
     * @return \Yajra\Datatables\Html\Builder
     */
    public function html()
    {
        $columns = config('users.datatable.builder.select');

        foreach ($columns as &$c) {
            if (isset($c['title']) and Lang::has($c['title'])) {
                $c['title'] = trans($c['title']);
            }
        }

        return $this->builder()
            ->columns($columns)
            ->addAction([
                'title' => trans('users::users.list.columns.action'),
                'sClass' => 'dt-actions'
            ])
            ->ajax('')
            ->parameters(config('users.datatable.builder.parameters'));
    }
}