main
Ilham Wara Nugroho 2025-09-29 12:20:10 +07:00
parent 1dcd33a7f3
commit 863253c45b
10 changed files with 98 additions and 24 deletions

View File

@ -7,6 +7,8 @@ use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\File;
use Carbon\Carbon;
use App\Models\Master\Instansi; use App\Models\Master\Instansi;
use App\Models\Master\Template; use App\Models\Master\Template;
use App\Models\Master\Group; use App\Models\Master\Group;
@ -69,6 +71,7 @@ class InstansiController extends Controller
'id' => encode_id($row->id), 'id' => encode_id($row->id),
'name' => @$row->name, 'name' => @$row->name,
'parent' => @$row->parent, 'parent' => @$row->parent,
'logo' => '<img width="45" class="mx-auto" src="'.asset('uploads/'.@$row->logo).'">',
'resource' => @$resource, 'resource' => @$resource,
'action' => @$action, 'action' => @$action,
]; ];
@ -103,28 +106,84 @@ class InstansiController extends Controller
'parent' => 'required', 'parent' => 'required',
])->validate(); ])->validate();
$user = Instansi::find($keyId); if (@$request->hasFile('logo')) {
$user->name = $request->name; $file = $request->file('logo');
$user->parent = $request->parent; $destinationPath = public_path('uploads/logo');
$user->alamat = $request->alamat; $current = Carbon::now()->format('Y/m/d');
$user->telp = $request->telp; $path = $destinationPath . '/' . $current;
$user->website = $request->website; $fileName = $file->getClientOriginalName();
$user->resource_data = json_encode($request->resource_data); $fileMime = $file->getClientMimeType();
$user->save(); $fileExtension = $file->getClientOriginalExtension();
$fileSize = $file->getSize();
if(($fileExtension != 'png') && ($fileExtension != 'jpg') && ($fileExtension != 'jpeg')){
return redirect()->back()->with([
'message' => 'Maaf File Harus Berupa png,jpg,jpeg!',
'type' => "error"
]);
}
$newFilename = session('id').'_'.uniqid('file_') . '.' . $fileExtension;
if (!File::exists($path)) {
File::isDirectory($path) or File::makeDirectory($path, 0777, true, true);
}
$filePath = 'logo/' . $current . '/' . $newFilename;
$uploaded = $file->move($path, $newFilename);
}
$inst = Instansi::find($keyId);
$inst->name = $request->name;
$inst->parent = $request->parent;
$inst->alamat = $request->alamat;
$inst->telp = $request->telp;
$inst->website = $request->website;
$inst->resource_data = json_encode($request->resource_data);
if (@$request->hasFile('logo')) {
$inst->logo = @$filePath;
}
$inst->save();
}else{ }else{
Validator::make($request->all(), [ Validator::make($request->all(), [
'name' => 'required', 'name' => 'required',
'parent' => 'required', 'parent' => 'required',
])->validate(); ])->validate();
$user = new Instansi; if (@$request->hasFile('logo')) {
$user->name = $request->name; $file = $request->file('logo');
$user->parent = $request->parent; $destinationPath = public_path('uploads/logo');
$user->alamat = $request->alamat; $current = Carbon::now()->format('Y/m/d');
$user->telp = $request->telp; $path = $destinationPath . '/' . $current;
$user->website = $request->website; $fileName = $file->getClientOriginalName();
$user->resource_data = json_encode($request->resource_data); $fileMime = $file->getClientMimeType();
$user->save(); $fileExtension = $file->getClientOriginalExtension();
$fileSize = $file->getSize();
if(($fileExtension != 'png') && ($fileExtension != 'jpg') && ($fileExtension != 'jpeg')){
return redirect()->back()->with([
'message' => 'Maaf File Harus Berupa png,jpg,jpeg!',
'type' => "error"
]);
}
$newFilename = session('id').'_'.uniqid('file_') . '.' . $fileExtension;
if (!File::exists($path)) {
File::isDirectory($path) or File::makeDirectory($path, 0777, true, true);
}
$filePath = 'logo/' . $current . '/' . $newFilename;
$uploaded = $file->move($path, $newFilename);
}
$inst = new Instansi;
$inst->name = $request->name;
$inst->parent = $request->parent;
$inst->alamat = $request->alamat;
$inst->telp = $request->telp;
$inst->website = $request->website;
$inst->resource_data = json_encode($request->resource_data);
$inst->logo = @$filePath;
$inst->save();
} }
return redirect()->back()->with([ return redirect()->back()->with([

View File

@ -18,6 +18,7 @@ return new class extends Migration
$table->text('alamat')->nullable(); $table->text('alamat')->nullable();
$table->text('website')->nullable(); $table->text('website')->nullable();
$table->text('telp')->nullable(); $table->text('telp')->nullable();
$table->string('logo')->nullable();
$table->timestampsTz(); $table->timestampsTz();
}); });
} }

BIN
public/logodki.png 100644

Binary file not shown.

After

Width:  |  Height:  |  Size: 462 KiB

View File

