main
Ilham Wara Nugroho 2026-04-29 10:23:57 +07:00
parent a3326d683d
commit 7e938776ff
53 changed files with 247 additions and 91 deletions

View File

@ -55,7 +55,7 @@ if (!function_exists('getRoles')) {
$role = [];
}else{
$roleDefault = array($user->ms_group_id);
$rolesId = json_decode($user->roles_id);
$rolesId = @$user->roles_id ? json_decode($user->roles_id) : [];
$role = Group::whereIn('MsGroupId',array_unique(array_merge($rolesId,$roleDefault)))->get();
}

View File

@ -8,6 +8,8 @@ use Illuminate\Http\Request;
use Illuminate\Support\Facades\File;
use Carbon\Carbon;
use App\Models\LembarPengesahan;
use App\Models\KegiatanAdaptasi;
use App\Models\KegiatanMitigasi;
class LembarPengesahanController extends Controller
{
@ -42,13 +44,18 @@ class LembarPengesahanController extends Controller
$_data = [];
foreach ($data as $key => $row) {
$btn = '<a href="' . url('pengesahan/update/').'/'.encode_id($row->LembarPengesahanId). '" class="btn btn-sm w-100 mb-1 btn-primary">Edit</a>';
$btn .= ' <form action="' . route($this->route.'.destroy', $row->LembarPengesahanId) . '" method="POST" style="display: inline;" class="delete-form">';
$btn .= csrf_field();
$btn .= method_field('DELETE');
$btn .= '<button type="button" class="btn btn-sm btn-danger delete-button remove_data">Hapus</button>';
$btn .= '</form>';
if($row->status == 0 || $row->status == 2){
$btn = '<a href="' . url('pengesahan/update/').'/'.encode_id($row->LembarPengesahanId). '" class="btn btn-sm w-100 mb-1 btn-primary">Edit</a>';
$btn .= '<a href="#" data-href="' . url('pengesahan/delete/').'/'.encode_id($row->LembarPengesahanId). '" class="btn btn-sm w-100 mb-1 btn-danger remove_data">Hapus</a>';
}
if(auth()->user()->ms_group_id == 1){
if($row->status == 0){
$btn .= '<a href="#" data-href="' . url('pengesahan/verifikasi/').'/'.encode_id($row->LembarPengesahanId). '" class="btn btn-sm w-100 mb-1 btn-success verifikasi">Verifikasi</a>';
$btn .= '<a href="#" data-href="' . url('pengesahan/tolak-verifikasi/').'/'.encode_id($row->LembarPengesahanId). '" class="btn btn-sm w-100 mb-1 btn-warning tolak-verifikasi">Tolak Verifikasi</a>';
}
}
$download = '<a class="btn btn-primary btn-sm w-100" href="'.asset('uploads/'.$row->file).'">Download File</a>';
@ -59,17 +66,26 @@ class LembarPengesahanController extends Controller
$datanya .= '<span class="badge bg-danger w-100">'.$datasek.'</span><br>';
}
}elseif($row->type == 'adaptasi'){
$datanya .= '';
$form = json_decode($row->form_id);
foreach($form as $datasek){
$datanya .= '<span class="badge bg-danger w-100">'.KegiatanAdaptasi::where('id',$datasek)->value('nama_kegiatan').'</span><br>';
}
}elseif($row->type == 'mitigasi'){
$datanya .= '';
$form = json_decode($row->form_id);
foreach($form as $datasek){
$datanya .= '<span class="badge bg-danger w-100">'.KegiatanMitigasi::where('id',$datasek)->value('nama_kegiatan').'</span><br>';
}
}
if ($row->row_status == 1) {
$status = '<span class="badge bg-success">Aktif</span>';
} else {
$status = '<span class="badge bg-danger">Tidak Aktif</span>';
}
if ($row->status == 1) {
$status = '<span class="badge bg-success">Sudah Verifikasi</span>';
} elseif ($row->status == 2) {
$status = '<span class="badge bg-danger">Verifikasi Ditolak</span>';
} else {
$status = '<span class="badge bg-danger">Belum Di Verifikasi</span>';
}
$_data[] = [
'no' => $key+1,
@ -168,6 +184,9 @@ class LembarPengesahanController extends Controller
$uploaded = $file->move($path, $newFilename);
$ag->file = $filePathTim;
}
if(auth()->user()->ms_group_id != 1){
$ag->status = 0;
}
$ag->save();
}else{
$ag = new LembarPengesahan;
@ -209,7 +228,7 @@ class LembarPengesahanController extends Controller
}
$ag->file = $filePathTim;
$ag->status = 1;
$ag->status = 0;
$ag->save();
}
@ -238,6 +257,31 @@ class LembarPengesahanController extends Controller
return view($this->template.'.form', $data);
}
public function verifikasi($id)
{
$ag = LembarPengesahan::find(decode_id(@$id));
$ag->status = 1;
$ag->save();
return redirect()->route($this->route.'.index')->with('success', 'Lembar Pengesahan berhasil diupdate.');
}
public function tolakverifikasi($id)
{
$ag = LembarPengesahan::find(decode_id(@$id));
$ag->status = 2;
$ag->save();
return redirect()->route($this->route.'.index')->with('success', 'Lembar Pengesahan berhasil diupdate.');
}
public function delete($id)
{
$ag = LembarPengesahan::find(decode_id(@$id));
$ag->delete();
return redirect()->route($this->route.'.index')->with('success', 'Lembar Pengesahan berhasil diupdate.');
}
/**
* Update the specified resource in storage.
*/

