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\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\File;
use Carbon\Carbon;
use App\Models\Master\Instansi;
use App\Models\Master\Template;
use App\Models\Master\Group;
@ -69,6 +71,7 @@ class InstansiController extends Controller
'id' => encode_id($row->id),
'name' => @$row->name,
'parent' => @$row->parent,
'logo' => '<img width="45" class="mx-auto" src="'.asset('uploads/'.@$row->logo).'">',
'resource' => @$resource,
'action' => @$action,
];
@ -103,28 +106,84 @@ class InstansiController extends Controller
'parent' => 'required',
])->validate();
$user = Instansi::find($keyId);
$user->name = $request->name;
$user->parent = $request->parent;
$user->alamat = $request->alamat;
$user->telp = $request->telp;
$user->website = $request->website;
$user->resource_data = json_encode($request->resource_data);
$user->save();
if (@$request->hasFile('logo')) {
$file = $request->file('logo');
$destinationPath = public_path('uploads/logo');
$current = Carbon::now()->format('Y/m/d');
$path = $destinationPath . '/' . $current;
$fileName = $file->getClientOriginalName();
$fileMime = $file->getClientMimeType();
$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{
Validator::make($request->all(), [
'name' => 'required',
'parent' => 'required',
])->validate();
$user = new Instansi;
$user->name = $request->name;
$user->parent = $request->parent;
$user->alamat = $request->alamat;
$user->telp = $request->telp;
$user->website = $request->website;
$user->resource_data = json_encode($request->resource_data);
$user->save();
if (@$request->hasFile('logo')) {
$file = $request->file('logo');
$destinationPath = public_path('uploads/logo');
$current = Carbon::now()->format('Y/m/d');
$path = $destinationPath . '/' . $current;
$fileName = $file->getClientOriginalName();
$fileMime = $file->getClientMimeType();
$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([

View File

@ -18,6 +18,7 @@ return new class extends Migration
$table->text('alamat')->nullable();
$table->text('website')->nullable();
$table->text('telp')->nullable();
$table->string('logo')->nullable();
$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="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">
<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>
<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>
@ -78,7 +78,7 @@
@foreach($lainnya as $dataSet)
<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">
<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>
<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>

View File

@ -57,7 +57,7 @@
@forelse($dataset as $dataSet)
<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">
<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>
</div>
<div class="flex items-center justify-between w-full">

View File

@ -66,7 +66,7 @@
@forelse($dataset as $dataSet)
<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">
<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>
</div>
<div class="flex items-center justify-between w-full">

View File

@ -191,9 +191,9 @@
</div>
<div class="grid grid-cols-1 md:grid-cols-3 lg:grid-cols-4 gap-6">
@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">
<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>
<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>

View File

@ -7,7 +7,7 @@
<h4 class="card-title">{{$title}}</h4>
</div>
</div>
<form action="{{route($route.'.store')}}" method="POST" class="">
<form action="{{route($route.'.store')}}" method="POST" class="" enctype="multipart/form-data">
{{csrf_field()}}
<input type="hidden" name="secure_id" value="{{@$keyId}}">
<div class="p-6">
@ -45,12 +45,25 @@
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
</div>
</div>
@php
// Ambil data yang sudah dipilih (bisa dari old input atau dari model saat edit)
$selectedResources = @$item->resource_data ? json_decode(@$item->resource_data) : [];
// dd($selectedResources);
@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">
<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>

View File

@ -30,6 +30,7 @@
<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="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="parent">Jenis Instansi</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)
<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">
<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>
</div>
</div>