diff --git a/app/Http/Controllers/Api/DataSettingController.php b/app/Http/Controllers/Api/DataSettingController.php new file mode 100644 index 0000000..ac5d1d4 --- /dev/null +++ b/app/Http/Controllers/Api/DataSettingController.php @@ -0,0 +1,104 @@ +orderBy('id', 'desc'); + if ($request->has("search") && !empty($request->get("search"))) { + $query = $query->where("key", $request->get("search")); + } + + return DataSettingResource::collection($query->paginate()); + } catch (Exception $e) { + return $this->resError($e->getMessage(), $e->getTrace()); + } + } + + /** + * Store a newly created resource in storage. + */ + public function store(DataSettingRequest $request) + { + try { + $data = DataSetting::create($request->validated()); + $result = [ + "success" => true, + "message" => "Data Setting created successfully", + "data" => new DataSettingResource($data) + ]; + return $this->resSuccess($result); + } catch (Exception $e) { + return $this->resError($e->getMessage(), $e); + } + } + + /** + * Display the specified resource. + */ + public function show(string $id) + { + try { + $setting = DataSetting::findOrFail($id); + $result = [ + "setting" => true, + "message" => "Data setting successfully", + "data" => new DataSettingResource($setting) + ]; + return $this->resSuccess($result); + } catch (Exception $e) { + return $this->resError($e->getMessage()); + } + } + + /** + * Update the specified resource in storage. + */ + public function update(DataSettingRequest $request, string $id) + { + try { + $data = DataSetting::findOrFail($id); + $data->update($request->validated()); + $result = [ + "success" => true, + "message" => "Data Setting updated successfully" + ]; + return $this->resSuccess($result); + } catch (Exception $e) { + return $this->resError($e->getMessage()); + } + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(string $id) + { + try { + $setting = DataSetting::findOrFail($id); + $setting->delete(); + $result = [ + "success" => true, + "message" => "Data Setting deleted successfully" + ]; + return $this->resSuccess($result); + } catch (Exception $e) { + return $this->resError($e->getMessage()); + } + } +} diff --git a/app/Http/Controllers/DataSettingController.php b/app/Http/Controllers/DataSettingController.php new file mode 100644 index 0000000..c4ea65d --- /dev/null +++ b/app/Http/Controllers/DataSettingController.php @@ -0,0 +1,106 @@ +validated()); + DB::commit(); + return redirect()->route("data-settings.index")->with("success","Successfully created"); + }catch(Exception $ex){ + DB::rollBack(); + return redirect()->back() + ->withInput() + ->with('error', 'Something went wrong while saving data. ' . $ex->getMessage()); + } + } + + /** + * Display the specified resource. + */ + public function show(DataSetting $dataSetting) + { + // + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(string $id) + { + try{ + $data = DataSetting::findOrFail($id); + if(empty($data)){ + return redirect()->route('data-settings.index')->with('error', 'Invalid id'); + } + return view("data-settings.edit", compact("data")); + }catch(Exception $ex){ + return redirect()->route("data-settings.index")->with("error", "Invalid id"); + } + } + + /** + * Update the specified resource in storage. + */ + public function update(DataSettingRequest $request,string $id) + { + try{ + DB::beginTransaction(); + $data = DataSetting::findOrFail($id); + $data->update($request->validated()); + DB::commit(); + return redirect()->route("data-settings.index")->with("success","Successfully updated"); + }catch(Exception $ex){ + DB::rollBack(); + return redirect()->back() + ->withInput() + ->with('error', 'Something went wrong while saving data. ' . $ex->getMessage()); + } + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(string $id) + { + try{ + DB::beginTransaction(); + DataSetting::findOrFail($id)->delete(); + DB::commit(); + return response()->json(['success' => true, 'message' => 'Item deleted successfully.']); + }catch(Exception $e){ + DB::rollBack(); + Log::error($e->getMessage()); + return response()->json(['success' => false, 'message' => 'Failed to delete item.'], 500); + } + } +} diff --git a/app/Http/Controllers/RoutingController.php b/app/Http/Controllers/RoutingController.php index 6392e29..2bb3b5f 100755 --- a/app/Http/Controllers/RoutingController.php +++ b/app/Http/Controllers/RoutingController.php @@ -15,30 +15,4 @@ class RoutingController extends Controller return redirect('auth.signin'); } } - - /** - * Display a view based on first route param - * - * @return \Illuminate\Http\Response - */ - public function root(Request $request, $first) - { - return view($first); - } - - /** - * second level route - */ - public function secondLevel(Request $request, $first, $second) - { - return view($first . '.' . $second); - } - - /** - * third level route - */ - public function thirdLevel(Request $request, $first, $second, $third) - { - return view($first . '.' . $second . '.' . $third); - } } diff --git a/app/Http/Requests/DataSettingRequest.php b/app/Http/Requests/DataSettingRequest.php new file mode 100644 index 0000000..2305e39 --- /dev/null +++ b/app/Http/Requests/DataSettingRequest.php @@ -0,0 +1,31 @@ +|string> + */ + public function rules(): array + { + $id = $this->route('data_setting'); + return [ + "key" => "required|unique:data_settings,key," . $id, + "value" => "required", + "type" => "nullable", + ]; + } +} diff --git a/app/Http/Resources/DataSettingResource.php b/app/Http/Resources/DataSettingResource.php new file mode 100644 index 0000000..3cc1d14 --- /dev/null +++ b/app/Http/Resources/DataSettingResource.php @@ -0,0 +1,26 @@ + + */ + public function toArray(Request $request): array + { + return [ + 'id' => $this->id, + 'key' => $this->key, + 'value' => $this->value, + 'type' => $this->type, + 'created_at' => $this->created_at->toDateTimeString(), + 'updated_at' => $this->updated_at->toDateTimeString(), + ]; + } +} diff --git a/app/Models/DataSetting.php b/app/Models/DataSetting.php new file mode 100644 index 0000000..8ac2f87 --- /dev/null +++ b/app/Models/DataSetting.php @@ -0,0 +1,15 @@ +id(); + $table->string('key')->unique(); + $table->string('value'); + $table->string('type')->nullable()->default('integer'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('data_settings'); + } +}; diff --git a/database/seeders/DataSettingSeeder.php b/database/seeders/DataSettingSeeder.php new file mode 100644 index 0000000..2303d5b --- /dev/null +++ b/database/seeders/DataSettingSeeder.php @@ -0,0 +1,35 @@ + "TARGET_PAD", + "value" => "33.200.000.000", + "type" => "integer" + ] + ]; + + foreach ($data_settings as $setting) { + DataSetting::updateOrCreate([ + "key" => $setting["key"], + ],[ + "value" => $setting["value"], + "type" => $setting["type"], + "created_at" => now(), + "updated_at" => now(), + ]); + } + } +} diff --git a/package-lock.json b/package-lock.json index 6037de1..6861a22 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "Darkone-Laravel", + "name": "sibedas-pbg-web", "lockfileVersion": 3, "requires": true, "packages": { diff --git a/resources/js/data-settings/index.js b/resources/js/data-settings/index.js new file mode 100644 index 0000000..2e9f2a4 --- /dev/null +++ b/resources/js/data-settings/index.js @@ -0,0 +1,107 @@ +import { Grid } from "gridjs/dist/gridjs.umd.js"; +import gridjs from "gridjs/dist/gridjs.umd.js"; +import "gridjs/dist/gridjs.umd.js"; +import GlobalConfig from "../global-config.js"; + +class DataSettings { + init() { + this.getFetchApiData(); + } + + getFetchApiData() { + const table = new Grid({ + columns: [ + "ID", + "Key", + "Value", + "Created", + { + name: "Actions", + width: "120px", + formatter: function (cell) { + console.log("cell data", cell); + return gridjs.html(` +