@ -13,7 +13,7 @@
<div class="flex flex-col gap-6"> <div class="flex flex-col gap-6">
<div class="bg-white rounded-[20px] shadow-lg p-5 py-10 gap-6 flex"> <div class="bg-white rounded-[20px] shadow-lg p-5 py-10 gap-6 flex">
<div class="flex flex-col gap-3 items-center text-center w-1/4"> <div class="flex flex-col gap-3 items-center text-center w-1/4">
<img src="{{ asset('assets/logo/dinas.png') }}" alt="" width="50" class=""> <img src="{{ asset('uploads/'.@$dataset->instansi->logo) }}" alt="" width="50" class="">
<h1 class="font-bold">{{ $dataset->instansi->name }}</h1> <h1 class="font-bold">{{ $dataset->instansi->name }}</h1>
<a href="{{asset('uploads/'.$dataset->file)}}" class="rounded-full text-[12px] bg-success text-white px-2 py-1">Download <i class="ri-download-line"></i></a> <a href="{{asset('uploads/'.$dataset->file)}}" class="rounded-full text-[12px] bg-success text-white px-2 py-1">Download <i class="ri-download-line"></i></a>
</div> </div>
@ -78,7 +78,7 @@
@foreach($lainnya as $dataSet) @foreach($lainnya as $dataSet)
<div class="bg-white rounded-[20px] shadow-lg p-5 py-10"> <div class="bg-white rounded-[20px] shadow-lg p-5 py-10">
<div class="flex flex-col gap-3 mx-auto items-center text-center"> <div class="flex flex-col gap-3 mx-auto items-center text-center">
<img src="{{ asset('assets/logo/dinas.png') }}" alt="" width="50" class=""> <img src="{{ asset('uploads/'.@$dataSet->instansi->logo) }}" alt="" width="50" class="">
<h1 class="font-bold">{{ @$dataSet->instansi->name }}</h1> <h1 class="font-bold">{{ @$dataSet->instansi->name }}</h1>
<h5 class="">{{ $dataSet->name }}</h5> <h5 class="">{{ $dataSet->name }}</h5>
<a href="{{ url('dataset/detail/'.encode_id($dataSet->DatasetId)) }}" class="rounded-full text-[10px] bg-[#E9811A] text-white px-6 py-3">Lihat Detail</a> <a href="{{ url('dataset/detail/'.encode_id($dataSet->DatasetId)) }}" class="rounded-full text-[10px] bg-[#E9811A] text-white px-6 py-3">Lihat Detail</a>

View File

@ -57,7 +57,7 @@
@forelse($dataset as $dataSet) @forelse($dataset as $dataSet)
<div class="bg-white rounded-[20px] shadow-lg p-5 py-10 gap-6 flex"> <div class="bg-white rounded-[20px] shadow-lg p-5 py-10 gap-6 flex">
<div class="flex flex-col gap-3 items-center text-center"> <div class="flex flex-col gap-3 items-center text-center">
<img src="{{ asset('assets/logo/dinas.png') }}" alt="" width="50" class=""> <img src="{{ asset('uploads/'.@$dataSet->instansi->logo) }}" alt="" width="50" class="">
<h1 class="font-bold">{{ $dataSet->instansi->name }}</h1> <h1 class="font-bold">{{ $dataSet->instansi->name }}</h1>
</div> </div>
<div class="flex items-center justify-between w-full"> <div class="flex items-center justify-between w-full">

View File

@ -66,7 +66,7 @@
@forelse($dataset as $dataSet) @forelse($dataset as $dataSet)
<div class="bg-white rounded-[20px] shadow-lg p-5 py-10 gap-6 flex"> <div class="bg-white rounded-[20px] shadow-lg p-5 py-10 gap-6 flex">
<div class="flex flex-col gap-3 items-center text-center"> <div class="flex flex-col gap-3 items-center text-center">
<img src="{{ asset('assets/logo/dinas.png') }}" alt="" width="50" class=""> <img src="{{ asset('uploads/'.@$dataSet->instansi->logo) }}" alt="" width="50" class="">
<h1 class="font-bold">{{ $dataSet->instansi->name }}</h1> <h1 class="font-bold">{{ $dataSet->instansi->name }}</h1>
</div> </div>
<div class="flex items-center justify-between w-full"> <div class="flex items-center justify-between w-full">

View File

