Anons79 Mini Shell

Directory : /home/aplikasiposinfo/.trash/app.2/Http/Controllers/
Upload File :
Current File : /home/aplikasiposinfo/.trash/app.2/Http/Controllers/JabatanController.php

<?php

namespace App\Http\Controllers;

use DB,Session;
use App\Models\Log;
use App\Models\NPA;
use App\Models\Jabatan;
use App\Models\IndukOpd;
use App\Models\UptDaerah;
use App\Models\KategoriNPA;
use App\Models\JenisJabatan;
use Illuminate\Http\Request;
use App\Models\UnitOrganisasi;
use Illuminate\Support\Facades\Auth;
use Yajra\DataTables\Facades\DataTables;
use Illuminate\Support\Facades\Validator;

class JabatanController extends Controller
{
    protected $routeName = 'jabatan';
    protected $viewName = 'jabatan';
    protected $title = 'Jabatan';

    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        // return NPA::whereHas('kategori',function($query){
        //     $query->where('kategori','Industri Besar');
        // })->get();

        $indukOpd = IndukOpd::pluck('nama', 'id');
        if(Auth::user()->roles->first()->name !== "Admin"){
            $indukOpd = IndukOpd::where('id', Auth::user()->induk_opd_id)->pluck('nama', 'id');
        }

        $data=[
            'route'=>$this->routeName,
            'title'=>$this->title,
            'induk_opd_arr' => $indukOpd,
            'jabatan' => Jabatan::get(),
            'jenis_jabatan' => JenisJabatan::pluck('nama', 'id'),
            'unit_organisasi' => UnitOrganisasi::get()
        ];
        // $model = Jabatan::where('induk_opd_id',1)->get();

        // $modelArr = [];

        // $nameArrCheck = [];

        // $idArrCheck = [];

        // foreach ($model as $key => $value) {
        //     if($value->descendants()->count() > 0){
        //         $variable = $value->descendantsAndSelf()->get();
        //         foreach ($variable as $key => $value1) {
        //             # code...
        //             if(!in_array($value1->id, $nameArrCheck)){
        //                     array_push($nameArrCheck, $value1->id);
        //                     array_push($modelArr, $value1);
        //                 }
        //         }
        //     } else {
        //         if($value->descendants()->count() == 0 && !in_array($value->id, $nameArrCheck)){
        //             array_push($modelArr, $value);
        //             array_push($nameArrCheck, $value->id);
        //         }
        //     }
        // }
        // $modelArr = collect((object) $modelArr);
        // dd($modelArr->sortBy('path'));

