main
Ilham Wara Nugroho 2026-02-13 10:48:56 +07:00
parent 503e4c8e30
commit 850b37c95d
8 changed files with 118 additions and 92 deletions

View File

@ -6,20 +6,23 @@ use Illuminate\Http\Request;
use App\Models\Master\Template;
use App\Models\Master\Topik;
use App\Models\Master\Instansi;
use App\Models\TxDataset;
use App\Models\Dataset;
use App\Models\DatasetTambahan;
use App\Models\Master\TabelData;
use App\Models\Master\TabelDataKolom;
class FrontController extends Controller
{
function index() {
$data = [];
// $data['template'] = Template::where('show_dashboard',1)->limit(4)->inRandomOrder()->get();
$data['template'] = Template::limit(4)->inRandomOrder()->get();
// $data['template'] = TabelData::where('show_dashboard',1)->limit(4)->inRandomOrder()->get();
$data['template'] = TabelData::limit(4)->inRandomOrder()->get();
$data['dataset'] = Dataset::orderBy('DatasetId','DESC')->limit(4)->get();
$data['count'] = [
'dataset' => Dataset::count(),
'resource' => Template::count(),
'resource' => TabelData::count(),
'instansi' => Instansi::count(),
];
@ -27,12 +30,15 @@ class FrontController extends Controller
}
function resource() {
$data = [];
$data['template'] = Template::simplePaginate(12);
$data['template'] = TabelData::simplePaginate(12);
return view('resource',$data);
}
function dataset_detail($id) {
$keyId = decode_id($id);
$data['dataset'] = Dataset::find($keyId);
$template = TabelData::find($data['dataset']->ms_tabel_data_id);
$data['tabel'] = TabelDataKolom::where('ms_tabel_data_id',$template->MsTabelDataId)->orderBy('order','ASC')->get();
$data['lainnya'] = Dataset::with(['instansi'])->where('DatasetId','!=',$keyId)->limit(4)->get();
$data['keyId'] = $keyId;
@ -40,19 +46,45 @@ class FrontController extends Controller
}
public function gridDetail(Request $request)
{
// $id = $request->query('id');
// $keyId = $id;
// $item = Dataset::find($keyId); // atau pakai ->pluck(), ->find(), dll
// $json = json_decode($item->data, true);
// $limit = $request->input('limit', 10);
// $offset = $request->input('offset', 0);
// $rows = array_slice($json, $offset, $limit);
// return response()->json([
// 'total' => count($json),
// 'rows' => $rows
// ]);
$id = $request->query('id');
$keyId = $id;
$keyId = decode_id($id);
$item = Dataset::find($keyId); // atau pakai ->pluck(), ->find(), dll
//
$_data = [];
$data = TxDataset::where('dataset_id', $keyId)
->orderBy('row_id')
->orderBy('ms_tabel_data_kolom_id')
->get()
->groupBy('row_id');
$json = json_decode($item->data, true);
$limit = $request->input('limit', 10);
$offset = $request->input('offset', 0);
foreach ($data as $rowId => $rows) {
$rows = array_slice($json, $offset, $limit);
return response()->json([
'total' => count($json),
'rows' => $rows
]);
$rowData = [
'no' => $rowId
];
foreach ($rows as $cell) {
$rowData[$cell->ms_tabel_data_kolom_id] = $cell->value;
}
$_data[] = $rowData;
}
return response()->json($_data);
}
function datasetTambahan_detail($id) {
@ -94,7 +126,7 @@ class FrontController extends Controller
// $data['dataset'] = Dataset::orderBy('DatasetId','DESC')->paginate(9);
// }
$data['dataset'] = $dataset->paginate(9);
$data['template'] = Template::all();
$data['template'] = TabelData::all();
$data['instansi'] = Instansi::all();
return view('dataset',$data);
@ -135,13 +167,13 @@ class FrontController extends Controller
$data['dataset'] = $dataset->paginate(9);
$data['template'] = Template::all();
$data['template'] = TabelData::all();
$data['instansi'] = Instansi::all();
return view('dataset-tambahan',$data);
}
function search() {
$data['topik'] = Topik::all();
$data['template'] = Template::all();
$data['template'] = TabelData::all();
$data['instansi'] = Instansi::all();
$data['dataset'] = Dataset::orderBy('DatasetId','DESC')->limit(5)->get();
return view('search',$data);

View File

@ -164,33 +164,17 @@ class DatasetController extends Controller
// dd(request()->all());
try {
$keyId = decode_id($request->secure_id);
DB::beginTransaction();
if(@$keyId){
Validator::make($request->all(), [
// 'name' => 'required',
// 'instansi_id' => 'required',
// 'template_id' => 'required',
// 'publik' => 'required',
])->validate();
//INSERT DATASET;
$dataset = Dataset::find($keyId);
$dataset->tahun = $request->tahun;
$dataset->tahun_data = $request->tahun_data;
$dataset->name = $request->name;
$dataset->deskripsi = $request->deskripsi;
$dataset->save();
}else{
// dd($request->all());
// Validator::make($request->all(), [
// 'name' => 'required',
// 'instansi_id' => 'required',
// 'template_id' => 'required',
// 'publik' => 'required',
// 'template_id' => 'required',
// ])->validate();
}
// $template = Template::find(decode_id($request->template_id));
// $filename = pathinfo($tabelData->template_url, PATHINFO_FILENAME);
// $modelClass = "App\\Models\\Dataset\\Dataset" . ucfirst($filename);
// $importClass = "App\\Imports\\Dataset". ucfirst($filename)."Import";
DB::beginTransaction();
// dd($request->all());
try {
//INSERT DATASET;
$dataset = new Dataset;
$dataset->instansi_id = decode_id($request->instansi_id);
@ -205,7 +189,9 @@ class DatasetController extends Controller
$dataset->deskripsi = $request->deskripsi;
$dataset->created_by = auth()->user()->id;
$dataset->save();
}
if(@$request->file){
$tabelData = TabelData::find(decode_id($request->template_id));
$import = new Import;
@ -214,8 +200,8 @@ class DatasetController extends Controller
$count = 0;
// dd($data);
foreach ($data as $rowIndex => $row) {
$rowId = $row[str_replace(' ','_',strtolower($tabelData->name)).'_'.date('Y')-1];
unset($row[str_replace(' ','_',strtolower($tabelData->name)).'_'.date('Y')-1]);
$rowId = $row[preg_replace('/[^a-z0-9]+/', '_', strtolower($tabelData->name)).'_'.date('Y')-1];
unset($row[preg_replace('/[^a-z0-9]+/', '_', strtolower($tabelData->name)).'_'.date('Y')-1]);
$count++;
foreach ($row as $columnIndex => $value) {
TxDataset::updateOrCreate([
@ -233,23 +219,12 @@ class DatasetController extends Controller
}
DB::commit();
}
// $insert = $this->repository->createDatasetTable($modelClass,$importClass,$request->file('file'),$request->all());
// dd($insert);
return redirect()->back()->with([
'message' => 'Berhasil update data',
'type' => 'success',
]);
} catch (\Exception $e) {
DB::rollback();
dd($e->getMessage());
if ($e->getMessage() === "Start row (2) is beyond highest row (1)") {
return redirect()->back()->with([
'message' => $e->getMessage(),
'type' => "error"
], 400);
}
}
} catch (Exception $e) {
DB::rollback();

View File

@ -16,7 +16,7 @@
<img src="{{ asset('logodki.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>
<a href="{{url('opendata/dataset/download/'.encode_id(@$dataset->DatasetId))}}" class="rounded-full text-[12px] bg-success text-white px-2 py-1">Download <i class="ri-download-line"></i></a>
</div>
<div class="flex items-center justify-between w-3/4">
<div class="flex flex-col gap-3">
@ -28,7 +28,7 @@
</div>
<div class="mt-1 flex flex-row gap-2 items-center">
<span class="rounded-full text-[10px] bg-[#103760] text-white px-2 py-1">{{$dataset->tahun}}</span>
<span class="rounded-full text-[10px] hidden lg:block bg-[#103760] text-white px-2 py-1">{{$dataset->template->name}}</span>
<span class="rounded-full text-[10px] hidden lg:block bg-[#103760] text-white px-2 py-1">{{$dataset->tabelData->name}}</span>
</div>
<div class="flex gap-1">
<span>Bagikan : </span>
@ -42,10 +42,26 @@
<?php
$data = json_decode($dataset->data);
?>
@if(@$data)
<div class="bg-white rounded-[20px] shadow-lg p-5 py-10 gap-6 flex">
<div style="overflow-x:auto; width:100%!important;">
<table id="table"
data-toggle="table"
data-search="false"
data-pagination="true"
data-side-pagination="server"
data-url="{{ url('dataset/Griddetail?id='.encode_id($keyId)) }}">
<thead>
<tr class="bg-primary-light text-primary">
<th data-field="no" class="gridjs-td gridjs-th text-xs">No</th>
@foreach ($tabel as $k => $key)
<th data-field="{{$key->order}}" class="gridjs-td gridjs-th text-xs">{{ $key->name }}</th>
@endforeach
</tr>
</thead>
</table>
{{-- <table id="table"
data-toggle="table"
data-search="false"
data-pagination="true"
@ -61,10 +77,10 @@
@endif
</tr>
</thead>
</table>
</table> --}}
</div>
</div>
@endif
</div>
</section>
@ -93,7 +109,7 @@
</div>
<div class="mt-1 flex flex-row gap-2 items-center">
<span class="rounded-full text-[10px] bg-[#E9811A] text-white px-2 py-1">{{$dataSet->tahun}}</span>
<span class="rounded-full text-[10px] hidden lg:block bg-[#E9811A] text-white px-2 py-1">{{ substr($dataSet->template->name,0,25) }}...</span>
<span class="rounded-full text-[10px] hidden lg:block bg-[#E9811A] text-white px-2 py-1">{{ substr($dataSet->tabelData->name,0,25) }}...</span>
</div>
</div>
</div>

View File

@ -86,7 +86,7 @@
</div>
<div class="mt-1 flex flex-row gap-2 items-center">
<span class="rounded-full text-[10px] bg-[#E9811A] text-white px-2 py-1">{{$dataSet->tahun}}</span>
<span class="rounded-full text-[10px] hidden lg:block bg-[#E9811A] text-white px-2 py-1">{{ substr($dataSet->template->name,0,25) }}...</span>
<span class="rounded-full text-[10px] hidden lg:block bg-[#E9811A] text-white px-2 py-1">{{ substr($dataSet->tabelData->name,0,25) }}...</span>
</div>
</div>
</div>

View File

@ -209,7 +209,7 @@
</div>
<div class="mt-1 flex flex-row gap-2 items-center">
<span class="rounded-full text-[10px] bg-[#E9811A] text-white px-2 py-1">{{$dataSet->tahun}}</span>
<span class="rounded-full text-[10px] hidden lg:block bg-[#E9811A] text-white px-2 py-1">{{ substr($dataSet->template->name,0,25) }}...</span>
<span class="rounded-full text-[10px] hidden lg:block bg-[#E9811A] text-white px-2 py-1">{{ substr($dataSet->tabelData->name,0,25) }}...</span>
</div>
</div>
</div>

View File

@ -19,7 +19,7 @@
<div class="grid lg:grid-cols-1 gap-3">
<div class="">
<label class="mb-3 required">Instansi</label>
<select name="instansi_id" required class="form-input instansi_id select2 @error('instansi_id') is-invalid @enderror" id="instansi_id">
<select name="instansi_id" {{ @$item ? 'disabled' : 'required' }} class="form-input instansi_id select2 @error('instansi_id') is-invalid @enderror" id="instansi_id">
<option value="">-</option>
@foreach($instansi as $dataInstansi)
<option {{@$item->instansi_id == $dataInstansi->MsInstansiId ? 'selected' : ''}} value="{{encode_id($dataInstansi->MsInstansiId)}}">{{$dataInstansi->name}}</option>
@ -31,14 +31,15 @@
</div>
<div class="">
<label class="mb-3 required">Resource Data</label>
<select name="template_id" required class="form-input template_id select2 @error('template_id') is-invalid @enderror" id="template_id">
<select name="template_id" {{ @$item ? 'disabled' : 'required' }} class="form-input template_id select2 @error('template_id') is-invalid @enderror" id="template_id">
<option value="">Tabel {{@$item->tabelData->nomor_tabel}} - {{@$item->tabelData->name}}</option>
</select>
@error('template_id')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
</div>
</div>
<a href="#" class="btn bg-success btnDownload text-white btn-md mt-3"><i class="ri-download-2-line"></i>&nbsp;Download Template Excel</a>
<a href="{{ url('opendata/dataset/generateTemplate/'.encode_id(@$item->ms_tabel_data_id)); }}" class="btn bg-success btnDownload text-white btn-md mt-3"><i class="ri-download-2-line"></i>&nbsp;Download Template Excel</a>
</div>
</div>
@ -54,8 +55,8 @@
</div>
<div class="mb-3">
<label class="mb-3 required">Upload File</label>
<input type="file" accept=".xls,.xlsx" value="{{@$item->file ? @$item->file : old('file')}}" name="file" class="form-input @error('file') is-invalid @enderror" placeholder="Masukan File Dataset" {{@$item->file ? '' : 'required'}}>
<label class="mb-3 {{ @$item ? '' : 'required' }} ">Upload File</label>
<input type="file" accept=".xls,.xlsx" value="{{@$item->file ? @$item->file : old('file')}}" name="file" class="form-input @error('file') is-invalid @enderror" placeholder="Masukan File Dataset" {{ @$item ? 'disabled' : 'required' }} >
<small><i>Masukan Ekstensi File : .xls,.xlsx</i></small>
@if(@$item->file)
<br>

View File

@ -41,7 +41,7 @@ Route::name('opendata.')->prefix('opendata')->group(function () {
Route::get('delete/{id?}',[DatasetController::class,'delete'])->name('delete');
Route::get('aktif/{id?}',[DatasetController::class,'aktif'])->name('aktif');
Route::get('generateTemplate/{id?}',[DatasetController::class,'generateTemplate'])->name('generateTemplate');
Route::get('download/{id?}',[DatasetController::class,'download'])->name('download');
// Route::get('download/{id?}',[DatasetController::class,'download'])->name('download');
});
Route::name('dataset-tambahan.')->prefix('dataset-tambahan')->group(function () {

View File

@ -6,6 +6,7 @@ use App\Http\Controllers\FrontController;
use App\Http\Controllers\Auth\CustomLoginController;
use App\Http\Controllers\Auth\CustomRegisterController;
use App\Http\Controllers\AjaxController;
use App\Http\Controllers\Opendata\DatasetController;
/*
|--------------------------------------------------------------------------
@ -34,6 +35,7 @@ Route::get('/login', [CustomLoginController::class,'index'])->name('login');
Route::post('login',[CustomLoginController::class,'post_login'])->name('post_login');
Route::get('register',[CustomRegisterController::class,'index'])->name('register');
Route::post('register',[CustomRegisterController::class,'post_register'])->name('post_register');
Route::get('opendata/dataset/download/{id?}',[DatasetController::class,'download'])->name('download');
Route::get('getInstansi/{type}',[AjaxController::class,'getInstansi'])->name('getInstansi');