diff --git a/app/Http/Controllers/Backend/BudgetControlController.php b/app/Http/Controllers/Backend/BudgetControlController.php
new file mode 100644
index 0000000..04a5c86
--- /dev/null
+++ b/app/Http/Controllers/Backend/BudgetControlController.php
@@ -0,0 +1,153 @@
+checkAuthorization(auth()->user(), ['budget_control.view']);
+ session()->put('redirect_url', route('budget_control'));
+
+ // Get the budget control data
+ $budget = BudgetControl::orderBy('created_at', 'desc')->with(['user', 'cabang'])->get();
+
+ // Initialize an empty array to hold the used budget sums
+ $usedBudget = [];
+
+ foreach ($budget as $b) {
+ // Get the month and year from the budget
+ $month = $b->periode_month;
+ $year = $b->periode_year;
+
+ // Add the used budget per model for the specified month and year to the usedBudget array
+ $usedBudget[] = [
+ 'FormUpCountry' => FormUpCountry::whereIn('status', ['Approved', 'Closed'])
+ ->whereMonth('tanggal', '=', date('m', strtotime($month)))
+ ->whereYear('tanggal', '=', $year)
+ ->sum('approved_total'),
+
+ 'FormMeetingSeminar' => FormMeetingSeminar::whereIn('status', ['Approved', 'Closed'])
+ ->whereMonth('created_at', '=', date('m', strtotime($month)))
+ ->whereYear('created_at', '=', $year)
+ ->sum('approved_total'),
+
+ 'FormOthers' => FormOthers::whereIn('status', ['Approved', 'Closed'])
+ ->whereMonth('tanggal', '=', date('m', strtotime($month)))
+ ->whereYear('tanggal', '=', $year)
+ ->sum('approved_total'),
+
+ 'FormEntertaimentPresentation' => FormEntertaimentPresentation::whereIn('status', ['Approved', 'Closed'])
+ ->whereMonth('tanggal', '=', date('m', strtotime($month)))
+ ->whereYear('tanggal', '=', $year)
+ ->sum('approved_total'),
+
+ 'FormVehicleRunningCost' => FormVehicleRunningCost::whereIn('status', ['Approved', 'Closed'])
+ ->whereMonth('tanggal', '=', date('m', strtotime($month)))
+ ->whereYear('tanggal', '=', $year)
+ ->sum('approved_total')
+ ];
+ }
+
+ $usedBudget = array_sum(array_map(function ($b) {
+ return array_sum($b);
+ }, $usedBudget));
+
+ return view(
+ 'backend.pages.budget_control.index',
+ [
+ 'data' => $budget,
+ 'usedBudget' => $usedBudget,
+ 'availableBudget' => $budget->sum('amount') - $usedBudget,
+ ]
+ );
+ }
+
+ public function log()
+ {
+ $this->checkAuthorization(auth()->user(), ['budget_control.view']);
+ session()->put('redirect_url', route('budget_control'));
+
+ return view(
+ 'backend.pages.budget_control.log',
+ [
+ 'data' => BudgetControlLog::orderBy('created_at', 'desc')->with(['user', 'cabang'])->get(),
+ ]
+ );
+ }
+
+ public function create()
+ {
+ $this->checkAuthorization(auth()->user(), ['budget_control.create']);
+ $users = Admin::getUserByRoleName('Area Manager Cabang');
+
+ return view('backend.pages.budget_control.create', [
+ 'users' => $users,
+ ]);
+ }
+
+ public function store(Request $request)
+ {
+ $this->checkAuthorization(auth()->user(), ['budget_control.create']);
+
+ $validated = $request->validate([
+ 'receiver_id' => 'required|exists:admins,id',
+ 'periode_month' => 'required|string|in:january,february,march,april,may,june,july,august,september,october,november,december',
+ 'periode_year' => 'required|numeric',
+ 'amount' => 'required|numeric',
+ 'remarks' => 'nullable|string',
+ 'closing_at' => 'required|date',
+ ]);
+
+ $cabang_id = Admin::find($validated['receiver_id'])->getMyCabangAndRegionId()['cabang'];
+ BudgetControl::updateOrCreate(['cabang_id' => $cabang_id],
+ [
+ 'sender_id' => auth()->user()->id,
+ 'receiver_id' => $validated['receiver_id'],
+ 'periode_month' => $validated['periode_month'],
+ 'periode_year' => $validated['periode_year'],
+ 'amount' => $validated['amount'],
+ 'remarks' => $validated['remarks'],
+ 'closing_at' => $validated['closing_at'],
+ 'status' => 'Assigned',
+ ]);
+
+ BudgetControlLog::create([
+ 'cabang_id' => $cabang_id,
+ 'sender_id' => auth()->user()->id,
+ 'receiver_id' => $validated['receiver_id'],
+ 'periode_month' => $validated['periode_month'],
+ 'periode_year' => $validated['periode_year'],
+ 'amount' => $validated['amount'],
+ 'remarks' => $validated['remarks'],
+ 'closing_at' => $validated['closing_at'],
+ 'status' => 'Assigned',
+ ]);
+
+ session()->flash('success', 'Budget has been added or updated successfully');
+ return redirect()->route('budget_control');
+ }
+
+ public function destroy($id)
+ {
+ $this->checkAuthorization(auth()->user(), ['budget_control.delete']);
+
+ $budgetRequest = BudgetControl::findOrfail($id);
+ $budgetRequest->delete();
+
+ return redirect()->route('budget_control');
+ }
+}
diff --git a/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php b/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php
index 19f1b07..3125c77 100644
--- a/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php
+++ b/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php
@@ -159,10 +159,11 @@ class FormEntertainmentPresentationController extends Controller
public function edit($id)
{
$this->checkAuthorization(auth()->user(), ['forms.entertainment.edit']);
+ $role = auth()->user()->getRoleNames()[0];
$form = FormEntertaimentPresentation::findOrfail($id);
- if($form->status == 'Closed') {
- session()->flash('error', 'Form has been closed, you cannot edit it.');
+ if($form->status != 'On Progress' && $role == 'Medical Representatif') {
+ session()->flash('error', 'You cannot edit this form because it has been approved or rejected.');
return redirect()->back();
}
@@ -174,6 +175,7 @@ class FormEntertainmentPresentationController extends Controller
public function update(Request $request, $id)
{
$this->checkAuthorization(auth()->user(), ['forms.entertainment.edit']);
+ $role = auth()->user()->getRoleNames()[0];
$request->validate([
'tanggal' => 'required',
@@ -187,8 +189,8 @@ class FormEntertainmentPresentationController extends Controller
]);
$form = FormEntertaimentPresentation::findOrfail($id);
- if($form->status == 'Closed') {
- session()->flash('error', 'Form has been closed, you cannot edit it.');
+ if($form->status != 'On Progress' && $role == 'Medical Representatif') {
+ session()->flash('error', 'You cannot edit this form because it has been approved or rejected.');
return redirect()->back();
}
@@ -414,8 +416,14 @@ class FormEntertainmentPresentationController extends Controller
public function destroy($id)
{
$this->checkAuthorization(auth()->user(), ['forms.entertainment.delete']);
+ $role = auth()->user()->getRoleNames()[0];
$form = FormEntertaimentPresentation::findOrfail($id);
+ if($form->status != 'On Progress' && $role == 'Medical Representatif') {
+ session()->flash('error', 'You cannot edit this form because it has been approved or rejected.');
+ return redirect()->back();
+ }
+
AuditTrailHelper::AddAuditTrail('Delete', 'Delete Record at Form Entertainment Presentation (' . $form->expense_number . ')');
$form->delete();
diff --git a/app/Http/Controllers/Forms/FormMeetingSeminarController.php b/app/Http/Controllers/Forms/FormMeetingSeminarController.php
index 58be413..d342a46 100644
--- a/app/Http/Controllers/Forms/FormMeetingSeminarController.php
+++ b/app/Http/Controllers/Forms/FormMeetingSeminarController.php
@@ -190,10 +190,11 @@ class FormMeetingSeminarController extends Controller
public function edit($id)
{
$this->checkAuthorization(auth()->user(), ['forms.meeting.edit']);
+ $role = auth()->user()->getRoleNames()[0];
$form = FormMeetingSeminar::findOrfail($id);
- if($form->status == 'Closed') {
- session()->flash('error', 'Form has been closed, you cannot edit it.');
+ if($form->status != 'On Progress' && $role == 'Medical Representatif') {
+ session()->flash('error', 'You cannot edit this form because it has been approved or rejected.');
return redirect()->back();
}
@@ -205,6 +206,7 @@ class FormMeetingSeminarController extends Controller
public function update(Request $request, $id)
{
$this->checkAuthorization(auth()->user(), ['forms.meeting.edit']);
+ $role = auth()->user()->getRoleNames()[0];
$request->validate([
'allowance' => 'nullable|numeric',
@@ -216,8 +218,8 @@ class FormMeetingSeminarController extends Controller
]);
$form = FormMeetingSeminar::findOrfail($id);
- if($form->status == 'Closed') {
- session()->flash('error', 'Form has been closed, you cannot edit it.');
+ if($form->status != 'On Progress' && $role == 'Medical Representatif') {
+ session()->flash('error', 'You cannot edit this form because it has been approved or rejected.');
return redirect()->back();
}
@@ -477,8 +479,14 @@ class FormMeetingSeminarController extends Controller
public function destroy($id)
{
$this->checkAuthorization(auth()->user(), ['forms.meeting.delete']);
+ $role = auth()->user()->getRoleNames()[0];
$form = FormMeetingSeminar::findOrfail($id);
+ if($form->status != 'On Progress' && $role == 'Medical Representatif') {
+ session()->flash('error', 'You cannot edit this form because it has been approved or rejected.');
+ return redirect()->back();
+ }
+
AuditTrailHelper::AddAuditTrail('Delete', 'Delete Record at Form Meeting Seminar (' . $form->expense_number . ')');
$form->delete();
diff --git a/app/Http/Controllers/Forms/FormOtherController.php b/app/Http/Controllers/Forms/FormOtherController.php
index caaa8f8..9c74822 100644
--- a/app/Http/Controllers/Forms/FormOtherController.php
+++ b/app/Http/Controllers/Forms/FormOtherController.php
@@ -127,7 +127,6 @@ class FormOtherController extends Controller
$bukti_total->getContent(),
$filename
);
-
}
// Generate sequence number and expense number
@@ -156,10 +155,11 @@ class FormOtherController extends Controller
public function edit($id)
{
$this->checkAuthorization(auth()->user(), ['forms.other.edit']);
+ $role = auth()->user()->getRoleNames()[0];
$form = FormOthers::findOrfail($id);
- if($form->status == 'Closed') {
- session()->flash('error', 'Form has been closed, you cannot edit it.');
+ if($form->status != 'On Progress' && $role == 'Medical Representatif') {
+ session()->flash('error', 'You cannot edit this form because it has been approved or rejected.');
return redirect()->back();
}
@@ -172,6 +172,7 @@ class FormOtherController extends Controller
public function update(Request $request, $id)
{
$this->checkAuthorization(auth()->user(), ['forms.other.edit']);
+ $role = auth()->user()->getRoleNames()[0];
$request->validate([
'kategori_id' => 'required',
@@ -182,8 +183,8 @@ class FormOtherController extends Controller
]);
$form = FormOthers::findOrfail($id);
- if($form->status == 'Closed') {
- session()->flash('error', 'Form has been closed, you cannot edit it.');
+ if($form->status != 'On Progress' && $role == 'Medical Representatif') {
+ session()->flash('error', 'You cannot edit this form because it has been approved or rejected.');
return redirect()->back();
}
@@ -205,7 +206,6 @@ class FormOtherController extends Controller
$bukti_total->getContent(),
$filename
);
-
}
// Save the form data
@@ -407,8 +407,14 @@ class FormOtherController extends Controller
public function destroy($id)
{
$this->checkAuthorization(auth()->user(), ['forms.other.delete']);
+ $role = auth()->user()->getRoleNames()[0];
$form = FormOthers::findOrfail($id);
+ if($form->status != 'On Progress' && $role == 'Medical Representatif') {
+ session()->flash('error', 'You cannot edit this form because it has been approved or rejected.');
+ return redirect()->back();
+ }
+
AuditTrailHelper::AddAuditTrail('Delete', 'Delete Record at Form Entertainment Presentation (' . $form->expense_number . ')');
$form->delete();
diff --git a/app/Http/Controllers/Forms/FormUpCountryController.php b/app/Http/Controllers/Forms/FormUpCountryController.php
index 404bb7a..6a4ecdd 100644
--- a/app/Http/Controllers/Forms/FormUpCountryController.php
+++ b/app/Http/Controllers/Forms/FormUpCountryController.php
@@ -220,10 +220,11 @@ class FormUpCountryController extends Controller
public function edit($id)
{
$this->checkAuthorization(auth()->user(), ['forms.country.edit']);
+ $role = auth()->user()->getRoleNames()[0];
$form = FormUpCountry::with('rayon')->findOrfail($id);
- if($form->status == 'Closed') {
- session()->flash('error', 'Form has been closed, you cannot edit it.');
+ if($form->status != 'On Progress' && $role == 'Medical Representatif') {
+ session()->flash('error', 'You cannot edit this form because it has been approved or rejected.');
return redirect()->back();
}
@@ -236,6 +237,7 @@ class FormUpCountryController extends Controller
public function update(Request $request, $id)
{
$this->checkAuthorization(auth()->user(), ['forms.country.edit']);
+ $role = auth()->user()->getRoleNames()[0];
$request->validate([
'rayon_id' => 'required|exists:rayon,id',
@@ -253,8 +255,8 @@ class FormUpCountryController extends Controller
]);
$form = FormUpCountry::findOrfail($id);
- if($form->status == 'Closed') {
- session()->flash('error', 'Form has been closed, you cannot edit it.');
+ if($form->status != 'On Progress' && $role == 'Medical Representatif') {
+ session()->flash('error', 'You cannot edit this form because it has been approved or rejected.');
return redirect()->back();
}
@@ -537,6 +539,11 @@ class FormUpCountryController extends Controller
$this->checkAuthorization(auth()->user(), ['forms.country.delete']);
$form = FormUpCountry::findOrfail($id);
+ if($form->status != 'On Progress' && $role == 'Medical Representatif') {
+ session()->flash('error', 'You cannot edit this form because it has been approved or rejected.');
+ return redirect()->back();
+ }
+
AuditTrailHelper::AddAuditTrail('Delete', 'Delete Record at Form Entertainment Presentation (' . $form->expense_number . ')');
$form->delete();
diff --git a/app/Http/Controllers/Forms/FormVehicleController.php b/app/Http/Controllers/Forms/FormVehicleController.php
index 07c1d95..38b4bef 100644
--- a/app/Http/Controllers/Forms/FormVehicleController.php
+++ b/app/Http/Controllers/Forms/FormVehicleController.php
@@ -159,10 +159,11 @@ class FormVehicleController extends Controller
public function edit($id)
{
$this->checkAuthorization(auth()->user(), ['forms.vehicle.edit']);
+ $role = auth()->user()->getRoleNames()[0];
$form = FormVehicleRunningCost::findOrfail($id);
- if($form->status == 'Closed') {
- session()->flash('error', 'Form has been closed, you cannot edit it.');
+ if($form->status != 'On Progress' && $role == 'Medical Representatif') {
+ session()->flash('error', 'You cannot edit this form because it has been approved or rejected.');
return redirect()->back();
}
@@ -174,6 +175,7 @@ class FormVehicleController extends Controller
public function update(Request $request, $id)
{
$this->checkAuthorization(auth()->user(), ['forms.vehicle.edit']);
+ $role = auth()->user()->getRoleNames()[0];
$request->validate([
'tanggal' => 'required',
@@ -187,8 +189,8 @@ class FormVehicleController extends Controller
]);
$form = FormVehicleRunningCost::findOrfail($id);
- if($form->status == 'Closed') {
- session()->flash('error', 'Form has been closed, you cannot edit it.');
+ if($form->status != 'On Progress' && $role == 'Medical Representatif') {
+ session()->flash('error', 'You cannot edit this form because it has been approved or rejected.');
return redirect()->back();
}
@@ -210,7 +212,6 @@ class FormVehicleController extends Controller
$bukti_total->getContent(),
$filename
);
-
}
// Save the form data
@@ -415,8 +416,14 @@ class FormVehicleController extends Controller
public function destroy($id)
{
$this->checkAuthorization(auth()->user(), ['forms.vehicle.delete']);
+ $role = auth()->user()->getRoleNames()[0];
$form = FormVehicleRunningCost::findOrfail($id);
+ if($form->status != 'On Progress' && $role == 'Medical Representatif') {
+ session()->flash('error', 'You cannot edit this form because it has been approved or rejected.');
+ return redirect()->back();
+ }
+
AuditTrailHelper::AddAuditTrail('Delete', 'Delete Record at Form Entertainment Presentation (' . $form->expense_number . ')');
$form->delete();
diff --git a/app/Models/Admin.php b/app/Models/Admin.php
index 4530d43..7a93f59 100644
--- a/app/Models/Admin.php
+++ b/app/Models/Admin.php
@@ -8,6 +8,7 @@ use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Facades\DB;
use Spatie\Permission\Traits\HasRoles;
+use Spatie\Permission\Models\Role;
class Admin extends Authenticatable
{
@@ -155,4 +156,15 @@ class Admin extends Authenticatable
{
return $this->hasOne(UserHasCabang::class, 'user_id')->with('cabang');
}
+
+ public static function getUserByRoleName($roleName)
+ {
+ $role = Role::where('name', $roleName)->first();
+
+ if ($role) {
+ return $role->users()->with('cabang')->get();
+ }
+
+ return [];
+ }
}
diff --git a/app/Models/BudgetControl.php b/app/Models/BudgetControl.php
new file mode 100644
index 0000000..06e7eec
--- /dev/null
+++ b/app/Models/BudgetControl.php
@@ -0,0 +1,45 @@
+belongsTo(Admin::class, 'user_id');
+ }
+
+ public function cabang()
+ {
+ return $this->belongsTo(Cabang::class, 'cabang_id');
+ }
+
+ public function sender()
+ {
+ return $this->belongsTo(Admin::class, 'sender_id');
+ }
+
+ public function receiver()
+ {
+ return $this->belongsTo(Admin::class, 'receiver_id');
+ }
+}
diff --git a/app/Models/BudgetControlLog.php b/app/Models/BudgetControlLog.php
new file mode 100644
index 0000000..dee8b42
--- /dev/null
+++ b/app/Models/BudgetControlLog.php
@@ -0,0 +1,45 @@
+belongsTo(Admin::class, 'user_id');
+ }
+
+ public function cabang()
+ {
+ return $this->belongsTo(Cabang::class, 'cabang_id');
+ }
+
+ public function sender()
+ {
+ return $this->belongsTo(Admin::class, 'sender_id');
+ }
+
+ public function receiver()
+ {
+ return $this->belongsTo(Admin::class, 'receiver_id');
+ }
+}
diff --git a/database/migrations/2025_01_07_055440_create_budget_request_table.php b/database/migrations/2025_01_07_055440_create_budget_request_table.php
new file mode 100644
index 0000000..49d47d5
--- /dev/null
+++ b/database/migrations/2025_01_07_055440_create_budget_request_table.php
@@ -0,0 +1,44 @@
+id();
+ $table->foreignId('cabang_id')->nullable()->constrained('cabang');
+
+ $table->foreignId('sender_id')->constrained('admins');
+ $table->foreignId('receiver_id')->constrained('admins');
+
+ $table->integer('amount');
+ $table->string('remarks')->nullable();
+
+ $table->string('periode_month');
+ $table->integer('periode_year');
+
+ $table->timestamp('transferred_at')->nullable();
+ $table->timestamp('closing_at')->nullable();
+
+ $table->string('status')->default('Unassigned');
+
+ $table->timestamps();
+ $table->softDeletes();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::dropIfExists('budget_control');
+ }
+};
diff --git a/database/migrations/2025_01_07_074548_create_budget_control_log_table.php b/database/migrations/2025_01_07_074548_create_budget_control_log_table.php
new file mode 100644
index 0000000..ad2e764
--- /dev/null
+++ b/database/migrations/2025_01_07_074548_create_budget_control_log_table.php
@@ -0,0 +1,44 @@
+id();
+ $table->foreignId('cabang_id')->nullable()->constrained('cabang');
+
+ $table->foreignId('sender_id')->constrained('admins');
+ $table->foreignId('receiver_id')->constrained('admins');
+
+ $table->integer('amount');
+ $table->string('remarks')->nullable();
+
+ $table->string('periode_month');
+ $table->integer('periode_year');
+
+ $table->timestamp('transferred_at')->nullable();
+ $table->timestamp('closing_at')->nullable();
+
+ $table->string('status')->default('Unassigned');
+
+ $table->timestamps();
+ $table->softDeletes();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::dropIfExists('budget_control_log');
+ }
+};
diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php
index 56a05e1..d6e0cf2 100644
--- a/database/seeds/DatabaseSeeder.php
+++ b/database/seeds/DatabaseSeeder.php
@@ -10,6 +10,7 @@ use Database\Seeds\RolePermissionSeeder2;
use Database\Seeds\RolePermissionSeeder3;
use Database\Seeds\RolePermissionSeeder4;
use Database\Seeds\RolePermissionSeeder5;
+use Database\Seeds\RolePermissionSeeder6;
class DatabaseSeeder extends Seeder
{
@@ -28,6 +29,7 @@ class DatabaseSeeder extends Seeder
// $this->call(RolePermissionSeeder2::class);
// $this->call(RolePermissionSeeder3::class);
// $this->call(RolePermissionSeeder4::class);
- $this->call(RolePermissionSeeder5::class);
+ // $this->call(RolePermissionSeeder5::class);
+ $this->call(RolePermissionSeeder6::class);
}
}
diff --git a/database/seeds/RolePermissionSeeder6.php b/database/seeds/RolePermissionSeeder6.php
new file mode 100644
index 0000000..11b1401
--- /dev/null
+++ b/database/seeds/RolePermissionSeeder6.php
@@ -0,0 +1,79 @@
+ 'budget_control',
+ 'permissions' => [
+ 'budget_control.view',
+ 'budget_control.create',
+ 'budget_control.edit',
+ 'budget_control.delete',
+ 'budget_control.approve',
+ ]
+ ],
+ ];
+
+ // Do same for the admin guard for tutorial purposes.
+ $admin = Admin::where('username', 'superadmin')->first();
+ $roleSuperAdmin = $this->maybeCreateSuperAdminRole($admin);
+
+ // Create and Assign Permissions
+ for ($i = 0; $i < count($permissions); $i++) {
+ $permissionGroup = $permissions[$i]['group_name'];
+ for ($j = 0; $j < count($permissions[$i]['permissions']); $j++) {
+ $permissionExist = Permission::where('name', $permissions[$i]['permissions'][$j])->first();
+ if (is_null($permissionExist)) {
+ $permission = Permission::create(
+ [
+ 'name' => $permissions[$i]['permissions'][$j],
+ 'group_name' => $permissionGroup,
+ 'guard_name' => 'admin'
+ ]
+ );
+ $roleSuperAdmin->givePermissionTo($permission);
+ $permission->assignRole($roleSuperAdmin);
+ }
+ }
+ }
+
+ // Assign super admin role permission to superadmin user
+ if ($admin) {
+ $admin->assignRole($roleSuperAdmin);
+ }
+ }
+
+ private function maybeCreateSuperAdminRole($admin): Role
+ {
+ if (is_null($admin)) {
+ $roleSuperAdmin = Role::create(['name' => 'superadmin', 'guard_name' => 'admin']);
+ } else {
+ $roleSuperAdmin = Role::where('name', 'superadmin')->where('guard_name', 'admin')->first();
+ }
+
+ if (is_null($roleSuperAdmin)) {
+ $roleSuperAdmin = Role::create(['name' => 'superadmin', 'guard_name' => 'admin']);
+ }
+
+ return $roleSuperAdmin;
+ }
+}
diff --git a/resources/views/backend/pages/budget_control/create.blade.php b/resources/views/backend/pages/budget_control/create.blade.php
new file mode 100644
index 0000000..699643c
--- /dev/null
+++ b/resources/views/backend/pages/budget_control/create.blade.php
@@ -0,0 +1,107 @@
+@extends('layouts.app')
+
+@section('title')
+ Dashboard
+@endsection
+
+@section('admin-content')
+
+
+
+
+
+
+@endsection
diff --git a/resources/views/backend/pages/budget_control/edit.blade.php b/resources/views/backend/pages/budget_control/edit.blade.php
new file mode 100644
index 0000000..e69de29
diff --git a/resources/views/backend/pages/budget_control/index.blade.php b/resources/views/backend/pages/budget_control/index.blade.php
new file mode 100644
index 0000000..6b2cb09
--- /dev/null
+++ b/resources/views/backend/pages/budget_control/index.blade.php
@@ -0,0 +1,150 @@
+@extends('layouts.app')
+
+@section('title')
+ Dashboard
+@endsection
+
+@section('admin-content')
+
+
+
+
+
+
+
+
Rp {{ number_format($data->whereIn('status', 'Assigned')->sum('amount'), 0, ',', '.') }}
+
Total Budget Bulan Ini
+
+
+
+
+
+
+
+
+
+
Rp {{ number_format($availableBudget, 0, ',', '.') }}
+
Total Budget Tersedia
+
+
+
+
+
+
+
+
+
+
Rp {{ number_format($usedBudget, 0, ',', '.') }}
+
Total Budget Terpakai
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ @if (auth()->user()->can('budget_control.create'))
+
+ Add New Budget
+
+ @endif
+
+
+
+ @include('backend.layouts.partials.messages')
+
+
+
+
+ | # |
+ Penerima |
+ Cabang |
+ Pengirim |
+ Total |
+ Keterangan |
+ Periode |
+ Tanggal Closing |
+ Status |
+ Aksi |
+
+
+
+ @foreach ($data as $item)
+
+ | {{ $loop->iteration }} |
+ {{ $item->receiver->name }} |
+ {{ $item->cabang->name }} |
+ {{ $item->sender->name }} |
+ {{ number_format($item->amount, 0, ',', '.') }} |
+ {{ $item->remarks }} |
+ {{ strtoupper($item->periode_month) }} {{ $item->periode_year }} |
+ {{ \Carbon\Carbon::parse($item->closing_at)->locale('id')->isoFormat('D MMMM Y H:mm') }} |
+
+ @if ($item->status == 'Unassigned')
+ {{ $item->status }}
+ @elseif ($item->status == 'Assigned')
+ {{ $item->status }}
+ @else
+ {{ $item->status }}
+ @endif
+ |
+
+ @if (auth()->user()->can('budget_control.delete'))
+
+ @endif
+ |
+
+ @endforeach
+
+
+
+
+
+
+
+
+@endsection
+
+@section('scripts')
+
+@endsection
diff --git a/resources/views/backend/pages/budget_control/log.blade.php b/resources/views/backend/pages/budget_control/log.blade.php
new file mode 100644
index 0000000..2e940e7
--- /dev/null
+++ b/resources/views/backend/pages/budget_control/log.blade.php
@@ -0,0 +1,92 @@
+@extends('layouts.app')
+
+@section('title')
+ Dashboard
+@endsection
+
+@section('admin-content')
+
+
+
+
+
+
+
+
+ @include('backend.layouts.partials.messages')
+
+
+
+
+ | # |
+ Penerima |
+ Cabang |
+ Pengirim |
+ Total |
+ Keterangan |
+ Periode |
+ Tanggal Closing |
+ Status |
+
+
+
+ @foreach ($data as $item)
+
+ | {{ $loop->iteration }} |
+ {{ $item->receiver->name }} |
+ {{ $item->cabang->name }} |
+ {{ $item->sender->name }} |
+ {{ number_format($item->amount, 0, ',', '.') }} |
+ {{ $item->remarks }} |
+ {{ strtoupper($item->periode_month) }} {{ $item->periode_year }} |
+ {{ \Carbon\Carbon::parse($item->closing_at)->locale('id')->isoFormat('D MMMM Y H:mm') }} |
+
+ @if ($item->status == 'Unassigned')
+ {{ $item->status }}
+ @elseif ($item->status == 'Assigned')
+ {{ $item->status }}
+ @else
+ {{ $item->status }}
+ @endif
+ |
+
+ @endforeach
+
+
+
+
+
+
+
+
+@endsection
+
+@section('scripts')
+
+@endsection
diff --git a/resources/views/backend/pages/forms/entertainment/index.blade.php b/resources/views/backend/pages/forms/entertainment/index.blade.php
index c5bbd0d..51e4a04 100644
--- a/resources/views/backend/pages/forms/entertainment/index.blade.php
+++ b/resources/views/backend/pages/forms/entertainment/index.blade.php
@@ -106,6 +106,7 @@
@php
use App\Helpers\NextCloudHelper;
+ $role = auth()->user()->getRoleNames()[0];
@endphp
@foreach ($forms as $item)
@@ -201,13 +202,13 @@
@endif
- @if (auth()->user()->can('forms.entertainment.edit'))
+ @if (($role != 'Medical Representatif' && auth()->user()->can('forms.entertainment.edit')) || ($role == 'Medical Representatif' && $item->status == 'On Progress'))
@endif
- @if (auth()->user()->can('forms.entertainment.delete'))
+ @if (($role != 'Medical Representatif' && auth()->user()->can('forms.entertainment.delete')) || ($role == 'Medical Representatif' && $item->status == 'On Progress'))