feat(application): membuat halaman dan update untuk setting aplikasi dan route model binding

This commit is contained in:
Yoga Pangestu 2024-11-27 12:30:40 +07:00
parent 8c321d1c4d
commit b66b651a24
6 changed files with 155 additions and 0 deletions

View File

@ -0,0 +1,33 @@
<?php
namespace App\Http\Controllers\Admin\Setting;
use App\Http\Controllers\Controller;
use App\Http\Requests\Admin\Setting\ApplicationRequest;
use App\Models\Setting;
use App\Traits\UploadAttachment;
use Illuminate\Contracts\View\View;
use Illuminate\Http\RedirectResponse;
class ApplicationController extends Controller
{
use UploadAttachment;
public function index(): View
{
return view('pages.admin.setting.application', [
'pageTitle' => 'Aplikasi',
'application' => Setting::with('attachment')->first(),
]);
}
public function update(Setting $setting, ApplicationRequest $request): RedirectResponse
{
$validatedData = $request->validated();
$setting->update($validatedData);
notify()->success('Data berhasil diperbarui', 'Berhasil');
return back();
}
}

View File

@ -0,0 +1,33 @@
<?php
namespace App\Http\Requests\Admin\Setting;
use App\Traits\NotificationTrait;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
class ApplicationRequest extends FormRequest
{
use NotificationTrait;
public function authorize(): bool
{
return Auth::check();
}
public function rules(): array
{
return [
'name' => ['required', 'string', 'max:30'],
'email' => ['required', 'email', 'max:255'],
'contact_number' => ['required', 'string', 'regex:/^\+?[0-9]{10,15}$/'],
'description' => ['required', 'string', 'max:65535'],
];
}
protected function failedValidation(Validator $validator): void
{
$this->handleValidationFailure($validator);
}
}

View File

@ -9,6 +9,7 @@
use App\Models\Inventory;
use App\Models\Payroll;
use App\Models\Service;
use App\Models\Setting;
use App\Models\Transaction;
use App\Models\User;
use Illuminate\Support\Facades\Route;
@ -38,5 +39,6 @@ public function boot(): void
Route::bind('cash', fn (string $cash) => Cash::findOrFail(decryptId($cash)));
Route::bind('inventory', fn (string $inventory) => Inventory::findOrFail(decryptId($inventory)));
Route::bind('transaction', fn (string $transaction) => Transaction::findOrFail(decryptId($transaction)));
Route::bind('application', fn (string $application) => Setting::findOrFail(decryptId($application)));
}
}

View File

@ -0,0 +1,67 @@
@extends('layouts.admin')
@section('styles')
<link rel="stylesheet" href="{{ asset('assets/admin/css/vendors/select2.css') }}">
@endsection
@section('app')
<div class="container-fluid">
<div class="card">
<div class="card-body">
<form class="row g-3 custom-input"
action="{{ route('setting.application.update', encryptId($application->id)) }}" method="post"
enctype="multipart/form-data">
@csrf
@method('put')
<div class="col-lg-12 position-relative">
<label class="form-label" for="name">Nama</label>
<input name="name" class="form-control @error('name') is-invalid @enderror" id="name"
type="text" placeholder="Masukan Nama" value="{{ old('name', $application->name) }}">
@error('name')
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="col-lg-6 position-relative">
<label class="form-label" for="email">Email</label>
<input name="email" class="form-control @error('email') is-invalid @enderror" id="email"
type="text" placeholder="Masukan Email" value="{{ old('email', $application->email) }}">
@error('email')
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="col-lg-6 position-relative">
<label class="form-label" for="contact_number">Kontak
<span class="form-span"><i>(format : 08xxxxxxxx)</i></span>
</label>
<input name="contact_number" class="form-control @error('contact_number') is-invalid @enderror"
id="contact_number" type="number" placeholder="Masukan Kontak"
value="{{ old('contact_number', $application->contact_number) }}">
@error('contact_number')
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="col-lg-12 position-relative">
<label class="form-label" for="description">Deskripsi</label>
<textarea name="description" class="form-control @error('description') is-invalid @enderror" id="description"
rows="3" placeholder="Masukan Deskripsi">{{ old('description', $application->description) }}</textarea>
@error('description')
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="col-12">
<button class="btn btn-primary button-disable" type="submit">Simpan</button>
</div>
</form>
</div>
</div>
</div>
@endsection
@section('afterScripts')
<script src="{{ asset('assets/js/forms/button-disable.js?ver=1.0.0') }}"></script>
@endsection

View File

@ -134,6 +134,18 @@
<span>Barang</span>
</a>
</li>
<li class="sidebar-main-title">
<div>
<h6>Pengaturan</h6>
</div>
</li>
<li class="sidebar-list">
<i class="fa fa-thumb-tack"></i>
<a class="sidebar-link sidebar-title link-nav" href="{{ route('setting.application') }}">
<i data-feather="settings"></i>
<span>Aplikasi</span>
</a>
</li>
</ul>
</div>
<div class="right-arrow" id="right-arrow"><i data-feather="arrow-right"></i></div>

View File

@ -12,6 +12,7 @@
use App\Http\Controllers\Admin\Master\CustomerController;
use App\Http\Controllers\Admin\Master\ServiceController;
use App\Http\Controllers\Admin\Master\UserController;
use App\Http\Controllers\Admin\Setting\ApplicationController;
use Illuminate\Support\Facades\Route;
Route::prefix('auth')->group(function () {
@ -116,4 +117,11 @@
Route::delete('delete/{inventory}', [InventoryController::class, 'delete'])->name('manage.inventory.delete');
});
});
Route::prefix('setting')->group(function () {
Route::prefix('application')->group(function () {
Route::get('/', [ApplicationController::class, 'index'])->name('setting.application');
Route::put('update/{application}', [ApplicationController::class, 'update'])->name('setting.application.update');
});
});
});