PostRepository.php 3.48 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
<?php

namespace App\Repositories\Webprofile;

use App\Models\Webprofile\Posts;
use App\Repositories\Repository;
use DataTables;

class PostRepository extends Repository
{
    protected $model;

    public function __construct(Posts $model)
    {
        $this->model = $model;
    }

    public function get($with = null, $slug = null, $orderBy = null)
    {
        return $this->model
            ->when($with, function ($query) use ($with) {
                return $query->with($with);
            })
            ->when($slug, function ($query) use ($slug) {
                return $query->where('slug', $slug);
            })
            ->when($orderBy, function ($query) use ($orderBy) {
                return $query->orderBy($orderBy[0], $orderBy[1]);
            })
            ->get();
    }

33 34 35 36 37 38 39 40 41 42 43 44
    /**
     * Custom Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store($request)
    {
        $request['userid_created'] = auth()->user()->id;
        return $this->model->create($request);
    }

45 46 47 48 49
    public function datatable($data)
    {
        return DataTables::of($data)
            ->addIndexColumn()
            ->addColumn('action', function ($row) {
50
                $btn = '<a href="' . url('/webprofile/posts/' . $row->id . '/edit') . '" data-toggle="tooltip"  data-id="' . $row->id . '" data-original-title="' . trans('label.edit') . '" class="edit btn btn-warning btn-round btn-sm edit">' . trans('label.edit') . '</a>';
51

52
                $btn = $btn . ' <a href="javascript:void(0)" data-toggle="tooltip"  data-id="' . $row->id . '" data-original-title="' . trans('label.delete') . '" class="btn btn-danger btn-round btn-sm delete">' . trans('label.delete') . '</a>';
53 54 55 56 57 58 59 60 61 62 63 64 65

                $btn = $btn . '<br>';

                return $btn;
            })
            ->addColumn('status', function ($row) {
                if ($row->is_active == true) {
                    $str = '<div style="color: green;"><i class="fa fa-check"></i></div>';
                } else {
                    $str = '<div style="color: red;"><i class="fa fa-times"></i></div>';
                }
                return $str;
            })
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
            ->addColumn('category', function ($row) {
                $str = $row->rCategory->name;
                
                return $str;
            })
            ->addColumn('post_date', function ($row) {
                $str = '';

                if($row->post_status == 1) {
                    $str .= '<div style="color: green;">' . trans('label.publish') . '</div>';
                }

                if($row->post_status == 0) {
                    $str .= '<div style="color: red;">' . trans('label.draft') . '</div>';
                }

                $str .= Date('d-m-Y', strtotime($row->post_date));
                
                return $str;
            })
            ->addColumn('sum', function ($row) {
                $str = trans('label.viewer') . ' : ' . $row->viewer . '<br>';
                $str .= trans('label.command') . ' : ' . $row->comment_count;
                
                return $str;
            })
92 93 94 95 96 97 98
            ->addColumn('title', function ($row) {
                $str = $row->title . '<br>';
                $str .= '<i style="color: blue;">' . $row->rEn['title'] . '</i>';

                return $str;
            })
            ->rawColumns(['action', 'status', 'category', 'post_date', 'sum', 'title'])
99 100 101
            ->make(true);
    }
}