update revisi 1

This commit is contained in:
Jagad R R
2024-12-26 18:37:34 +07:00
parent 19ef6b91bb
commit cc9e2d7214
16 changed files with 216 additions and 61 deletions
@@ -17,6 +17,8 @@ use App\Models\FormEntertaimentPresentation;
use App\Models\FormVehicleRunningCost;
use App\Models\FormOthers;
use App\Models\FormMeetingSeminar;
use App\Models\UserHasCabang;
use App\Models\Cabang;
class AdminsController extends Controller
{
@@ -24,6 +26,7 @@ class AdminsController extends Controller
public function index(): Renderable
{
$this->checkAuthorization(auth()->user(), ['admin.view']);
session()->put('redirect_url', route('admin.admins.index'));
$pageInfo = [
'title' => 'User Access List',
@@ -33,7 +36,7 @@ class AdminsController extends Controller
return view('backend.pages.admins.index', [
'admins' => Admin::all(),
'pageInfo' => $pageInfo
'pageInfo' => $pageInfo,
]);
}
@@ -49,7 +52,8 @@ class AdminsController extends Controller
return view('backend.pages.admins.create', [
'roles' => Role::all(),
'pageInfo' => $pageInfo
'pageInfo' => $pageInfo,
'cabangs' => Cabang::all()
]);
}
@@ -65,6 +69,14 @@ class AdminsController extends Controller
$admin->phone = $request->phone;
$admin->save();
// Assign the user to a cabang
if($request->cabang_id) {
UserHasCabang::create([
'user_id' => $admin->id,
'cabang_id' => $request->cabang_id
]);
}
if ($request->roles) {
$admin->assignRole($request->roles);
}
@@ -81,7 +93,7 @@ class AdminsController extends Controller
// }
session()->flash('success', 'Admin has been created.');
return redirect()->route('admin.admins.index');
return redirect()->back();
}
public function edit(int $id): Renderable
@@ -99,7 +111,8 @@ class AdminsController extends Controller
return view('backend.pages.admins.edit', [
'admin' => $admin,
'roles' => Role::all(),
'pageInfo' => $pageInfo
'pageInfo' => $pageInfo,
'cabangs' => Cabang::all()
]);
}
@@ -122,8 +135,14 @@ class AdminsController extends Controller
$admin->assignRole($request->roles);
}
// Update the user's cabang
if($request->cabang_id) {
$userHasCabang = UserHasCabang::where('user_id', $admin->id)->first();
$userHasCabang ? $userHasCabang->update(['cabang_id' => $request->cabang_id]) : UserHasCabang::create(['user_id' => $admin->id, 'cabang_id' => $request->cabang_id]);
}
session()->flash('success', 'Admin has been updated.');
return redirect()->route('admin.admins.index');
return redirect()->back();
}
public function expense($user_id)
@@ -162,6 +181,6 @@ class AdminsController extends Controller
$admin = Admin::findOrFail($id);
$admin->delete();
session()->flash('success', 'Admin has been deleted.');
return redirect()->route('admin.admins.index');
return redirect()->back();
}
}
@@ -17,6 +17,8 @@ class RolesController extends Controller
public function index(): Renderable
{
$this->checkAuthorization(auth()->user(), ['role.view']);
session()->put('redirect_url', route('admin.roles.index'));
$pageInfo = [
'title' => 'List Roles',
'sub_title' => 'List All User Roles',
@@ -59,7 +61,7 @@ class RolesController extends Controller
}
session()->flash('success', 'Role has been created.');
return redirect()->route('admin.roles.index');
return redirect()->back();
}
public function edit(int $id): Renderable|RedirectResponse
@@ -104,7 +106,7 @@ class RolesController extends Controller
}
session()->flash('success', 'Role has been updated.');
return redirect()->route('admin.roles.index');
return redirect()->back();
}
public function destroy(int $id): RedirectResponse
@@ -119,6 +121,6 @@ class RolesController extends Controller
$role->delete();
session()->flash('success', 'Role has been deleted.');
return redirect()->route('admin.roles.index');
return redirect()->back();
}
}
@@ -26,14 +26,25 @@ class FormEntertainmentPresentationController extends Controller
{
$this->checkAuthorization(auth()->user(), ['forms.entertainment.view']);
// get user role
// get user role
$role = auth()->user()->getRoleNames()[0];
$forms = null;
if($role == 'Marketing Information System' || $role == 'superadmin') {
$forms = FormEntertaimentPresentation::get();
} else {
$forms = FormEntertaimentPresentation::where('user_id', auth()->user()->id)->get();
if ($role == 'Admin Region') {
$region_id = auth()->user()->getMyCabangAndRegionId()['region'];
if ($region_id) {
$users = UserHasCabang::whereHas('cabang', function ($query) use ($region_id) {
$query->where('region_id', $region_id);
})->get();
$userIds = $users->pluck('user_id')->toArray();
$forms = $forms->whereIn('user_id', $userIds);
}
}
else {
$forms = $forms->where('user_id', auth()->user()->id);
}
session()->put('redirect_url', route('forms.entertainment'));
@@ -61,7 +72,7 @@ class FormEntertainmentPresentationController extends Controller
'name' => 'required',
'alamat' => 'required',
'nik_or_npwp' => 'required',
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048',
'bukti2' => 'nullable|file|mimes:xlsx,xls,csv',
'bukti3' => 'nullable|file|mimes:pdf',
]);
@@ -165,7 +176,7 @@ class FormEntertainmentPresentationController extends Controller
'name' => 'required',
'alamat' => 'required',
'nik_or_npwp' => 'required',
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048',
'bukti2' => 'nullable|file|mimes:xlsx,xls,csv',
'bukti3' => 'nullable|file|mimes:pdf',
]);
@@ -26,14 +26,25 @@ class FormMeetingSeminarController extends Controller
{
$this->checkAuthorization(auth()->user(), ['forms.meeting.view']);
// get user role
// get user role
$role = auth()->user()->getRoleNames()[0];
$forms = null;
if($role == 'Marketing Information System' || $role == 'superadmin') {
$forms = FormMeetingSeminar::get();
} else {
$forms = FormMeetingSeminar::where('user_id', auth()->user()->id)->get();
if ($role == 'Admin Region') {
$region_id = auth()->user()->getMyCabangAndRegionId()['region'];
if ($region_id) {
$users = UserHasCabang::whereHas('cabang', function ($query) use ($region_id) {
$query->where('region_id', $region_id);
})->get();
$userIds = $users->pluck('user_id')->toArray();
$forms = $forms->whereIn('user_id', $userIds);
}
}
else {
$forms = $forms->where('user_id', auth()->user()->id);
}
session()->put('redirect_url', route('forms.meeting'));
@@ -57,7 +68,7 @@ class FormMeetingSeminarController extends Controller
'allowance' => 'required',
'transport_ankot' => 'required',
'hotel' => 'required',
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048',
'bukti2' => 'nullable|file|mimes:xlsx,xls,csv',
'bukti3' => 'nullable|file|mimes:pdf',
]);
@@ -154,7 +165,7 @@ class FormMeetingSeminarController extends Controller
'allowance' => 'required',
'transport_ankot' => 'required',
'hotel' => 'required',
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048',
'bukti2' => 'nullable|file|mimes:xlsx,xls,csv',
'bukti3' => 'nullable|file|mimes:pdf',
]);
@@ -30,10 +30,24 @@ class FormOtherController extends Controller
$role = auth()->user()->getRoleNames()[0];
$forms = null;
if($role == 'Marketing Information System' || $role == 'superadmin') {
// get user role
$role = auth()->user()->getRoleNames()[0];
$forms = FormOthers::get();
} else {
$forms = FormOthers::where('user_id', auth()->user()->id)->get();
if ($role == 'Admin Region') {
$region_id = auth()->user()->getMyCabangAndRegionId()['region'];
if ($region_id) {
$users = UserHasCabang::whereHas('cabang', function ($query) use ($region_id) {
$query->where('region_id', $region_id);
})->get();
$userIds = $users->pluck('user_id')->toArray();
$forms = $forms->whereIn('user_id', $userIds);
}
}
else {
$forms = $forms->where('user_id', auth()->user()->id);
}
session()->put('redirect_url', route('forms.other'));
@@ -60,7 +74,7 @@ class FormOtherController extends Controller
'tanggal' => 'required|date',
'keterangan' => 'required',
'total' => 'required',
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048',
'bukti2' => 'nullable|file|mimes:xlsx,xls,csv',
'bukti3' => 'nullable|file|mimes:pdf',
]);
@@ -159,7 +173,7 @@ class FormOtherController extends Controller
'tanggal' => 'required|date',
'keterangan' => 'required',
'total' => 'required',
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048',
'bukti2' => 'nullable|file|mimes:xlsx,xls,csv',
'bukti3' => 'nullable|file|mimes:pdf',
]);
@@ -28,12 +28,22 @@ class FormUpCountryController extends Controller
// get user role
$role = auth()->user()->getRoleNames()[0];
$forms = null;
$forms = FormUpCountry::get();
if($role == 'Marketing Information System' || $role == 'superadmin') {
$forms = FormUpCountry::with('rayon')->get();
} else {
$forms = FormUpCountry::with('rayon')->where('user_id', auth()->user()->id)->get();
if ($role == 'Admin Region') {
$region_id = auth()->user()->getMyCabangAndRegionId()['region'];
if ($region_id) {
$users = UserHasCabang::whereHas('cabang', function ($query) use ($region_id) {
$query->where('region_id', $region_id);
})->get();
$userIds = $users->pluck('user_id')->toArray();
$forms = $forms->whereIn('user_id', $userIds);
}
}
else {
$forms = $forms->where('user_id', auth()->user()->id);
}
session()->put('redirect_url', route('forms.up-country'));
@@ -63,7 +73,7 @@ class FormUpCountryController extends Controller
'allowance' => 'required',
'transport_dalkot' => 'required',
'transport_ankot' => 'required',
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048',
'bukti2' => 'nullable|file|mimes:xlsx,xls,csv',
'bukti3' => 'nullable|file|mimes:pdf',
]);
@@ -171,7 +181,7 @@ class FormUpCountryController extends Controller
'transport_dalkot' => 'required',
'transport_ankot' => 'required',
'hotel' => 'required',
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048',
'bukti2' => 'nullable|file|mimes:xlsx,xls,csv',
'bukti3' => 'nullable|file|mimes:pdf',
]);
@@ -28,12 +28,22 @@ class FormVehicleController extends Controller
// get user role
$role = auth()->user()->getRoleNames()[0];
$forms = null;
if($role == 'Marketing Information System' || $role == 'superadmin') {
$forms = FormVehicleRunningCost::get();
} else {
$forms = FormVehicleRunningCost::where('user_id', auth()->user()->id)->get();
if ($role == 'Admin Region') {
$region_id = auth()->user()->getMyCabangAndRegionId()['region'];
if ($region_id) {
$users = UserHasCabang::whereHas('cabang', function ($query) use ($region_id) {
$query->where('region_id', $region_id);
})->get();
$userIds = $users->pluck('user_id')->toArray();
$forms = $forms->whereIn('user_id', $userIds);
}
}
else {
$forms = $forms->where('user_id', auth()->user()->id);
}
session()->put('redirect_url', route('forms.vehicle'));
@@ -61,7 +71,7 @@ class FormVehicleController extends Controller
'tipe_bensin' => 'required|in:pertalite,pertamax',
'nopol' => 'required',
'keterangan' => 'required',
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048',
'bukti2' => 'nullable|file|mimes:xlsx,xls,csv',
'bukti3' => 'nullable|file|mimes:pdf',
]);
@@ -165,7 +175,7 @@ class FormVehicleController extends Controller
'tipe_bensin' => 'required|in:pertalite,pertamax',
'nopol' => 'required',
'keterangan' => 'required',
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048',
'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048',
'bukti2' => 'nullable|file|mimes:xlsx,xls,csv',
'bukti3' => 'nullable|file|mimes:pdf',
]);
@@ -11,6 +11,8 @@ class CategoryController extends Controller
public function index()
{
$this->checkAuthorization(auth()->user(), ['category.view']);
session()->put('redirect_url', route('admin.category.index'));
return view('backend.pages.master.category.index', [
'categories' => Kategori::all()
]);
@@ -36,7 +38,7 @@ class CategoryController extends Controller
]);
session()->flash('success', 'Category has been created.');
return redirect()->route('admin.category.index');
return redirect()->back();
}
public function edit($id)
@@ -61,7 +63,7 @@ class CategoryController extends Controller
]);
session()->flash('success', 'Category has been updated.');
return redirect()->route('admin.category.index');
return redirect()->back();
}
public function destroy($id)
@@ -70,6 +72,6 @@ class CategoryController extends Controller
Kategori::findOrfail($id)->delete();
session()->flash('success', 'Category has been deleted.');
return redirect()->route('admin.category.index');
return redirect()->back();
}
}
@@ -11,6 +11,8 @@ class CostCentreController extends Controller
public function index()
{
$this->checkAuthorization(auth()->user(), ['cost.view']);
session()->put('redirect_url', route('admin.cost.index'));
return view('backend.pages.master.cost.index', [
'costs' => CostCentre::all()
]);
@@ -36,7 +38,7 @@ class CostCentreController extends Controller
]);
session()->flash('success', 'Cost Centre has been created.');
return redirect()->route('admin.cost.index');
return redirect()->back();
}
public function edit($id)
@@ -61,7 +63,7 @@ class CostCentreController extends Controller
]);
session()->flash('success', 'Cost has been updated.');
return redirect()->route('admin.cost.index');
return redirect()->back();
}
public function destroy($id)
@@ -70,6 +72,6 @@ class CostCentreController extends Controller
CostCentre::findOrfail($id)->delete();
session()->flash('success', 'Cost has been deleted.');
return redirect()->route('admin.cost.index');
return redirect()->back();
}
}
@@ -11,6 +11,8 @@ class RayonController extends Controller
public function index()
{
$this->checkAuthorization(auth()->user(), ['rayon.view']);
session()->put('redirect_url', route('admin.rayon.index'));
return view('backend.pages.master.rayon.index', [
'rayons' => Rayon::all()
]);
@@ -36,7 +38,7 @@ class RayonController extends Controller
]);
session()->flash('success', 'Rayon has been created.');
return redirect()->route('admin.rayon.index');
return redirect()->back();
}
public function edit($id)
@@ -61,7 +63,7 @@ class RayonController extends Controller
]);
session()->flash('success', 'Rayon has been updated.');
return redirect()->route('admin.rayon.index');
return redirect()->back();
}
public function destroy($id)
@@ -70,6 +72,6 @@ class RayonController extends Controller
Rayon::findOrfail($id)->delete();
session()->flash('success', 'Rayon has been deleted.');
return redirect()->route('admin.rayon.index');
return redirect()->back();
}
}
+51
View File
@@ -104,4 +104,55 @@ class Admin extends Authenticatable
'region_head' => null,
];
}
public function getMyCabangAndRegion()
{
// Fetch the UserHasCabang entry for this admin
$userHasCabang = $this->hasOne(UserHasCabang::class, 'user_id')->with('cabang')->first();
if ($userHasCabang && $userHasCabang->cabang) {
$cabang = $userHasCabang->cabang;
// Fetch the region
$region = $cabang->region;
return [
'cabang' => $cabang ? $cabang->name : '-',
'region' => $region ? $region->name : '-',
];
}
return [
'cabang' => '-',
'region' => '-',
];
}
public function getMyCabangAndRegionId()
{
// Fetch the UserHasCabang entry for this admin
$userHasCabang = $this->hasOne(UserHasCabang::class, 'user_id')->with('cabang')->first();
if ($userHasCabang && $userHasCabang->cabang) {
$cabang = $userHasCabang->cabang;
// Fetch the region
$region = $cabang->region;
return [
'cabang' => $cabang ? $cabang->id : '-',
'region' => $region ? $region->id : '-',
];
}
return [
'cabang' => '-',
'region' => '-',
];
}
public function cabang()
{
return $this->hasOne(UserHasCabang::class, 'user_id')->with('cabang');
}
}
@@ -21,9 +21,6 @@
}).then(() => {
if ("{{ Session::get('redirect_url') }}") {
window.location.href = "{{ Session::get('redirect_url') }}";
@php
Session::forget('redirect_url');
@endphp
}
});
</script>
@@ -39,9 +36,6 @@
}).then(() => {
if ("{{ Session::get('redirect_url') }}") {
window.location.href = "{{ Session::get('redirect_url') }}";
@php
Session::forget('redirect_url');
@endphp
}
});
</script>
@@ -89,8 +89,19 @@
<input type="text" class="form-control" id="phone" name="phone"
placeholder="Enter phone number" required value="{{ old('phone') }}">
</div>
</div>
<div class="form-group col-md-6 col-sm-6">
<label for="cabang_id">Cabang</label>
<select name="cabang_id" id="cabang_id" class="form-control">
<option value="">Select Cabang</option>
@foreach ($cabangs as $cabang)
<option value="{{ $cabang->id }}" {{ old('cabang') == $cabang->id ? 'selected' : '' }}>
{{ $cabang->name }}
</option>
@endforeach
</select>
</div>
</div>
<button type="submit" class="btn btn-primary mt-4 pr-4 pl-4">Save</button>
<a href="{{ route('admin.admins.index') }}"
@@ -93,7 +93,17 @@
placeholder="Enter phone number" required value="{{ $admin->phone }}">
</div>
<div class="form-group col-md-6 col-sm-6">
<label for="cabang_id">Cabang</label>
<select name="cabang_id" id="cabang_id" class="form-control">
<option value="">Select Cabang</option>
@foreach ($cabangs as $cabang)
<option value="{{ $cabang->id }}" {{ $admin->getMyCabangAndRegion()['cabang'] == $cabang->name ? 'selected' : '' }}>
{{ $cabang->name }}
</option>
@endforeach
</select>
</div>
</div>
<button type="submit" class="btn btn-primary mt-4 pr-4 pl-4">Save</button>
@@ -46,7 +46,9 @@
<th width="5%">{{ __('Sl') }}</th>
<th width="10%">{{ __('Name') }}</th>
<th width="10%">{{ __('Email') }}</th>
<th width="40%">{{ __('Roles') }}</th>
<th width="20%">{{ __('Roles') }}</th>
<th width="5%">Region</th>
<th width="5%">Cabang</th>
<th width="15%">{{ __('Action') }}</th>
</tr>
</thead>
@@ -63,6 +65,8 @@
</span>
@endforeach
</td>
<td>{{ $admin->getMyCabangAndRegion()['region'] }}</td>
<td>{{ $admin->getMyCabangAndRegion()['cabang'] }}</td>
<td>
<a class="btn btn-success text-white" href="{{ route('admin.admins.expense', $admin->id) }}">View Expense</a>
@if (auth()->user()->can('admin.edit'))
@@ -55,6 +55,8 @@
<th width="10%">Name</th>
<th width="10%">Email</th>
<th width="40%">Roles</th>
<th width="20%">Region</th>
<th width="20%">Cabang</th>
<th width="15%">Action</th>
</tr>
</thead>