GaleriController.php 6.31 KB
<?php

namespace App\Http\Controllers\Backend;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Yajra\DataTables\Facades\DataTables;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
use App\Models\Album;
use App\Models\Galeri;


class GaleriController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        return view('backend.galeri.index');
    }

    public function data(Request $request)
    {
        if ($request->ajax()) {
            $galeri  = Galeri::with('album') -> latest('album_id');
            return Datatables::of($galeri)

            // $galeri      = Galeri::all();
            // return Datatables::of($galeri)

            ->addIndexColumn()

                ->addColumn('lampiran', function ($galeri) {
                    return '<a href="' . $galeri->file_url . '">Download</a>';
                })

                ->addColumn(
                    'action',
                    '<center>
                              <a class="edit ubah" data-toggle="tooltip" data-placement="top" title="Edit" galeri-id="{{ $id }}">
                                  <i class="fa fa-pencil text-warning"></i>
                              </a>&nbsp &nbsp
                              <a class="delete hidden-xs hidden-sm hapus" data-toggle="tooltip" data-placement="top" title="Delete" galeri-id="{{ $id }}">
                                  <i class="fa fa-trash text-danger"></i>
                              </a>
                            </center>'
                )
                ->rawColumns(['action', 'lampiran'])->make(true);
        } else {
            exit("Not an AJAX request -_-");
        }
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $album_id = Album::pluck('nama_album', 'id');
        return view('backend.galeri.tambah', compact('album_id'));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'album_id'             => 'required',
        ]);
        if ($validator->fails()) {
            $respon = array('status' => false, 'pesan' => $validator->messages());
        } else {
            $path       = NULL;
            $namafile   = NULL;

            if ($request->hasFile('lampiran')) {
                $file = Storage::putFile('galeri/' . date('Y') . '/' . date('m') . '/' . date('d'), $request->file('lampiran'));

                $request->request->add([
                    'gambar'  =>  [
                        'disk'      => config('filesystems.default'),
                        'target'    => $file,
                    ],
                ]);
            }
            if (Galeri::create($request->all())) {
                $respon = array('status' => true, 'pesan' => ['msg' => 'Data berhasil disimpan']);
            } else {
                $respon = array('status' => false, 'pesan' => ['msg' => 'Data gagal disimpan']);
            }
        }
        return response()->json($respon);
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        $album_id = Album::pluck('nama_album', 'id');
        $galeri = Galeri::find($id);
        return view('backend.galeri.ubah', compact('album_id', 'galeri'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        $validator = Validator::make($request->all(), [
            'album_id'        => 'required',
            // 'gambar'        => 'required',
            // 'keterangan'    => 'required',

        ]);

        if ($validator->fails()) {
            $respon = array('status' => false, 'pesan' => $validator->messages());
        } else {
            $galeri = Galeri::find($id);
            if ($request->hasFile('lampiran')) {
                $galeri->hapus_lampiran();
                $file = Storage::putFile('galeri/' . date('Y') . '/' . date('m') . '/' . date('d'), $request->file('lampiran'));
                $request->request->add([
                    'gambar'  =>  [
                        'disk'      => config('filesystems.default'),
                        'target'    => $file,
                    ],
                ]);
            }
            if (Galeri::find($id)->update($request->all())) {
                $respon = array('status' => true, 'pesan' => ['msg' => 'Data berhasil diubah']);
            } else {
                $respon = array('status' => false, 'pesan' => ['msg' => 'Data gagal diubah']);
            }
        }
        return response()->json($respon);
    }

    public function hapus($id)
    {
        $galeri = Galeri::find($id);
        return view('backend.galeri.hapus', compact('galeri'));
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        $galeri = Galeri::find($id);
        if ($galeri->delete()) {
            $respon = array('status' => true, 'pesan' => ['msg' => 'Data berhasil dihapus']);
        } else {
            $respon = array('status' => false, 'pesan' => ['msg' => 'Data gagal dihapus']);
        }
        return response()->json($respon);
    }

    public function download($id, $gbr)
    {
        $galeri = Galeri::find($id);
        // dd($galeri);
        return $galeri->file_download;
    }

    public function getImage($id)
    {
        $gambar = Galeri::find($id);
        $path = $gambar->file_target;
        // dd($path);
        if (!Storage::exists($path)) {
            abort(404);
        }
        return Storage::response($path);
    }
}