@ -191,9 +191,9 @@
</div> </div>
<div class="grid grid-cols-1 md:grid-cols-3 lg:grid-cols-4 gap-6"> <div class="grid grid-cols-1 md:grid-cols-3 lg:grid-cols-4 gap-6">
@foreach($dataset as $dataSet) @foreach($dataset as $dataSet)
<div class="bg-white rounded-[20px] shadow-lg p-5 py-10"> <div class="bg-white rounded-[20px] shadow-lg p-5">
<div class="flex flex-col gap-3 mx-auto items-center text-center"> <div class="flex flex-col gap-3 mx-auto items-center text-center">
<img src="{{ asset('assets/logo/dinas.png') }}" alt="" width="50" class=""> <img src="{{ asset('uploads/'.@$dataSet->instansi->logo) }}" alt="" width="50" class="">
<h1 class="font-bold">{{ @$dataSet->instansi->name }}</h1> <h1 class="font-bold">{{ @$dataSet->instansi->name }}</h1>
<h5 class="">{{ $dataSet->name }}</h5> <h5 class="">{{ $dataSet->name }}</h5>
<a href="{{ url('dataset/detail/'.encode_id($dataSet->DatasetId)) }}" class="rounded-full text-[10px] bg-[#E9811A] text-white px-6 py-3">Lihat Detail</a> <a href="{{ url('dataset/detail/'.encode_id($dataSet->DatasetId)) }}" class="rounded-full text-[10px] bg-[#E9811A] text-white px-6 py-3">Lihat Detail</a>

View File

@ -7,7 +7,7 @@
<h4 class="card-title">{{$title}}</h4> <h4 class="card-title">{{$title}}</h4>
</div> </div>
</div> </div>
<form action="{{route($route.'.store')}}" method="POST" class=""> <form action="{{route($route.'.store')}}" method="POST" class="" enctype="multipart/form-data">
{{csrf_field()}} {{csrf_field()}}
<input type="hidden" name="secure_id" value="{{@$keyId}}"> <input type="hidden" name="secure_id" value="{{@$keyId}}">
<div class="p-6"> <div class="p-6">
@ -45,12 +45,25 @@
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span> <span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror @enderror
</div> </div>
</div> </div>
@php @php
// Ambil data yang sudah dipilih (bisa dari old input atau dari model saat edit) // Ambil data yang sudah dipilih (bisa dari old input atau dari model saat edit)
$selectedResources = @$item->resource_data ? json_decode(@$item->resource_data) : []; $selectedResources = @$item->resource_data ? json_decode(@$item->resource_data) : [];
// dd($selectedResources); // dd($selectedResources);
@endphp @endphp
<div class="mb-3">
<label class="mb-3">Logo</label>
<input accept=".png,.jpg,.jpeg" type="file" value="{{@$item->logo ? @$item->logo : old('logo')}}" name="logo" class="form-input @error('logo') is-invalid @enderror" placeholder="Masukan logo">
@if(@$item->logo)
<div class="border w-1/4 mt-3">
<img src="{{ asset('uploads/'.@$item->logo) }}" alt="" width="150" class="mx-auto">
</div>
@endif
@error('logo')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
</div>
<div class="mb-3"> <div class="mb-3">
<label class="mb-3 required">Resource Data</label> <label class="mb-3 required">Resource Data</label>
<select name="resource_data[]" required class="form-input resource_data select2 @error('resource_data') is-invalid @enderror" id="" multiple> <select name="resource_data[]" required class="form-input resource_data select2 @error('resource_data') is-invalid @enderror" id="" multiple>

View File

@ -30,6 +30,7 @@
<tr class="gridjs-tr bg-primary-light"> <tr class="gridjs-tr bg-primary-light">
<th class="gridjs-td gridjs-th text-sm text-gray-500" data-width="10" data-field="action">#</th> <th class="gridjs-td gridjs-th text-sm text-gray-500" data-width="10" data-field="action">#</th>
<th class="gridjs-td gridjs-th text-sm text-gray-500" data-width="10" data-field="no">No</th> <th class="gridjs-td gridjs-th text-sm text-gray-500" data-width="10" data-field="no">No</th>
<th class="gridjs-td gridjs-th text-sm text-gray-500 text-center" data-field="logo">Logo</th>
<th class="gridjs-td gridjs-th text-sm text-gray-500" data-field="name">Name</th> <th class="gridjs-td gridjs-th text-sm text-gray-500" data-field="name">Name</th>
<th class="gridjs-td gridjs-th text-sm text-gray-500" data-field="parent">Jenis Instansi</th> <th class="gridjs-td gridjs-th text-sm text-gray-500" data-field="parent">Jenis Instansi</th>
<th class="gridjs-td gridjs-th text-sm text-gray-500" data-field="resource">Resource Data</th> <th class="gridjs-td gridjs-th text-sm text-gray-500" data-field="resource">Resource Data</th>

View File

@ -29,7 +29,7 @@
@foreach($template as $dataTemplate) @foreach($template as $dataTemplate)
<div class="bg-white text-center rounded-[20px] shadow-lg p-5 py-10 gap-3 flex"> <div class="bg-white text-center rounded-[20px] shadow-lg p-5 py-10 gap-3 flex">
<div class="flex flex-col gap-3 mx-auto items-center"> <div class="flex flex-col gap-3 mx-auto items-center">
<img src="{{ asset('assets/logo/dinas.png') }}" alt="" width="50" class=""> <img src="{{ asset('logodki.png') }}" alt="" width="50" class="">
<h1 class="font-bold">{{ $dataTemplate->name }}</h1> <h1 class="font-bold">{{ $dataTemplate->name }}</h1>
</div> </div>
</div> </div>