diff --git a/app/Http/Controllers/Auth/User/LoginController.php b/app/Http/Controllers/Auth/User/LoginController.php deleted file mode 100644 index e69de29..0000000 diff --git a/app/Http/Controllers/Backend/AdminsController.php b/app/Http/Controllers/Backend/AdminsController.php index ee7517d..bea6fa7 100644 --- a/app/Http/Controllers/Backend/AdminsController.php +++ b/app/Http/Controllers/Backend/AdminsController.php @@ -56,6 +56,7 @@ class AdminsController extends Controller $admin->password = Hash::make($request->password); $admin->username = $request->username; $admin->email = $request->email; + $admin->phone = $request->phone; $admin->save(); if ($request->roles) { @@ -93,6 +94,7 @@ class AdminsController extends Controller $admin->name = $request->name; $admin->email = $request->email; $admin->username = $request->username; + $admin->phone = $request->phone; if ($request->password) { $admin->password = Hash::make($request->password); @@ -104,7 +106,7 @@ class AdminsController extends Controller } session()->flash('success', 'Admin has been updated.'); - return back(); + return redirect()->route('admin.admins.index'); } public function destroy(int $id): RedirectResponse @@ -114,6 +116,6 @@ class AdminsController extends Controller $admin = Admin::findOrFail($id); $admin->delete(); session()->flash('success', 'Admin has been deleted.'); - return back(); + return redirect()->route('admin.admins.index'); } } \ No newline at end of file diff --git a/app/Http/Controllers/Backend/RolesController.php b/app/Http/Controllers/Backend/RolesController.php index 4755215..07affb2 100644 --- a/app/Http/Controllers/Backend/RolesController.php +++ b/app/Http/Controllers/Backend/RolesController.php @@ -104,7 +104,7 @@ class RolesController extends Controller } session()->flash('success', 'Role has been updated.'); - return back(); + return redirect()->route('admin.roles.index'); } public function destroy(int $id): RedirectResponse diff --git a/app/Http/Controllers/Forms/FormUpCountryController.php b/app/Http/Controllers/Forms/FormUpCountryController.php new file mode 100644 index 0000000..e28fa01 --- /dev/null +++ b/app/Http/Controllers/Forms/FormUpCountryController.php @@ -0,0 +1,45 @@ + Rayon::all() + ]); + } + + public function store() + { + + } + + public function edit() + { + return view('backend.pages.forms.upcountry.edit', [ + 'rayons' => Rayon::all() + ]); + } + + public function update() + { + + } + + public function destroy() + { + + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Master/CategoryController.php b/app/Http/Controllers/Master/CategoryController.php new file mode 100644 index 0000000..32f3d1c --- /dev/null +++ b/app/Http/Controllers/Master/CategoryController.php @@ -0,0 +1,69 @@ + Kategori::all() + ]); + } + + public function create() + { + return view('backend.pages.master.category.create'); + } + + public function store(Request $request) + { + $request->validate([ + 'name' => 'required|unique:kategori,name', + 'account_number' => 'required|unique:kategori,account_number' + ]); + + Kategori::create([ + 'name' => $request->name, + 'account_number' => $request->account_number + ]); + + session()->flash('success', 'Category has been created.'); + return redirect()->route('admin.category.index'); + } + + public function edit($id) + { + return view('backend.pages.master.category.edit', [ + 'category' => Kategori::findOrfail($id) + ]); + } + + public function update(Request $request, $id) + { + $request->validate([ + 'name' => 'required|unique:kategori,name,' . $id . ',id', + 'account_number' => 'required|unique:kategori,account_number,' . $id . ',id' + ]); + + Kategori::findOrfail($id)->update([ + 'name' => $request->name, + 'account_number' => $request->account_number + ]); + + session()->flash('success', 'Category has been updated.'); + return redirect()->route('admin.category.index'); + } + + public function destroy($id) + { + Kategori::findOrfail($id)->delete(); + + session()->flash('success', 'Category has been deleted.'); + return redirect()->route('admin.category.index'); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Master/CostCentreController.php b/app/Http/Controllers/Master/CostCentreController.php new file mode 100644 index 0000000..1c9bb54 --- /dev/null +++ b/app/Http/Controllers/Master/CostCentreController.php @@ -0,0 +1,69 @@ + CostCentre::all() + ]); + } + + public function create() + { + return view('backend.pages.master.cost.create'); + } + + public function store(Request $request) + { + $request->validate([ + 'code' => 'required|unique:cost_centre,code', + 'name' => 'required|unique:cost_centre,name' + ]); + + CostCentre::create([ + 'code' => $request->code, + 'name' => $request->name + ]); + + session()->flash('success', 'Cost Centre has been created.'); + return redirect()->route('admin.cost.index'); + } + + public function edit($id) + { + return view('backend.pages.master.cost.edit', [ + 'cost' => CostCentre::findOrfail($id) + ]); + } + + public function update(Request $request, $id) + { + $request->validate([ + 'code' => 'required|unique:cost_centre,code,' . $id . ',id', + 'name' => 'required|unique:cost_centre,name,' . $id . ',id' + ]); + + CostCentre::findOrfail($id)->update([ + 'code' => $request->code, + 'name' => $request->name + ]); + + session()->flash('success', 'Cost has been updated.'); + return redirect()->route('admin.cost.index'); + } + + public function destroy($id) + { + CostCentre::findOrfail($id)->delete(); + + session()->flash('success', 'Cost has been deleted.'); + return redirect()->route('admin.cost.index'); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Master/RayonController.php b/app/Http/Controllers/Master/RayonController.php new file mode 100644 index 0000000..9bdcda0 --- /dev/null +++ b/app/Http/Controllers/Master/RayonController.php @@ -0,0 +1,69 @@ + Rayon::all() + ]); + } + + public function create() + { + return view('backend.pages.master.rayon.create'); + } + + public function store(Request $request) + { + $request->validate([ + 'code' => 'required|unique:rayon,code', + 'name' => 'required|unique:rayon,name' + ]); + + Rayon::create([ + 'code' => $request->code, + 'name' => $request->name + ]); + + session()->flash('success', 'Rayon has been created.'); + return redirect()->route('admin.rayon.index'); + } + + public function edit($id) + { + return view('backend.pages.master.rayon.edit', [ + 'rayon' => Rayon::findOrfail($id) + ]); + } + + public function update(Request $request, $id) + { + $request->validate([ + 'code' => 'required|unique:rayon,code,' . $id . ',id', + 'name' => 'required|unique:rayon,name,' . $id . ',id' + ]); + + Rayon::findOrfail($id)->update([ + 'code' => $request->code, + 'name' => $request->name + ]); + + session()->flash('success', 'Rayon has been updated.'); + return redirect()->route('admin.rayon.index'); + } + + public function destroy($id) + { + Rayon::findOrfail($id)->delete(); + + session()->flash('success', 'Rayon has been deleted.'); + return redirect()->route('admin.rayon.index'); + } +} \ No newline at end of file diff --git a/app/Http/Middleware/MenuMiddleware.php b/app/Http/Middleware/MenuMiddleware.php index 18c8d57..14e0c69 100644 --- a/app/Http/Middleware/MenuMiddleware.php +++ b/app/Http/Middleware/MenuMiddleware.php @@ -7,7 +7,6 @@ use Spatie\Menu\Laravel\Facades\Menu; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Auth; - class MenuMiddleware { @@ -42,9 +41,7 @@ class MenuMiddleware WHERE m.parent_id IS NULL AND rm.role_id = '".$currentRoleId."' ORDER BY m.id "); - - - + foreach ($menus as $item) { // Ambil submenu jika ada $children = DB::select(" @@ -77,7 +74,7 @@ class MenuMiddleware '' diff --git a/app/Http/Requests/AdminRequest.php b/app/Http/Requests/AdminRequest.php index f5a3c18..f1cd7d1 100644 --- a/app/Http/Requests/AdminRequest.php +++ b/app/Http/Requests/AdminRequest.php @@ -30,6 +30,7 @@ class AdminRequest extends FormRequest 'email' => 'required|max:100|email|unique:admins,email,' . $adminId, 'username' => 'required|max:100|unique:admins,username,' . $adminId, 'password' => $adminId ? 'nullable|confirmed' : 'confirmed', + 'phone' => 'required|max:15|unique:admins,phone,' . $adminId, ]; } } \ No newline at end of file diff --git a/app/Models/Admin.php b/app/Models/Admin.php index c74ffcb..9f3e39d 100644 --- a/app/Models/Admin.php +++ b/app/Models/Admin.php @@ -3,6 +3,7 @@ namespace App\Models; use Illuminate\Contracts\Auth\MustVerifyEmail; +use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Support\Facades\DB; @@ -11,6 +12,7 @@ use Spatie\Permission\Traits\HasRoles; class Admin extends Authenticatable { use Notifiable, HasRoles; + use SoftDeletes; /** * Set the default guard for this model. diff --git a/app/Models/Rayon.php b/app/Models/Rayon.php index 70962bd..412d2d2 100644 --- a/app/Models/Rayon.php +++ b/app/Models/Rayon.php @@ -10,5 +10,5 @@ class Rayon extends Model use SoftDeletes; protected $table = 'rayon'; - protected $fillable = ['name']; + protected $fillable = ['code', 'name']; } diff --git a/database/migrations/2024_12_12_110123_add_code_to_rayon_table.php b/database/migrations/2024_12_12_110123_add_code_to_rayon_table.php new file mode 100644 index 0000000..917de60 --- /dev/null +++ b/database/migrations/2024_12_12_110123_add_code_to_rayon_table.php @@ -0,0 +1,28 @@ +string('code')->after('id')->nullable()->unique(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('rayon', function (Blueprint $table) { + $table->dropColumn('code'); + }); + } +}; diff --git a/database/seeds/AdminSeeder.php b/database/seeds/AdminSeeder.php index 40e317b..728292a 100644 --- a/database/seeds/AdminSeeder.php +++ b/database/seeds/AdminSeeder.php @@ -1,5 +1,7 @@ call(AdminSeeder::class); $this->call(RolePermissionSeeder::class); $this->call(MenuSeeder::class); + $this->call(RayonSeeder::class); } } diff --git a/database/seeds/MenuSeeder.php b/database/seeds/MenuSeeder.php index d36fa04..3b5c912 100644 --- a/database/seeds/MenuSeeder.php +++ b/database/seeds/MenuSeeder.php @@ -1,5 +1,7 @@ Carbon::now(), ] ]); + + + DB::table('role_menu')->insert([ + [ + 'role_id' => 1, + 'menu_id' => 61, + 'created_at' => Carbon::now(), + 'updated_at' => Carbon::now(), + ], + [ + 'role_id' => 1, + 'menu_id' => 62, + 'created_at' => Carbon::now(), + 'updated_at' => Carbon::now(), + ], + [ + 'role_id' => 1, + 'menu_id' => 63, + 'created_at' => Carbon::now(), + 'updated_at' => Carbon::now(), + ] + ]); } } diff --git a/database/seeds/RayonSeeder.php b/database/seeds/RayonSeeder.php new file mode 100644 index 0000000..060191a --- /dev/null +++ b/database/seeds/RayonSeeder.php @@ -0,0 +1,30 @@ + 'R1', + 'name' => 'Rayon 1', + ]); + + Rayon::create([ + 'code' => 'R2', + 'name' => 'Rayon 2', + ]); + + Rayon::create([ + 'code' => 'R3', + 'name' => 'Rayon 3', + ]); + } +} diff --git a/database/seeds/RolePermissionSeeder.php b/database/seeds/RolePermissionSeeder.php index ac42196..b1e451d 100644 --- a/database/seeds/RolePermissionSeeder.php +++ b/database/seeds/RolePermissionSeeder.php @@ -1,5 +1,7 @@ @endif + + @if (Session::has('success')) +@endsection diff --git a/resources/views/backend/pages/master/cost/create.blade.php b/resources/views/backend/pages/master/cost/create.blade.php new file mode 100644 index 0000000..6f01438 --- /dev/null +++ b/resources/views/backend/pages/master/cost/create.blade.php @@ -0,0 +1,45 @@ +@extends('layouts.app') + +@section('title') + Dashboard +@endsection + +@section('admin-content') +
+
+
+
+

Tambahkan Cost Centre Baru

+
+
+ +
+
+
+
+
+
+
+
+
+ @csrf + @include('backend.layouts.partials.messages') +
+ + +
+ +
+ + +
+ +
+
+
+
+
+@endsection diff --git a/resources/views/backend/pages/master/cost/edit.blade.php b/resources/views/backend/pages/master/cost/edit.blade.php new file mode 100644 index 0000000..deeac40 --- /dev/null +++ b/resources/views/backend/pages/master/cost/edit.blade.php @@ -0,0 +1,46 @@ +@extends('layouts.app') + +@section('title') + Dashboard +@endsection + +@section('admin-content') +
+
+
+
+

Edit Cost Centre

+
+
+ +
+
+
+
+
+
+
+
+
+ @csrf + @method('PUT') + @include('backend.layouts.partials.messages') +
+ + +
+ +
+ + +
+ +
+
+
+
+
+@endsection diff --git a/resources/views/backend/pages/master/cost/index.blade.php b/resources/views/backend/pages/master/cost/index.blade.php new file mode 100644 index 0000000..ead7f8a --- /dev/null +++ b/resources/views/backend/pages/master/cost/index.blade.php @@ -0,0 +1,90 @@ +@extends('layouts.app') + +@section('title') + Dashboard +@endsection + +@section('admin-content') +
+
+
+
+

Data Master Cost Centre

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

List Data Cost Centre

+

+ + Add New Cost Centre + +

+
+
+ @include('backend.layouts.partials.messages') + + + + + + + + + + + @foreach ($costs as $cost) + + + + + + + @endforeach + +
#CodeNamaAksi
{{ $loop->index + 1 }}{{ $cost->code }}{{ $cost->name }} + @if (auth()->user()->can('admin.edit')) + Edit + @endif + @if (auth()->user()->can('admin.delete')) + + {{ __('Delete') }} + + + + @endif +
+
+
+
+
+
+@endsection + +@section('scripts') + +@endsection diff --git a/resources/views/backend/pages/master/rayon/create.blade.php b/resources/views/backend/pages/master/rayon/create.blade.php new file mode 100644 index 0000000..f7cfcbd --- /dev/null +++ b/resources/views/backend/pages/master/rayon/create.blade.php @@ -0,0 +1,44 @@ +@extends('layouts.app') + +@section('title') + Dashboard +@endsection + +@section('admin-content') +
+
+
+
+

Tambahkan Rayon Baru

+
+
+ +
+
+
+
+
+
+
+
+
+ @csrf + @include('backend.layouts.partials.messages') +
+ + +
+
+ + +
+ +
+
+
+
+
+@endsection diff --git a/resources/views/backend/pages/master/rayon/edit.blade.php b/resources/views/backend/pages/master/rayon/edit.blade.php new file mode 100644 index 0000000..eb13283 --- /dev/null +++ b/resources/views/backend/pages/master/rayon/edit.blade.php @@ -0,0 +1,45 @@ +@extends('layouts.app') + +@section('title') + Dashboard +@endsection + +@section('admin-content') +
+
+
+
+

Edit Rayon

+
+
+ +
+
+
+
+
+
+
+
+
+ @csrf + @method('PUT') + @include('backend.layouts.partials.messages') +
+ + +
+
+ + +
+ +
+
+
+
+
+@endsection diff --git a/resources/views/backend/pages/master/rayon/index.blade.php b/resources/views/backend/pages/master/rayon/index.blade.php new file mode 100644 index 0000000..ed5840e --- /dev/null +++ b/resources/views/backend/pages/master/rayon/index.blade.php @@ -0,0 +1,90 @@ +@extends('layouts.app') + +@section('title') + Dashboard +@endsection + +@section('admin-content') +
+
+
+
+

Data Master Rayon

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

List Data Rayon

+

+ + Add New Rayon + +

+
+
+ @include('backend.layouts.partials.messages') + + + + + + + + + + + @foreach ($rayons as $rayon) + + + + + + + @endforeach + +
#CodeNamaAksi
{{ $loop->index + 1 }}{{ $rayon->code }}{{ $rayon->name }} + @if (auth()->user()->can('admin.edit')) + Edit + @endif + @if (auth()->user()->can('admin.delete')) + + {{ __('Delete') }} + + + + @endif +
+
+
+
+
+
+@endsection + +@section('scripts') + +@endsection diff --git a/resources/views/backend/pages/roles/index.blade.php b/resources/views/backend/pages/roles/index.blade.php index 91ee65e..a22eaa6 100644 --- a/resources/views/backend/pages/roles/index.blade.php +++ b/resources/views/backend/pages/roles/index.blade.php @@ -4,7 +4,6 @@ {{ $pageInfo['title'] }} @endsection - @section('admin-content')
@@ -63,10 +62,23 @@ @endforeach - @if (auth::user()->can('admin.edit')) + @if (auth()->user()->can('admin.edit')) Edit @endif + @if (auth()->user()->can('admin.delete')) + + {{ __('Delete') }} + + + + @endif Assign Menus diff --git a/resources/views/layouts/partials/scripts.blade.php b/resources/views/layouts/partials/scripts.blade.php index c3e0466..371f808 100644 --- a/resources/views/layouts/partials/scripts.blade.php +++ b/resources/views/layouts/partials/scripts.blade.php @@ -29,5 +29,4 @@ }) - diff --git a/resources/views/layouts/partials/sidebar.blade.php b/resources/views/layouts/partials/sidebar.blade.php index b963ea9..bbe83f9 100644 --- a/resources/views/layouts/partials/sidebar.blade.php +++ b/resources/views/layouts/partials/sidebar.blade.php @@ -1,8 +1,8 @@ @php - $usr = Auth::guard('admin')->user(); + $usr = Auth::guard('admin')->user(); @endphp diff --git a/routes/web.php b/routes/web.php index 5989c8b..453304b 100644 --- a/routes/web.php +++ b/routes/web.php @@ -8,6 +8,10 @@ use App\Http\Controllers\GenerateDataMasterController; use App\Http\Controllers\Backend\DashboardController; use App\Http\Controllers\Backend\RolesController; use App\Http\Controllers\Backend\MenuRoleController; +use App\Http\Controllers\Forms\FormUpCountryController; +use App\Http\Controllers\Master\RayonController; +use App\Http\Controllers\Master\CostCentreController; +use App\Http\Controllers\Master\CategoryController; Auth::routes(); @@ -27,10 +31,47 @@ Route::group(['prefix' => 'admin', 'as' => 'admin.', 'middleware' => ['auth:admi Route::resource('admins', AdminsController::class); Route::resource('roles', RolesController::class); Route::get('/admin', [DashboardController::class, 'index'])->name('dashboard'); + + // Rayon + Route::get('/rayon', [RayonController::class, 'index'])->name('rayon.index'); + Route::get('/rayon/create', [RayonController::class, 'create'])->name('rayon.create'); + Route::post('/rayon/store', [RayonController::class, 'store'])->name('rayon.store'); + Route::get('/rayon/edit/{id}', [RayonController::class, 'edit'])->name('rayon.edit'); + Route::put('/rayon/update/{id}', [RayonController::class, 'update'])->name('rayon.update'); + Route::delete('/rayon/destroy/{id}', [RayonController::class, 'destroy'])->name('rayon.destroy'); + + // Cost Centre + Route::get('/cost', [CostCentreController::class, 'index'])->name('cost.index'); + Route::get('/cost/create', [CostCentreController::class, 'create'])->name('cost.create'); + Route::post('/cost/store', [CostCentreController::class, 'store'])->name('cost.store'); + Route::get('/cost/edit/{id}', [CostCentreController::class, 'edit'])->name('cost.edit'); + Route::put('/cost/update/{id}', [CostCentreController::class, 'update'])->name('cost.update'); + Route::delete('/cost/destroy/{id}', [CostCentreController::class, 'destroy'])->name('cost.destroy'); + + // Category + Route::get('/category', [CategoryController::class, 'index'])->name('category.index'); + Route::get('/category/create', [CategoryController::class, 'create'])->name('category.create'); + Route::post('/category/store', [CategoryController::class, 'store'])->name('category.store'); + Route::get('/category/edit/{id}', [CategoryController::class, 'edit'])->name('category.edit'); + Route::put('/category/update/{id}', [CategoryController::class, 'update'])->name('category.update'); + Route::delete('/category/destroy/{id}', [CategoryController::class, 'destroy'])->name('category.destroy'); + })->middleware(['auth:admin']); Route::middleware(['auth:admin', 'menu'])->group(function () { Route::get('/', [DashboardController::class, 'index'])->name('dashboard.index'); + + // Forms + Route::prefix('forms')->group(function () { + // Up Country + Route::get('/up-country', [FormUpCountryController::class, 'index'])->name('forms.up-country'); + Route::get('/up-country/create', [FormUpCountryController::class, 'create'])->name('forms.up-country.create'); + Route::post('/up-country/store', [FormUpCountryController::class, 'store'])->name('forms.up-country.store'); + Route::get('/up-country/edit/{id}', [FormUpCountryController::class, 'edit'])->name('forms.up-country.edit'); + Route::put('/up-country/update/{id}', [FormUpCountryController::class, 'update'])->name('forms.up-country.update'); + Route::delete('/up-country/destroy/{id}', [FormUpCountryController::class, 'destroy'])->name('forms.up-country.destroy'); + }); + //Menu Role Route::get('/auth/menu-tree/{id}', [MenuRoleController::class, 'index'])->name('auth.menurole.index'); Route::post('/auth/menu-tree/submit', [MenuRoleController::class, 'saveMenu'])->name('auth.menurole.submit');