From 2de620a3e39478e66f4f25aedd9309b8ef659020 Mon Sep 17 00:00:00 2001 From: misbahsurur Date: Tue, 10 Dec 2024 13:13:22 +0700 Subject: [PATCH] Factor --- .../Controllers/Admin/FactorController.php | 137 +++++++++++++++ app/Models/Factor.php | 13 ++ database/factories/FactorFactory.php | 23 +++ ...2024_12_10_124804_create_factors_table.php | 33 ++++ database/seeders/FactorSeeder.php | 19 +++ .../views/admin/factors/create.blade.php | 68 ++++++++ .../views/admin/factors/detail.blade.php | 58 +++++++ resources/views/admin/factors/edit.blade.php | 68 ++++++++ resources/views/admin/factors/index.blade.php | 156 ++++++++++++++++++ resources/views/layouts/sidebar.blade.php | 5 + routes/web.php | 3 + 11 files changed, 583 insertions(+) create mode 100644 app/Http/Controllers/Admin/FactorController.php create mode 100644 app/Models/Factor.php create mode 100644 database/factories/FactorFactory.php create mode 100644 database/migrations/2024_12_10_124804_create_factors_table.php create mode 100644 database/seeders/FactorSeeder.php create mode 100644 resources/views/admin/factors/create.blade.php create mode 100644 resources/views/admin/factors/detail.blade.php create mode 100644 resources/views/admin/factors/edit.blade.php create mode 100644 resources/views/admin/factors/index.blade.php diff --git a/app/Http/Controllers/Admin/FactorController.php b/app/Http/Controllers/Admin/FactorController.php new file mode 100644 index 0000000..626aae3 --- /dev/null +++ b/app/Http/Controllers/Admin/FactorController.php @@ -0,0 +1,137 @@ +middleware('role:admin'); + } + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + public function index() + { + $factors = Factor::all(); + return view('admin.factors.index', compact('factors')); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + return view('admin.factors.create'); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request) + { + $validator = Validator::make($request->all(), [ + 'name' => 'required', + 'status' => 'required', + ]); + + if ($validator->fails()) { + return redirect()->back()->withErrors($validator)->withInput(); + } + + $factor = Factor::create([ + 'name' => $request->name, + 'status' => $request->status, + ]); + + if ($factor) { + return redirect()->route('admin.factors.index')->with('success', 'Factor created successfully.'); + } else { + return redirect()->back()->with('error', 'Failed to create factor.'); + } + } + + /** + * Display the specified resource. + * + * @param \App\Models\Factor $factor + * @return \Illuminate\Http\Response + */ + public function show(Factor $factor) + { + return view('admin.factors.detail', compact('factor')); + } + + /** + * Show the form for editing the specified resource. + * + * @param \App\Models\Factor $factor + * @return \Illuminate\Http\Response + */ + public function edit(Factor $factor) + { + return view('admin.factors.edit', compact('factor')); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param \App\Models\Factor $factor + * @return \Illuminate\Http\Response + */ + public function update(Request $request, Factor $factor) + { + $validator = Validator::make($request->all(), [ + 'name' => 'required', + 'status' => 'required', + ]); + + if ($validator->fails()) { + return redirect()->back()->withErrors($validator)->withInput(); + } + + $factor->update([ + 'name' => $request->name, + 'status' => $request->status, + ]); + + if ($factor) { + return redirect()->route('admin.factors.index')->with('success', 'Factor updated successfully.'); + } else { + return redirect()->back()->with('error', 'Failed to update factor.'); + } + } + + /** + * Remove the specified resource from storage. + * + * @param \App\Models\Factor $factor + * @return \Illuminate\Http\Response + */ + public function destroy(Factor $factor) + { + if (!$factor->delete()) { + return response()->json([ + 'status' => false, + 'message' => 'Data has been used on another page' + ], 400); + } + return response()->json([ + 'status' => true, + 'message' => 'Success delete data' + ], 200); + } +} diff --git a/app/Models/Factor.php b/app/Models/Factor.php new file mode 100644 index 0000000..9c39d2c --- /dev/null +++ b/app/Models/Factor.php @@ -0,0 +1,13 @@ + + */ +class FactorFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition() + { + return [ + // + ]; + } +} diff --git a/database/migrations/2024_12_10_124804_create_factors_table.php b/database/migrations/2024_12_10_124804_create_factors_table.php new file mode 100644 index 0000000..5695213 --- /dev/null +++ b/database/migrations/2024_12_10_124804_create_factors_table.php @@ -0,0 +1,33 @@ +id(); + $table->string('name'); + $table->enum('status', ['active', 'inactive'])->default('active'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('factors'); + } +}; diff --git a/database/seeders/FactorSeeder.php b/database/seeders/FactorSeeder.php new file mode 100644 index 0000000..9e7356d --- /dev/null +++ b/database/seeders/FactorSeeder.php @@ -0,0 +1,19 @@ + +
+
+
+
+

Factors

+ +
+ +
+ +
+
+
+
+
+
+
+

Create Factor

+
+
+
+ @csrf + @method('POST') +
+ + + @error('name') + + {{ $message }} + + @enderror +
+
+
+ + +
+
+
+
+ + +
+
+
+ +
+
+
+
+
+ +@endsection diff --git a/resources/views/admin/factors/detail.blade.php b/resources/views/admin/factors/detail.blade.php new file mode 100644 index 0000000..c50e9cf --- /dev/null +++ b/resources/views/admin/factors/detail.blade.php @@ -0,0 +1,58 @@ +@extends('layouts.master') +@section('title', 'Detail Factor') +@section('content') +
+
+
+
+
+

Factors

+ +
+ +
+ +
+
+
+
+
+
+
+

Detail Factor

+
+
+
+ @csrf + @method('PUT') +
+ + + @error('name') + + {{ $message }} + + @enderror +
+
+
+ + +
+
+
+ +
+
+
+
+
+
+@endsection diff --git a/resources/views/admin/factors/edit.blade.php b/resources/views/admin/factors/edit.blade.php new file mode 100644 index 0000000..876d55d --- /dev/null +++ b/resources/views/admin/factors/edit.blade.php @@ -0,0 +1,68 @@ +@extends('layouts.master') +@section('title', 'Edit Factor') +@section('content') +
+
+
+
+
+

Factors

+ +
+ +
+ +
+
+
+
+
+
+
+

Edit Factor

+
+
+
+ @csrf + @method('PUT') +
+ + + @error('name') + + {{ $message }} + + @enderror +
+
+
+ + +
+
+
+
+ + +
+
+
+ +
+
+
+
+
+
+@endsection diff --git a/resources/views/admin/factors/index.blade.php b/resources/views/admin/factors/index.blade.php new file mode 100644 index 0000000..8d6b351 --- /dev/null +++ b/resources/views/admin/factors/index.blade.php @@ -0,0 +1,156 @@ +@extends('layouts.master') +@section('title', 'Factor Datas') +@section('styles') + + + + + +@endsection +@section('content') +
+
+
+
+
+

Factor

+ +
+ +
+ +
+
+
+
+
+
+
+

Factor Data

+
+
+ Create Factor + + + + + + + + + + + @foreach ($factors as $key => $factor) + + + + + + + @endforeach + +
#NameStatus#
{{ $loop->iteration }}{{ $factor->name }} + @if ($factor->status == 'active') + {{ ucwords($factor->status) }} + @else + {{ ucwords($factor->status) }} + @endif + + +
+
+
+
+
+
+
+@endsection +@section('scripts') + + + + + + + + +@endsection diff --git a/resources/views/layouts/sidebar.blade.php b/resources/views/layouts/sidebar.blade.php index 7e6c775..86a2f42 100644 --- a/resources/views/layouts/sidebar.blade.php +++ b/resources/views/layouts/sidebar.blade.php @@ -36,6 +36,11 @@ Likert +
  • + + Factor + +
  • diff --git a/routes/web.php b/routes/web.php index c5022ae..e2eef53 100644 --- a/routes/web.php +++ b/routes/web.php @@ -35,6 +35,9 @@ // Addcition Route::resource('likerts', App\Http\Controllers\Admin\LikertController::class); + + // Addcition + Route::resource('factors', App\Http\Controllers\Admin\FactorController::class); }); Route::middleware('role:user')->name('user.')->group(function () {