        return view($this->viewName.'.index')->with($data);
    }

    public function datatable(Request $request){
        $model = Jabatan::where('induk_opd_id', $request->induk_opd)->get();

        $modelArr = [];

        $nameArrCheck = [];

        $idArrCheck = [];

        foreach ($model as $key => $value) {
            if($value->descendants()->count() > 0){
                $variable = $value->descendantsAndSelf()->get();
                foreach ($variable as $key => $value1) {
                    # code...
                    if(!in_array($value1->id, $nameArrCheck)){
                            array_push($nameArrCheck, $value1->id);
                            array_push($modelArr, $value1);
                        }
                }
            } else {
                if($value->descendants()->count() == 0 && !in_array($value->id, $nameArrCheck)){
                    array_push($modelArr, $value);
                    array_push($nameArrCheck, $value->id);
                }
            }
        }
        $modelArr = collect((object) $modelArr);
        $modelArr = $modelArr->sortBy('path');
        $datatables = DataTables::of($modelArr)
        ->addColumn('nama', function($modelArr){
            $char = $modelArr->level * $modelArr->level * 4;
            $charRes = $char . 'px';
           return "<span style='padding-left:$charRes'>$modelArr->nama</span>";
        })
        ->addColumn('unit_organisasi',function($model){
            if($model->unitOrganisasi){
                return $model->UnitOrganisasi->nama;
            } else {
                return "";
            }
        })->addColumn('jenis_jabatan', function($model){
            if($model->jenisJabatan){
                return $model->jenisJabatan->nama;
            } else{
                return "";
            }
        })
        ->addColumn('action', function($model){
            $route = 'jabatan';
            $data = $model;
            return view('layouts.includes.table-action-jabatan',compact('data','route'));
        })
        ->rawColumns(['nama']);
        return $datatables->make(true);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $data=[
            'route'=>$this->routeName,
            'title'=>$this->title,
            'kategori'=>KategoriNPA::pluck('kategori','id'),
            'wilayah'=>UptDaerah::pluck('nama_daerah','id'),
        ];

        return view($this->viewName.'.create')->with($data);
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $rules = [];

        DB::beginTransaction();
        try {
            $level = null;

            if($request->induk_jabatan_id == 0){
                $level = 0;
            } else {
                $level = Jabatan::where('id', $request->induk_jabatan_id)->first()->level + 1;
            }


            $npa = Jabatan::create([
                'nama' => $request->nama,
                'level' => $level,
                'bezetting' => $request->bezetting,
                'jenis_jabatan_id' => $request->jenis_jabatan_id,
                'induk_opd_id' => $request->induk_opd_id,
                'unit_organisasi_id' => $request->unit_organisasi_id,
                'induk_jabatan_id' => $request->induk_jabatan_id,
            ]);
            Log::create([
                'pengguna' => Auth::user()->nama,
                'kegiatan' => "Menambah Data Jabatan"
            ]);
            DB::commit();

            return redirect(route($this->routeName.'.index'))->with(['success'=>'Berhasil Menambah Data Jabatan']);

        } catch (\Exception $e) {
            DB::rollback();
            return redirect()->back()->with(['error'=>'Gagal Menambah Data Pembayaran : '.$e->getMessage()])->withErrors($request->all());
        }
    }

    /**
     * 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)
    {   
        // return NPA::findOrFail($id)->wilayah->pluck('id');
        $data=[
            'npa'=>NPA::findOrFail($id),
            'route'=>$this->routeName,
            'title'=>$this->title,
            'kategori'=>KategoriNPA::pluck('kategori','id'),
            'wilayah'=>UptDaerah::pluck('nama_daerah','id'),
        ];

        return view($this->viewName.'.edit')->with($data);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        $rules = [];
        $jabatan = Jabatan::findOrFail($id);
        // if ($kategori == 'BUMD' or $kategori == 'BUMN') {
        //     $rules = [
        //         'harga'=>'required|numeric',
        //         'kategori_id'=>'required',
        //     ];
        // }else{
        //     $rules = [
        //         'harga'=>'required|numeric',
        //         'kategori_id'=>'required',
        //         'wilayah_id'=>'required',
        //         'volume_awal'=>'required|numeric',
        //         'volume_akhir'=>'required|numeric',
        //     ];
        // }
        // $request->validate($rules,[
        //     'harga.required'=>'harga tidak boleh kosong',
        //     'harga.numeric'=>'harga harus dalam bentuk angka',
        //     'kategori_id.required'=>'ketegori npa tidak boleh kosong',
        //     'wilayah_id.required'=>'wilayah tidak boleh kosong',
        //     'volume_awal.required'=>'batas bawah volume tidak boleh kosong',
        //     'volume_awal.numeric'=>'range volume awal harus dalam bentuk angka',
        //     'volume_akhir.required'=>'batas atas volume tidak boleh kosong',
        //     'volume_akhir.numeric'=>'batas volume range harus dalam bentuk angka',
        // ]);

        DB::beginTransaction();
        try {
            if($request->induk_jabatan_id == 0){
                $level = 0;
            } else {
                $level = Jabatan::where('id', $request->induk_jabatan_id)->first()->level + 1;
            }
            $result = $jabatan->update([
                'nama' => $request->nama,
                'level' => $level,
                'bezetting' => $request->bezetting,
                'unit_organisasi_id' => $request->unit_organisasi_id,
                'induk_jabatan_id' => $request->induk_jabatan_id,
                'jenis_jabatan_id' => $request->jenis_jabatan_id,
            ]);
            if(count($jabatan->descendants) > 0){
               foreach ($jabatan->descendants as $key => $value) {
                $value->update([
                    'level' => $level + 1
                ]);
               }
            }
            DB::commit();

            return redirect(route($this->routeName.'.index'))->with(['success'=>'Berhasil Mengubah Jabatan']);

        } catch (\Exception $e) {
            DB::rollback();
            return redirect()->back()->with(['error'=>'Gagal Mengubah Data NPA : '.$e->getMessage()])->withErrors($request->all());
        }
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        DB::beginTransaction();
        try {
            $jabatan = Jabatan::findOrFail($id);
            if(count($jabatan->descendants) > 0){
                return redirect(route($this->routeName.'.index'))->with(['error'=>'Data Memiliki Anak Data']);    
            } else{
                $jabatan->delete();
            }
            DB::commit();
            return redirect(route($this->routeName.'.index'))->with(['success'=>'Berhasil Menghapus Data Jabatan']);
        } catch (\Exception $e) {
            DB::rollback();
            return redirect()->back()->with(['error'=>'Gagal Menghapus Data Jabatan : '.$e->getMessage()]);
        }
    }
    public function api($id){

        $unitOrganisasi = UnitOrganisasi::where('induk_opd_id', $id)->get();

        $modelArr = [];

        $nameArrCheck = [];

        $idArrCheck = [];
        $model = Jabatan::where('induk_opd_id', $id)->get();

        foreach ($model as $key => $value) {
            if($value->descendants()->count() > 0){
                $variable = $value->descendantsAndSelf()->orderBy('path')->get();
                foreach ($variable as $key => $value1) {
                    # code...
                    if(!in_array($value1->id, $nameArrCheck)){
                            array_push($nameArrCheck, $value1->id);
                            array_push($modelArr, $value1);
                        }
                }
            } else {
                if($value->descendants()->count() == 0 && !in_array($value->id, $nameArrCheck)){
                    array_push($modelArr, $value);
                    array_push($nameArrCheck, $value->id);
                }
            }
        }
        $modelArr = collect((object) $modelArr);
        $modelArr = $modelArr->toArray();
        $jenisJabatan = JenisJabatan::all();
        
        if(count($unitOrganisasi) > 0){
            return response()->json([
                'status' => 'success',
                'data' => $unitOrganisasi,
                'dataModel' => $modelArr,
                'jenisJabatan' => $jenisJabatan
            ]);
        } else {
            return response()->json([
                'status' => 'failure',
                'data' => "Kesalahan terjadi saat mengambil data unit organisasi"
            ]);
        }
    }
    public function apiEdit($id){
        $jabatan = Jabatan::where('id', $id)->first();
        
        $modelArr = [];

        $nameArrCheck = [];

        $idArrCheck = [];
        $model = Jabatan::where('induk_opd_id', $jabatan->induk_opd_id)->get();

        foreach ($model as $key => $value) {
            if($value->descendants()->count() > 0){
                $variable = $value->descendantsAndSelf()->orderBy('path')->get();
                foreach ($variable as $key => $value1) {
                    # code...
                    if(!in_array($value1->id, $nameArrCheck)){
                            array_push($nameArrCheck, $value1->id);
                            array_push($modelArr, $value1);
                        }
                }
            } else {
                if($value->descendants()->count() == 0 && !in_array($value->id, $nameArrCheck)){
                    array_push($modelArr, $value);
                    array_push($nameArrCheck, $value->id);
                }
            }
        }
        $modelArr = collect((object) $modelArr);
        $modelArr = $modelArr->toArray();
        $unitOrganisasi = UnitOrganisasi::where('induk_opd_id', $jabatan->induk_opd_id)->get();
        $jenisJabatan = JenisJabatan::all();

        return response()->json([
            'status' => 'success',
            'data' => $jabatan,
            'unitOrganisasi' => $unitOrganisasi,
            'dataModel' => $modelArr,
            'jenisJabatan' => $jenisJabatan
        ]);
    }
}

Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]