View File

@ -10,6 +10,7 @@ use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use App\Models\User;
use App\Models\Master\Group;
use App\Models\Agency;
class UserController extends Controller
{
@ -88,9 +89,12 @@ class UserController extends Controller
{
try {
$keyId = decode_id($request->secure_id);
if(@$request->secure_id){
$keyId = decode_id($request->secure_id);
if(@$keyId){
Validator::make($request->all(), [
'email' => 'required|unique:users,email,'.$keyId.'|email',
'name' => 'required|max:50',
@ -106,12 +110,15 @@ class UserController extends Controller
$user = User::find($keyId);
$user->email = $request->email;
$user->username = $request->username;
$user->ms_agency_id = decode_id($request->agency);
$user->ms_group_id = decode_id($request->group);
if(@$request->password){
$user->password = Hash::make($request->password);
}
$user->name = $request->name;
$user->roles_id = json_encode($request->roles_id);
if(@$request->roles_id){
$user->roles_id = json_encode($request->roles_id);
}
$user->save();
}else{
Validator::make($request->all(), [
@ -134,20 +141,16 @@ class UserController extends Controller
$user->password = Hash::make($request->password);
}
$user->name = $request->name;
$user->roles_id = json_encode($request->roles_id);
if(@$request->roles_id){
$user->roles_id = json_encode($request->roles_id);
}
$user->save();
}
return redirect()->back()->with([
'message' => 'Berhasil update data',
'type' => 'success',
]);
return redirect()->back()->with('success', 'Berhasil update data');
} catch (Exception $e) {
return redirect()->back()->with([
'message' => $e->getMessage(),
'type' => "error"
]);
return redirect()->back()->with('error', $e->getMessage());
}
}
@ -181,6 +184,7 @@ class UserController extends Controller
$data['title'] = $this->title;
$data['route'] = $this->route;
$data['keyId'] = $id;
$data['agency'] = Agency::all();
$data['item'] = User::where('id',$keyId)->first();
$data['group'] = Group::where('MsGroupId','!=',1)->get();
return view($this->template.'.form',$data);

View File

@ -82,9 +82,10 @@ class AgencyController extends Controller
*/
public function store(Request $request)
{
$request->validate([
'name' => 'required|string|max:255',
'scope' => 'nullable|string',
'name' => 'required|max:255',
'scope' => 'string',
]);
try {

View File

@ -2,13 +2,14 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Concerns\HasUuids;
class Agency extends SigdModel
{
use HasUuids;
protected $table = 'agency';
protected $fillable = [
'id', 'name', 'scope', 'row_status', 'created_by', 'updated_by', 'user_group_id'
];
protected $guarded = [];
public function user()
{

View File

@ -14,9 +14,7 @@ class User extends Authenticatable implements MustVerifyEmail
{
use HasFactory, Notifiable;
protected $fillable = [
'name', 'email', 'password', 'user_group_id', 'agency_id', 'active_status',
];
protected $guarded = [];
protected $hidden = [
'password', 'remember_token',

View File

@ -1,6 +1,6 @@
@extends('layouts.master')
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -3,7 +3,7 @@
@section('css')
@endsection
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -1,6 +1,6 @@
@extends('layouts.master')
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -3,7 +3,7 @@
@section('css')
@endsection
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -1,6 +1,6 @@
@extends('layouts.master')
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -3,7 +3,7 @@
@section('css')
@endsection
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -1,6 +1,6 @@
@extends('layouts.master')
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -3,7 +3,7 @@
@section('css')
@endsection
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -1,6 +1,6 @@
@extends('layouts.master')
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -3,7 +3,7 @@
@section('css')
@endsection
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -1,6 +1,6 @@
@extends('layouts.master')
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -3,7 +3,7 @@
@section('css')
@endsection
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -1,6 +1,6 @@
@extends('layouts.master')
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -3,7 +3,7 @@
@section('css')
@endsection
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -1,6 +1,6 @@
@extends('layouts.master')
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -3,7 +3,7 @@
@section('css')
@endsection
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -1,6 +1,6 @@
@extends('layouts.master')
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -1,6 +1,6 @@
@extends('layouts.master')
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -3,7 +3,7 @@
@section('page-css')
@endsection
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -1,6 +1,6 @@
@extends('layouts.master')
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">
@ -50,6 +50,23 @@
</div>
</div>
</div>
<div class="col-12 mb-3">
<div class="form-group">
<label class="col-xl-12 form-label" for="fname">Agency</label>
<div class="col-12 ">
<select name="agency" class="form-control @error('agency') is-invalid @enderror" required>
<option value="">-Pilih Agency User-</option>
@foreach($agency as $data_agency)
<option {{@$item->ms_agency_id == $data_agency->id ? 'selected' : ''}} value="{{encode_id($data_agency->id)}}">{{$data_agency->name}}</option>
@endforeach
</select>
@error('agency')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
</div>
</div>
</div>
<div class="col-12 mb-3">
<div class="form-group">
@ -75,7 +92,7 @@
<?php
$selected = json_decode(@$item->roles_id);
?>
<select name="roles_id[]" class="form-control @error('roles_id') is-invalid @enderror select2" multiple required>
<select name="roles_id[]" class="form-control @error('roles_id') is-invalid @enderror select2" multiple>
<option value="">-Pilih Role User-</option>
@foreach($group as $data_group)
<option {{@$selected ? in_array($data_group->MsGroupId,@$selected) ? 'selected' : '' : ''}} value="{{$data_group->MsGroupId}}">{{$data_group->name}}</option>

View File

@ -3,7 +3,7 @@
@section('css')
@endsection
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -3,7 +3,7 @@
@section('css')
@endsection
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -3,7 +3,7 @@
@section('css')
@endsection
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -1,6 +1,6 @@
@extends('layouts.master')
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -3,7 +3,7 @@
@section('css')
@endsection
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -1,6 +1,6 @@
@extends('layouts.master')
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -3,7 +3,7 @@
@section('css')
@endsection
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -1,6 +1,6 @@
@extends('layouts.master')
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -3,7 +3,7 @@
@section('css')
@endsection
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -1,6 +1,6 @@
@extends('layouts.master')
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -3,7 +3,7 @@
@section('css')
@endsection
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -1,6 +1,6 @@
@extends('layouts.master')
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -3,7 +3,7 @@
@section('css')
@endsection
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -1,6 +1,6 @@
@extends('layouts.master')
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -3,7 +3,7 @@
@section('css')
@endsection
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -1,6 +1,6 @@
@extends('layouts.master')
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -3,7 +3,7 @@
@section('css')
@endsection
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -1,6 +1,6 @@
@extends('layouts.master')
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -3,7 +3,7 @@
@section('css')
@endsection
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -1,6 +1,6 @@
@extends('layouts.master')
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -3,7 +3,7 @@
@section('css')
@endsection
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -1,6 +1,6 @@
@extends('layouts.master')
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -3,7 +3,7 @@
@section('css')
@endsection
@section('content')
<div class="page-content">
<div class="">
<div class="container-fluid">
<div class="row">
<div class="col-lg-12">

View File

@ -15,16 +15,17 @@
<div class="col-md-12">
<input type="hidden" name="secure_id" value="{{@$keyId}}">
</div>
<div class="col-12 mb-3">
<div class="form-group">
<label class="col-xl-12 form-label">Jenis Pengesahan</label>
<div class="col-12 ">
<select name="type" class="form-control select2 type" required>
<option value="">-- PILIH JENIS PENGESAHAN --</option>
<option {{@$item->type == 'adaptasi' ? 'selected' : ''}} value="adaptasi">Adaptasi</option>
<option {{@$item->type == 'mitigasi' ? 'selected' : ''}} value="mitigasi">Mitigasi</option>
<option {{@$item->type == 'inventory' ? 'selected' : ''}} value="inventory">Inventory</option>
@foreach (getRoles() as $role)
<option {{@$item->type == $role->alias ? 'selected' : ''}} value="{{ $role->alias }}">{{ $role->name }}</option>
@endforeach
{{-- <option {{@$item->type == 'mitigasi' ? 'selected' : ''}} value="mitigasi">Mitigasi</option> --}}
{{-- <option {{@$item->type == 'inventory' ? 'selected' : ''}} value="inventory">Inventory</option> --}}
</select>
@error('type')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@ -38,7 +39,7 @@
<label class="col-xl-12 form-label">Sektor</label>
<div class="col-12 ">
@php
$selectedSektor = json_decode($item->sektor, true) ?? [];
$selectedSektor = json_decode(@$item->sektor, true) ?? [];
$options = [
'Energi' => [
@ -106,16 +107,19 @@
</div>
</div>
<?php
$selectedForm = json_decode(@$item->form_id, true) ?? [];
?>
<div class="col-12 mb-3 {{ @$item->type == 'adaptasi' ? '' : 'd-none' }} adaptasi">
<div class="form-group">
<label class="col-xl-12 form-label">Kegiatan Adaptasi</label>
<div class="col-12 ">
<select name="kegiatan_adaptasi[]" class="form-control select2" multiple>
<option value="">-- PILIH KEGIATAN ADAPTASI --</option>
@foreach($kegiatanAdaptasi as $a)
<option value="{{ $a->id }}">
<option {{ in_array($a->id, $selectedForm) ? 'selected' : '' }} value="{{ $a->id }}">
{{ $a->nama_kegiatan }} >>
{{ $a->sektor }} >>
{{ $a->sub_sektor }}
@ -136,7 +140,7 @@
<select name="kegiatan_mitigasi[]" class="form-control select2" multiple>
<option value="">-- PILIH KEGIATAN MITIGASI --</option>
@foreach($kegiatanMitigasi as $m)
<option value="{{ $m->id }}">
<option {{ in_array($m->id, $selectedForm) ? 'selected' : '' }} value="{{ $m->id }}">
{{ Str::limit($m->nama_kegiatan, 60) }} >>
{{ $m->sektor }} >>
{{ $m->sub_sektor }}

View File

@ -33,9 +33,9 @@
<th data-width="15%" class="text-center" data-field="action">#</th>
<th data-field="agency">Instansi</th>
<th data-field="type">Jenis Pengesahan</th>
<th data-field="data">Data</th>
<th data-field="data">Kegiatan/Sektor</th>
<th data-field="file">File</th>
{{-- <th data-field="status">Status</th> --}}
<th data-field="status">Status</th>
</tr>
</thead>
<tbody></tbody>
@ -90,5 +90,89 @@ $("#grid-data").on("click", ".remove_data", function() {
return false;
});
$("#grid-data").on("click", ".verifikasi", function() {
var base_url = $(this).attr('data-href');
var id = $(this).attr('data-id');
Swal.fire({
title: "Verifikasi!",
text: "Apa anda yakin ingin verifikasi data ini ?",
icon: "warning",
showCancelButton: true,
confirmButtonColor: "#406AAF",
confirmButtonText: "Ya Verifikasi Sekarang",
cancelButtonText: "Tidak"
}).then((result) => {
if (result.isConfirmed) {
request = $.ajax({
url: base_url,
xhrFields: {
withCredentials: true
},
type: "GET",
});
// Callback handler that will be called on success
request.done(function(response, textStatus, jqXHR){
console.log(response);
alertify.success("Berhasil Verifikasi Data");
$('#grid-data').bootstrapTable('refresh');
});
// Callback handler that will be called on failure
request.fail(function (jqXHR, textStatus, errorThrown){
alertify.error("Gagal " + textStatus, errorThrown);
});
}
});
return false;
});
$("#grid-data").on("click", ".tolak-verifikasi", function() {
var base_url = $(this).attr('data-href');
var id = $(this).attr('data-id');
Swal.fire({
title: "Tolak Verifikasi!",
text: "Apa anda yakin ingin tolak verifikasi data ini ?",
icon: "warning",
showCancelButton: true,
confirmButtonColor: "#FFC85C",
confirmButtonText: "Ya Tolak Sekarang",
cancelButtonText: "Tidak"
}).then((result) => {
if (result.isConfirmed) {
request = $.ajax({
url: base_url,
xhrFields: {
withCredentials: true
},
type: "GET",
});
// Callback handler that will be called on success
request.done(function(response, textStatus, jqXHR){
console.log(response);
alertify.success("Berhasil Tolak Verifikasi Data");
$('#grid-data').bootstrapTable('refresh');
});
// Callback handler that will be called on failure
request.fail(function (jqXHR, textStatus, errorThrown){
alertify.error("Gagal " + textStatus, errorThrown);
});
}
});
return false;
});
</script>
@endsection

View File

@ -63,6 +63,9 @@ Route::name('pengesahan.')->prefix('pengesahan')->group(function () {
Route::resource('/',LembarPengesahanController::class);
Route::get('grid',[LembarPengesahanController::class,'grid'])->name('grid');
Route::get('update/{id?}',[LembarPengesahanController::class,'update'])->name('update');
Route::get('delete/{id?}',[LembarPengesahanController::class,'delete'])->name('delete');
Route::get('verifikasi/{id?}',[LembarPengesahanController::class,'verifikasi'])->name('verifikasi');
Route::get('tolak-verifikasi/{id?}',[LembarPengesahanController::class,'tolakverifikasi'])->name('tolakverifikasi');
});
Route::name('dashboard.')->prefix('dashboard')->group(function () {
Route::name('inventory.')->prefix('inventory')->group(function () {