Merge branch 'branch-jagad' into 'main'
Branch jagad See merge request fiqhpratama1/xpendify!6
This commit is contained in:
@@ -0,0 +1,32 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Helpers;
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
use App\Models\AuditTrail;
|
||||||
|
|
||||||
|
class AuditTrailHelper
|
||||||
|
{
|
||||||
|
public static function AddAuditTrail($action, $activity)
|
||||||
|
{
|
||||||
|
$audit = new AuditTrail();
|
||||||
|
$audit->user_id = Auth::user()->id;
|
||||||
|
$audit->ip_address = request()->ip();
|
||||||
|
$audit->activity = $activity;
|
||||||
|
$audit->action = $action;
|
||||||
|
$audit->user_agent = request()->userAgent();
|
||||||
|
$audit->browser = substr($audit->user_agent, 0, strpos($audit->user_agent, '/'));
|
||||||
|
$audit->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function AuthAttempt($action, $activity)
|
||||||
|
{
|
||||||
|
$audit = new AuditTrail();
|
||||||
|
$audit->ip_address = request()->ip();
|
||||||
|
$audit->activity = $activity;
|
||||||
|
$audit->action = $action;
|
||||||
|
$audit->user_agent = request()->userAgent();
|
||||||
|
$audit->browser = substr($audit->user_agent, 0, strpos($audit->user_agent, '/'));
|
||||||
|
$audit->save();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,8 +6,6 @@ use Illuminate\Support\Facades\Auth;
|
|||||||
|
|
||||||
class AuthenticationHelper
|
class AuthenticationHelper
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
public static function CurrentLogin()
|
public static function CurrentLogin()
|
||||||
{
|
{
|
||||||
$auth = Auth::user()->username;
|
$auth = Auth::user()->username;
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ use App\Models\FormOthers;
|
|||||||
use App\Models\FormMeetingSeminar;
|
use App\Models\FormMeetingSeminar;
|
||||||
use App\Models\UserHasCabang;
|
use App\Models\UserHasCabang;
|
||||||
use App\Models\Cabang;
|
use App\Models\Cabang;
|
||||||
|
use App\Helpers\AuditTrailHelper;
|
||||||
|
|
||||||
class AdminsController extends Controller
|
class AdminsController extends Controller
|
||||||
{
|
{
|
||||||
@@ -92,6 +93,7 @@ class AdminsController extends Controller
|
|||||||
// return redirect()->route('admin.admins.index');
|
// return redirect()->route('admin.admins.index');
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Insert', 'Added New User (' . $request->email . ') to the User Table');
|
||||||
session()->flash('success', 'Admin has been created.');
|
session()->flash('success', 'Admin has been created.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -141,6 +143,7 @@ class AdminsController extends Controller
|
|||||||
$userHasCabang ? $userHasCabang->update(['cabang_id' => $request->cabang_id]) : UserHasCabang::create(['user_id' => $admin->id, 'cabang_id' => $request->cabang_id]);
|
$userHasCabang ? $userHasCabang->update(['cabang_id' => $request->cabang_id]) : UserHasCabang::create(['user_id' => $admin->id, 'cabang_id' => $request->cabang_id]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Update', 'Update User Data (' . $request->email . ') in the User Table');
|
||||||
session()->flash('success', 'Admin has been updated.');
|
session()->flash('success', 'Admin has been updated.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -179,7 +182,10 @@ class AdminsController extends Controller
|
|||||||
$this->checkAuthorization(auth()->user(), ['admin.delete']);
|
$this->checkAuthorization(auth()->user(), ['admin.delete']);
|
||||||
|
|
||||||
$admin = Admin::findOrFail($id);
|
$admin = Admin::findOrFail($id);
|
||||||
|
AuditTrailHelper::AddAuditTrail('Delete', 'Deleted User (' . $admin->email . ') from the User Table');
|
||||||
|
|
||||||
$admin->delete();
|
$admin->delete();
|
||||||
|
|
||||||
session()->flash('success', 'Admin has been deleted.');
|
session()->flash('success', 'Admin has been deleted.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Backend;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Models\AuditTrail;
|
||||||
|
use Spatie\Permission\Models\Permission;
|
||||||
|
use Spatie\Permission\Models\Role;
|
||||||
|
|
||||||
|
class AuditTrailController extends Controller
|
||||||
|
{
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
$pageInfo = [
|
||||||
|
'title' => 'Audit Trails',
|
||||||
|
'sub_title' => 'List of Audit Trails System',
|
||||||
|
'path' => url()->current()
|
||||||
|
];
|
||||||
|
|
||||||
|
return view(
|
||||||
|
'backend.pages.audit_trail.index',
|
||||||
|
[
|
||||||
|
'data' => AuditTrail::orderBy('id', 'desc')->get(),
|
||||||
|
'pageInfo' => $pageInfo,
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -9,6 +9,7 @@ use Illuminate\Foundation\Auth\AuthenticatesUsers;
|
|||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
use Illuminate\Support\Facades\Session;
|
use Illuminate\Support\Facades\Session;
|
||||||
|
use App\Helpers\AuditTrailHelper;
|
||||||
|
|
||||||
class LoginController extends Controller
|
class LoginController extends Controller
|
||||||
{
|
{
|
||||||
@@ -76,30 +77,38 @@ class LoginController extends Controller
|
|||||||
|
|
||||||
// Attempt to login
|
// Attempt to login
|
||||||
if (Auth::guard('admin')->attempt(['email' => $request->email, 'password' => $request->password], $request->remember)) {
|
if (Auth::guard('admin')->attempt(['email' => $request->email, 'password' => $request->password], $request->remember)) {
|
||||||
session()->flash('success', 'Successully Logged in !');
|
session()->flash('success', 'Successully Logged in !');
|
||||||
Session::put('current_guard', 'admin');
|
Session::put('current_guard', 'admin');
|
||||||
return redirect()->route('admin.dashboard');
|
|
||||||
|
AuditTrailHelper::AuthAttempt('Login', 'User (' . $request->email . ') Logged in to the System');
|
||||||
|
return redirect()->route('admin.dashboard');
|
||||||
} else if (Auth::guard('admin')->attempt(['username' => $request->email, 'password' => $request->password], $request->remember)) {
|
} else if (Auth::guard('admin')->attempt(['username' => $request->email, 'password' => $request->password], $request->remember)) {
|
||||||
session()->flash('success', 'Successully Logged in !');
|
session()->flash('success', 'Successully Logged in !');
|
||||||
Session::put('current_guard', 'admin');
|
Session::put('current_guard', 'admin');
|
||||||
return redirect()->route('admin.dashboard');
|
|
||||||
|
AuditTrailHelper::AuthAttempt('Login', 'User (' . $request->email . ') Logged in to the System');
|
||||||
|
return redirect()->route('admin.dashboard');
|
||||||
|
|
||||||
}else if (Auth::guard('web')->attempt(['username' => $request->email, 'password' => $request->password], $request->remember)) {
|
} else if (Auth::guard('web')->attempt(['username' => $request->email, 'password' => $request->password], $request->remember)) {
|
||||||
session()->flash('success', 'Successully Logged in !');
|
session()->flash('success', 'Successully Logged in !');
|
||||||
Session::put('current_guard', 'web');
|
Session::put('current_guard', 'web');
|
||||||
return redirect()->route('admin.dashboard');
|
|
||||||
}else if (Auth::guard('web')->attempt(['email' => $request->email, 'password' => $request->password], $request->remember)) {
|
AuditTrailHelper::AuthAttempt('Login', 'User (' . $request->email . ') Logged in to the System');
|
||||||
session()->flash('success', 'Successully Logged in !');
|
return redirect()->route('admin.dashboard');
|
||||||
Session::put('current_guard', 'web');
|
} else if (Auth::guard('web')->attempt(['email' => $request->email, 'password' => $request->password], $request->remember)) {
|
||||||
return redirect()->route('admin.dashboard');
|
session()->flash('success', 'Successully Logged in !');
|
||||||
|
Session::put('current_guard', 'web');
|
||||||
|
|
||||||
|
AuditTrailHelper::AuthAttempt('Login', 'User (' . $request->email . ') Logged in to the System');
|
||||||
|
return redirect()->route('admin.dashboard');
|
||||||
}
|
}
|
||||||
// error
|
|
||||||
session()->flash('error', 'Invalid email and password..');
|
// error
|
||||||
return back();
|
session()->flash('error', 'Invalid email and password..');
|
||||||
|
return back();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* logout admin guard
|
* logout admin guard
|
||||||
*
|
*
|
||||||
@@ -107,13 +116,25 @@ class LoginController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function logout()
|
public function logout()
|
||||||
{
|
{
|
||||||
try{
|
$user = Auth::guard('admin')->user();
|
||||||
|
|
||||||
|
if (!$user) {
|
||||||
Auth::guard('admin')->logout();
|
Auth::guard('admin')->logout();
|
||||||
return redirect()->route('admin.login');
|
return redirect()->route('admin.login');
|
||||||
|
|
||||||
}catch (Exception $e) {
|
|
||||||
Auth::guard('web')->logout();
|
|
||||||
return redirect()->route('admin.login');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Log activity
|
||||||
|
AuditTrailHelper::AuthAttempt('Logout', 'User (' . $user->username . ') Logged out from the System');
|
||||||
|
|
||||||
|
try {
|
||||||
|
// Logout from admin guard
|
||||||
|
Auth::guard('admin')->logout();
|
||||||
|
} catch (Exception $e) {
|
||||||
|
// Fallback to web guard if admin logout fails
|
||||||
|
Auth::guard('web')->logout();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Redirect to admin login
|
||||||
|
return redirect()->route('admin.login');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,18 +8,68 @@ use App\Http\Controllers\Controller;
|
|||||||
use App\Models\Admin;
|
use App\Models\Admin;
|
||||||
use Spatie\Permission\Models\Permission;
|
use Spatie\Permission\Models\Permission;
|
||||||
use Spatie\Permission\Models\Role;
|
use Spatie\Permission\Models\Role;
|
||||||
|
use App\Models\FormUpCountry;
|
||||||
|
use App\Models\FormEntertaimentPresentation;
|
||||||
|
use App\Models\FormVehicleRunningCost;
|
||||||
|
use App\Models\FormMeetingSeminar;
|
||||||
|
use App\Models\FormOthers;
|
||||||
|
use App\Models\UserHasCabang;
|
||||||
|
|
||||||
|
|
||||||
class DashboardController extends Controller
|
class DashboardController extends Controller
|
||||||
{
|
{
|
||||||
public function index()
|
public function index()
|
||||||
{
|
{
|
||||||
|
$role = auth()->user()->getRoleNames()[0];
|
||||||
|
$forms = [
|
||||||
|
'vehicle' => FormVehicleRunningCost::query(),
|
||||||
|
'upcountry' => FormUpCountry::query(),
|
||||||
|
'entertainment' => FormEntertaimentPresentation::query(),
|
||||||
|
'meeting' => FormMeetingSeminar::query(),
|
||||||
|
'others' => FormOthers::query(),
|
||||||
|
];
|
||||||
|
|
||||||
|
if ($role == 'Admin Region' || $role == 'Marketing Operational Manager 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);
|
||||||
|
})->pluck('user_id');
|
||||||
|
|
||||||
|
foreach ($forms as $key => $query) {
|
||||||
|
$forms[$key] = $query->whereIn('user_id', $users)->whereIn('status', ['Approved', 'Closed']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} elseif ($role == 'Area Manager Cabang') {
|
||||||
|
$cabang_id = auth()->user()->getMyCabangAndRegionId()['cabang'];
|
||||||
|
|
||||||
|
if ($cabang_id) {
|
||||||
|
$users = UserHasCabang::where('cabang_id', $cabang_id)->pluck('user_id');
|
||||||
|
|
||||||
|
foreach ($forms as $key => $query) {
|
||||||
|
$forms[$key] = $query->whereIn('user_id', $users)->whereIn('status', ['Approved', 'Closed']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} elseif ($role == 'Medical Representatif') {
|
||||||
|
foreach ($forms as $key => $query) {
|
||||||
|
$forms[$key] = $query->where('user_id', auth()->user()->id)->whereIn('status', ['Approved', 'Closed']);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
foreach ($forms as $key => $query) {
|
||||||
|
$forms[$key] = $query->whereIn('status', ['Approved', 'Closed']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sum the filtered queries
|
||||||
|
foreach ($forms as $key => $query) {
|
||||||
|
$forms[$key] = $query->sum('total');
|
||||||
|
}
|
||||||
|
|
||||||
return view(
|
return view(
|
||||||
'backend.pages.dashboard.index',
|
'backend.pages.dashboard.index',
|
||||||
[
|
[
|
||||||
'total_admins' => Admin::count(),
|
'forms' => $forms,
|
||||||
'total_roles' => Role::count(),
|
|
||||||
'total_permissions' => Permission::count(),
|
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ namespace App\Http\Controllers\Backend;
|
|||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use App\Helpers\AuditTrailHelper;
|
||||||
|
|
||||||
class MenuRoleController extends Controller
|
class MenuRoleController extends Controller
|
||||||
{
|
{
|
||||||
@@ -99,6 +100,8 @@ class MenuRoleController extends Controller
|
|||||||
|
|
||||||
DB::table('role_menu')->insert($dataToInsert);
|
DB::table('role_menu')->insert($dataToInsert);
|
||||||
DB::commit();
|
DB::commit();
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Update', 'Assign Menu (' . $roleId . ') to Role (' . $roleId . ')');
|
||||||
return response()->json(['success' => true], 200);
|
return response()->json(['success' => true], 200);
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
DB::rollBack();
|
DB::rollBack();
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ use Illuminate\Contracts\Support\Renderable;
|
|||||||
use Illuminate\Http\RedirectResponse;
|
use Illuminate\Http\RedirectResponse;
|
||||||
use Spatie\Permission\Models\Role;
|
use Spatie\Permission\Models\Role;
|
||||||
use Spatie\Permission\Models\Permission;
|
use Spatie\Permission\Models\Permission;
|
||||||
|
use App\Helpers\AuditTrailHelper;
|
||||||
|
|
||||||
class RolesController extends Controller
|
class RolesController extends Controller
|
||||||
{
|
{
|
||||||
@@ -60,6 +61,7 @@ class RolesController extends Controller
|
|||||||
$role->syncPermissions($permissions);
|
$role->syncPermissions($permissions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Insert', 'Created New Role (' . $request->name . ') in the Role Table');
|
||||||
session()->flash('success', 'Role has been created.');
|
session()->flash('success', 'Role has been created.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -105,6 +107,7 @@ class RolesController extends Controller
|
|||||||
$role->syncPermissions($permissions);
|
$role->syncPermissions($permissions);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Update', 'Updated Role Data (' . $request->name . ') in the Role Table');
|
||||||
session()->flash('success', 'Role has been updated.');
|
session()->flash('success', 'Role has been updated.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -118,6 +121,7 @@ class RolesController extends Controller
|
|||||||
session()->flash('error', 'Role not found.');
|
session()->flash('error', 'Role not found.');
|
||||||
return back();
|
return back();
|
||||||
}
|
}
|
||||||
|
AuditTrailHelper::AddAuditTrail('Delete', 'Deleted Role (' . $role->name . ')');
|
||||||
|
|
||||||
$role->delete();
|
$role->delete();
|
||||||
session()->flash('success', 'Role has been deleted.');
|
session()->flash('success', 'Role has been deleted.');
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ use App\Mail\ExpenseApproved;
|
|||||||
use App\Mail\ExpenseRejected;
|
use App\Mail\ExpenseRejected;
|
||||||
use App\Mail\FinalApprove;
|
use App\Mail\FinalApprove;
|
||||||
use App\Helpers\WhatsappHelper;
|
use App\Helpers\WhatsappHelper;
|
||||||
|
use App\Helpers\AuditTrailHelper;
|
||||||
|
|
||||||
class FormEntertainmentPresentationController extends Controller
|
class FormEntertainmentPresentationController extends Controller
|
||||||
{
|
{
|
||||||
@@ -26,12 +27,10 @@ class FormEntertainmentPresentationController extends Controller
|
|||||||
{
|
{
|
||||||
$this->checkAuthorization(auth()->user(), ['forms.entertainment.view']);
|
$this->checkAuthorization(auth()->user(), ['forms.entertainment.view']);
|
||||||
|
|
||||||
// get user role
|
|
||||||
// get user role
|
|
||||||
$role = auth()->user()->getRoleNames()[0];
|
$role = auth()->user()->getRoleNames()[0];
|
||||||
$forms = FormEntertaimentPresentation::get();
|
$forms = FormEntertaimentPresentation::get();
|
||||||
|
|
||||||
if ($role == 'Admin Region') {
|
if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') {
|
||||||
$region_id = auth()->user()->getMyCabangAndRegionId()['region'];
|
$region_id = auth()->user()->getMyCabangAndRegionId()['region'];
|
||||||
|
|
||||||
if ($region_id) {
|
if ($region_id) {
|
||||||
@@ -43,8 +42,20 @@ class FormEntertainmentPresentationController extends Controller
|
|||||||
$forms = $forms->whereIn('user_id', $userIds);
|
$forms = $forms->whereIn('user_id', $userIds);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else if ($role == 'Area Manager Cabang') {
|
||||||
|
$cabang_id = auth()->user()->getMyCabangAndRegionId()['cabang'];
|
||||||
|
|
||||||
|
if ($cabang_id) {
|
||||||
|
$users = UserHasCabang::where('cabang_id', $cabang_id)->get();
|
||||||
|
$userIds = $users->pluck('user_id')->toArray();
|
||||||
|
$forms = $forms->whereIn('user_id', $userIds);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ($role == 'Medical Representatif') {
|
||||||
$forms = $forms->where('user_id', auth()->user()->id);
|
$forms = $forms->where('user_id', auth()->user()->id);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$forms = $forms;
|
||||||
}
|
}
|
||||||
|
|
||||||
session()->put('redirect_url', route('forms.entertainment'));
|
session()->put('redirect_url', route('forms.entertainment'));
|
||||||
@@ -145,6 +156,7 @@ class FormEntertainmentPresentationController extends Controller
|
|||||||
'status' => 'On Progress',
|
'status' => 'On Progress',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Insert', 'Insert New Expense at Form Entertainment Presentation (' . $expense_number . ')');
|
||||||
session()->flash('success', 'Form has been created.');
|
session()->flash('success', 'Form has been created.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -247,6 +259,7 @@ class FormEntertainmentPresentationController extends Controller
|
|||||||
'account_number' => $kategori->account_number,
|
'account_number' => $kategori->account_number,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Update', 'Update Expense at Form Entertainment Presentation (' . $form->expense_number . ')');
|
||||||
session()->flash('success', 'Form has been updated.');
|
session()->flash('success', 'Form has been updated.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -297,6 +310,7 @@ class FormEntertainmentPresentationController extends Controller
|
|||||||
// Send bulk whatsapp
|
// Send bulk whatsapp
|
||||||
WhatsappHelper::approveExpense($phoneNumbers, $expense_number);
|
WhatsappHelper::approveExpense($phoneNumbers, $expense_number);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Approve', 'Approved Expense at Form Entertainment Presentation (' . $expense_number . ')');
|
||||||
session()->flash('success', 'Form has been approved.');
|
session()->flash('success', 'Form has been approved.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -352,6 +366,7 @@ class FormEntertainmentPresentationController extends Controller
|
|||||||
// send whatsapp message
|
// send whatsapp message
|
||||||
WhatsappHelper::finalApprove($phoneNumbers, $expense_number);
|
WhatsappHelper::finalApprove($phoneNumbers, $expense_number);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Final Approve', 'Final Approved Expense at Form Entertainment Presentation (' . $expense_number . ')');
|
||||||
session()->flash('success', 'Form has been final approved.');
|
session()->flash('success', 'Form has been final approved.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -367,6 +382,7 @@ class FormEntertainmentPresentationController extends Controller
|
|||||||
'status' => 'Approved'
|
'status' => 'Approved'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Open', 'Open Expense at Form Entertainment Presentation (' . $form->expense_number . ')');
|
||||||
session()->flash('success', 'Form has been opened.');
|
session()->flash('success', 'Form has been opened.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -415,6 +431,7 @@ class FormEntertainmentPresentationController extends Controller
|
|||||||
// Send bulk whatsapp
|
// Send bulk whatsapp
|
||||||
WhatsappHelper::rejectExpense($phoneNumbers, $expense_number);
|
WhatsappHelper::rejectExpense($phoneNumbers, $expense_number);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Reject', 'Reject Expense at Form Entertainment Presentation (' . $expense_number . ')');
|
||||||
session()->flash('success', 'Form has been rejected.');
|
session()->flash('success', 'Form has been rejected.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -424,6 +441,7 @@ class FormEntertainmentPresentationController extends Controller
|
|||||||
$this->checkAuthorization(auth()->user(), ['forms.entertainment.delete']);
|
$this->checkAuthorization(auth()->user(), ['forms.entertainment.delete']);
|
||||||
|
|
||||||
$form = FormEntertaimentPresentation::findOrfail($id);
|
$form = FormEntertaimentPresentation::findOrfail($id);
|
||||||
|
AuditTrailHelper::AddAuditTrail('Delete', 'Delete Record at Form Entertainment Presentation (' . $form->expense_number . ')');
|
||||||
$form->delete();
|
$form->delete();
|
||||||
|
|
||||||
session()->flash('success', 'Form has been deleted.');
|
session()->flash('success', 'Form has been deleted.');
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ use App\Mail\ExpenseApproved;
|
|||||||
use App\Mail\ExpenseRejected;
|
use App\Mail\ExpenseRejected;
|
||||||
use App\Mail\FinalApprove;
|
use App\Mail\FinalApprove;
|
||||||
use App\Helpers\WhatsappHelper;
|
use App\Helpers\WhatsappHelper;
|
||||||
|
use App\Helpers\AuditTrailHelper;
|
||||||
|
|
||||||
class FormMeetingSeminarController extends Controller
|
class FormMeetingSeminarController extends Controller
|
||||||
{
|
{
|
||||||
@@ -26,12 +27,10 @@ class FormMeetingSeminarController extends Controller
|
|||||||
{
|
{
|
||||||
$this->checkAuthorization(auth()->user(), ['forms.meeting.view']);
|
$this->checkAuthorization(auth()->user(), ['forms.meeting.view']);
|
||||||
|
|
||||||
// get user role
|
|
||||||
// get user role
|
|
||||||
$role = auth()->user()->getRoleNames()[0];
|
$role = auth()->user()->getRoleNames()[0];
|
||||||
$forms = FormMeetingSeminar::get();
|
$forms = FormMeetingSeminar::get();
|
||||||
|
|
||||||
if ($role == 'Admin Region') {
|
if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') {
|
||||||
$region_id = auth()->user()->getMyCabangAndRegionId()['region'];
|
$region_id = auth()->user()->getMyCabangAndRegionId()['region'];
|
||||||
|
|
||||||
if ($region_id) {
|
if ($region_id) {
|
||||||
@@ -43,8 +42,20 @@ class FormMeetingSeminarController extends Controller
|
|||||||
$forms = $forms->whereIn('user_id', $userIds);
|
$forms = $forms->whereIn('user_id', $userIds);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else if ($role == 'Area Manager Cabang') {
|
||||||
|
$cabang_id = auth()->user()->getMyCabangAndRegionId()['cabang'];
|
||||||
|
|
||||||
|
if ($cabang_id) {
|
||||||
|
$users = UserHasCabang::where('cabang_id', $cabang_id)->get();
|
||||||
|
$userIds = $users->pluck('user_id')->toArray();
|
||||||
|
$forms = $forms->whereIn('user_id', $userIds);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ($role == 'Medical Representatif') {
|
||||||
$forms = $forms->where('user_id', auth()->user()->id);
|
$forms = $forms->where('user_id', auth()->user()->id);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$forms = $forms;
|
||||||
}
|
}
|
||||||
|
|
||||||
session()->put('redirect_url', route('forms.meeting'));
|
session()->put('redirect_url', route('forms.meeting'));
|
||||||
@@ -138,6 +149,7 @@ class FormMeetingSeminarController extends Controller
|
|||||||
'status' => 'On Progress',
|
'status' => 'On Progress',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Insert', 'Insert New Expense at Form Meeting Seminar (' . $expense_number . ')');
|
||||||
session()->flash('success', 'Form has been created.');
|
session()->flash('success', 'Form has been created.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -233,6 +245,7 @@ class FormMeetingSeminarController extends Controller
|
|||||||
'account_number' => $kategori->account_number,
|
'account_number' => $kategori->account_number,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Update', 'Update Expense at Form Meeting Seminar (' . $form->expense_number . ')');
|
||||||
session()->flash('success', 'Form has been updated.');
|
session()->flash('success', 'Form has been updated.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -283,6 +296,7 @@ class FormMeetingSeminarController extends Controller
|
|||||||
// Send bulk WhatsApp message
|
// Send bulk WhatsApp message
|
||||||
WhatsappHelper::approveExpense($phoneNumbers, $expense_number);
|
WhatsappHelper::approveExpense($phoneNumbers, $expense_number);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Approve', 'Approve Expense at Form Meeting Seminar (' . $form->expense_number . ')');
|
||||||
session()->flash('success', 'Form has been approved.');
|
session()->flash('success', 'Form has been approved.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -338,6 +352,7 @@ class FormMeetingSeminarController extends Controller
|
|||||||
// send whatsapp message
|
// send whatsapp message
|
||||||
WhatsappHelper::finalApprove($phoneNumbers, $expense_number);
|
WhatsappHelper::finalApprove($phoneNumbers, $expense_number);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Final Approve', 'Final Approve Expense at Form Meeting Seminar (' . $form->expense_number . ')');
|
||||||
session()->flash('success', 'Form has been final approved.');
|
session()->flash('success', 'Form has been final approved.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -353,6 +368,7 @@ class FormMeetingSeminarController extends Controller
|
|||||||
'status' => 'Approved'
|
'status' => 'Approved'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Open', 'Open Expense at Form Meeting Seminar (' . $form->expense_number . ')');
|
||||||
session()->flash('success', 'Form has been opened.');
|
session()->flash('success', 'Form has been opened.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -401,6 +417,7 @@ class FormMeetingSeminarController extends Controller
|
|||||||
// Send bulk WhatsApp message
|
// Send bulk WhatsApp message
|
||||||
WhatsappHelper::rejectExpense($phoneNumbers, $expense_number);
|
WhatsappHelper::rejectExpense($phoneNumbers, $expense_number);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Reject', 'Reject Expense at Form Meeting Seminar (' . $form->expense_number . ')');
|
||||||
session()->flash('success', 'Form has been rejected.');
|
session()->flash('success', 'Form has been rejected.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -410,6 +427,8 @@ class FormMeetingSeminarController extends Controller
|
|||||||
$this->checkAuthorization(auth()->user(), ['forms.meeting.delete']);
|
$this->checkAuthorization(auth()->user(), ['forms.meeting.delete']);
|
||||||
|
|
||||||
$form = FormMeetingSeminar::findOrfail($id);
|
$form = FormMeetingSeminar::findOrfail($id);
|
||||||
|
AuditTrailHelper::AddAuditTrail('Delete', 'Delete Record at Form Meeting Seminar (' . $form->expense_number . ')');
|
||||||
|
|
||||||
$form->delete();
|
$form->delete();
|
||||||
|
|
||||||
session()->flash('success', 'Form has been deleted.');
|
session()->flash('success', 'Form has been deleted.');
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ use App\Mail\ExpenseApproved;
|
|||||||
use App\Mail\ExpenseRejected;
|
use App\Mail\ExpenseRejected;
|
||||||
use App\Mail\FinalApprove;
|
use App\Mail\FinalApprove;
|
||||||
use App\Helpers\WhatsappHelper;
|
use App\Helpers\WhatsappHelper;
|
||||||
|
use App\Helpers\AuditTrailHelper;
|
||||||
|
|
||||||
class FormOtherController extends Controller
|
class FormOtherController extends Controller
|
||||||
{
|
{
|
||||||
@@ -26,15 +27,10 @@ class FormOtherController extends Controller
|
|||||||
{
|
{
|
||||||
$this->checkAuthorization(auth()->user(), ['forms.other.view']);
|
$this->checkAuthorization(auth()->user(), ['forms.other.view']);
|
||||||
|
|
||||||
// get user role
|
|
||||||
$role = auth()->user()->getRoleNames()[0];
|
|
||||||
$forms = null;
|
|
||||||
|
|
||||||
// get user role
|
|
||||||
$role = auth()->user()->getRoleNames()[0];
|
$role = auth()->user()->getRoleNames()[0];
|
||||||
$forms = FormOthers::get();
|
$forms = FormOthers::get();
|
||||||
|
|
||||||
if ($role == 'Admin Region') {
|
if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') {
|
||||||
$region_id = auth()->user()->getMyCabangAndRegionId()['region'];
|
$region_id = auth()->user()->getMyCabangAndRegionId()['region'];
|
||||||
|
|
||||||
if ($region_id) {
|
if ($region_id) {
|
||||||
@@ -46,8 +42,20 @@ class FormOtherController extends Controller
|
|||||||
$forms = $forms->whereIn('user_id', $userIds);
|
$forms = $forms->whereIn('user_id', $userIds);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else if ($role == 'Area Manager Cabang') {
|
||||||
|
$cabang_id = auth()->user()->getMyCabangAndRegionId()['cabang'];
|
||||||
|
|
||||||
|
if ($cabang_id) {
|
||||||
|
$users = UserHasCabang::where('cabang_id', $cabang_id)->get();
|
||||||
|
$userIds = $users->pluck('user_id')->toArray();
|
||||||
|
$forms = $forms->whereIn('user_id', $userIds);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ($role == 'Medical Representatif') {
|
||||||
$forms = $forms->where('user_id', auth()->user()->id);
|
$forms = $forms->where('user_id', auth()->user()->id);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$forms = $forms;
|
||||||
}
|
}
|
||||||
|
|
||||||
session()->put('redirect_url', route('forms.other'));
|
session()->put('redirect_url', route('forms.other'));
|
||||||
@@ -144,6 +152,7 @@ class FormOtherController extends Controller
|
|||||||
'status' => 'On Progress',
|
'status' => 'On Progress',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Insert', 'Insert New Expense at Form Entertainment Presentation (' . $expense_number . ')');
|
||||||
session()->flash('success', 'Form has been created.');
|
session()->flash('success', 'Form has been created.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -241,6 +250,7 @@ class FormOtherController extends Controller
|
|||||||
'account_number' => $kategori->account_number,
|
'account_number' => $kategori->account_number,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Update', 'Update Record at Form Entertainment Presentation (' . $form->expense_number . ')');
|
||||||
session()->flash('success', 'Form has been updated.');
|
session()->flash('success', 'Form has been updated.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -291,6 +301,7 @@ class FormOtherController extends Controller
|
|||||||
// Send bulk WhatsApp message
|
// Send bulk WhatsApp message
|
||||||
WhatsappHelper::approveExpense($phoneNumbers, $expense_number);
|
WhatsappHelper::approveExpense($phoneNumbers, $expense_number);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Approve', 'Approve Expense at Form Entertainment Presentation (' . $form->expense_number . ')');
|
||||||
session()->flash('success', 'Form has been approved.');
|
session()->flash('success', 'Form has been approved.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -346,6 +357,7 @@ class FormOtherController extends Controller
|
|||||||
// send whatsapp message
|
// send whatsapp message
|
||||||
WhatsappHelper::finalApprove($phoneNumbers, $expense_number);
|
WhatsappHelper::finalApprove($phoneNumbers, $expense_number);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Final Approve', 'Final Approve Expense at Form Entertainment Presentation (' . $form->expense_number . ')');
|
||||||
session()->flash('success', 'Form has been final approved.');
|
session()->flash('success', 'Form has been final approved.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -361,6 +373,7 @@ class FormOtherController extends Controller
|
|||||||
'status' => 'Approved'
|
'status' => 'Approved'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Open', 'Open Expense at Form Entertainment Presentation (' . $form->expense_number . ')');
|
||||||
session()->flash('success', 'Form has been opened.');
|
session()->flash('success', 'Form has been opened.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -409,6 +422,7 @@ class FormOtherController extends Controller
|
|||||||
// Send bulk WhatsApp message
|
// Send bulk WhatsApp message
|
||||||
WhatsappHelper::rejectExpense($phoneNumbers, $expense_number);
|
WhatsappHelper::rejectExpense($phoneNumbers, $expense_number);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Reject', 'Reject Expense at Form Entertainment Presentation (' . $form->expense_number . ')');
|
||||||
session()->flash('success', 'Form has been rejected.');
|
session()->flash('success', 'Form has been rejected.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -418,6 +432,8 @@ class FormOtherController extends Controller
|
|||||||
$this->checkAuthorization(auth()->user(), ['forms.other.delete']);
|
$this->checkAuthorization(auth()->user(), ['forms.other.delete']);
|
||||||
|
|
||||||
$form = FormOthers::findOrfail($id);
|
$form = FormOthers::findOrfail($id);
|
||||||
|
AuditTrailHelper::AddAuditTrail('Delete', 'Delete Record at Form Entertainment Presentation (' . $form->expense_number . ')');
|
||||||
|
|
||||||
$form->delete();
|
$form->delete();
|
||||||
|
|
||||||
session()->flash('success', 'Form has been deleted.');
|
session()->flash('success', 'Form has been deleted.');
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ use App\Mail\ExpenseApproved;
|
|||||||
use App\Mail\ExpenseRejected;
|
use App\Mail\ExpenseRejected;
|
||||||
use App\Mail\FinalApprove;
|
use App\Mail\FinalApprove;
|
||||||
use App\Helpers\WhatsappHelper;
|
use App\Helpers\WhatsappHelper;
|
||||||
|
use App\Helpers\AuditTrailHelper;
|
||||||
|
|
||||||
class FormUpCountryController extends Controller
|
class FormUpCountryController extends Controller
|
||||||
{
|
{
|
||||||
@@ -26,11 +27,10 @@ class FormUpCountryController extends Controller
|
|||||||
{
|
{
|
||||||
$this->checkAuthorization(auth()->user(), ['forms.country.view']);
|
$this->checkAuthorization(auth()->user(), ['forms.country.view']);
|
||||||
|
|
||||||
// get user role
|
|
||||||
$role = auth()->user()->getRoleNames()[0];
|
$role = auth()->user()->getRoleNames()[0];
|
||||||
$forms = FormUpCountry::get();
|
$forms = FormUpCountry::get();
|
||||||
|
|
||||||
if ($role == 'Admin Region') {
|
if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') {
|
||||||
$region_id = auth()->user()->getMyCabangAndRegionId()['region'];
|
$region_id = auth()->user()->getMyCabangAndRegionId()['region'];
|
||||||
|
|
||||||
if ($region_id) {
|
if ($region_id) {
|
||||||
@@ -42,8 +42,20 @@ class FormUpCountryController extends Controller
|
|||||||
$forms = $forms->whereIn('user_id', $userIds);
|
$forms = $forms->whereIn('user_id', $userIds);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else if ($role == 'Area Manager Cabang') {
|
||||||
|
$cabang_id = auth()->user()->getMyCabangAndRegionId()['cabang'];
|
||||||
|
|
||||||
|
if ($cabang_id) {
|
||||||
|
$users = UserHasCabang::where('cabang_id', $cabang_id)->get();
|
||||||
|
$userIds = $users->pluck('user_id')->toArray();
|
||||||
|
$forms = $forms->whereIn('user_id', $userIds);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ($role == 'Medical Representatif') {
|
||||||
$forms = $forms->where('user_id', auth()->user()->id);
|
$forms = $forms->where('user_id', auth()->user()->id);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$forms = $forms;
|
||||||
}
|
}
|
||||||
|
|
||||||
session()->put('redirect_url', route('forms.up-country'));
|
session()->put('redirect_url', route('forms.up-country'));
|
||||||
@@ -148,6 +160,7 @@ class FormUpCountryController extends Controller
|
|||||||
'status' => 'On Progress',
|
'status' => 'On Progress',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Insert', 'Insert New Expense at Form Entertainment Presentation (' . $expense_number . ')');
|
||||||
session()->flash('success', 'Form has been created.');
|
session()->flash('success', 'Form has been created.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -254,6 +267,7 @@ class FormUpCountryController extends Controller
|
|||||||
'account_number' => $kategori->account_number,
|
'account_number' => $kategori->account_number,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Update', 'Update Record at Form Entertainment Presentation (' . $form->expense_number . ')');
|
||||||
session()->flash('success', 'Form has been updated.');
|
session()->flash('success', 'Form has been updated.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -304,6 +318,7 @@ class FormUpCountryController extends Controller
|
|||||||
// send whatsapp message
|
// send whatsapp message
|
||||||
WhatsappHelper::approveExpense($phoneNumbers, $expense_number);
|
WhatsappHelper::approveExpense($phoneNumbers, $expense_number);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Approve', 'Approve Expense at Form Entertainment Presentation (' . $form->expense_number . ')');
|
||||||
session()->flash('success', 'Form has been approved.');
|
session()->flash('success', 'Form has been approved.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -352,6 +367,7 @@ class FormUpCountryController extends Controller
|
|||||||
// send whatsapp message
|
// send whatsapp message
|
||||||
WhatsappHelper::rejectExpense($phoneNumbers, $expense_number);
|
WhatsappHelper::rejectExpense($phoneNumbers, $expense_number);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Reject', 'Reject Expense at Form Entertainment Presentation (' . $form->expense_number . ')');
|
||||||
session()->flash('success', 'Form has been rejected.');
|
session()->flash('success', 'Form has been rejected.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -407,6 +423,7 @@ class FormUpCountryController extends Controller
|
|||||||
// send whatsapp message
|
// send whatsapp message
|
||||||
WhatsappHelper::finalApprove($phoneNumbers, $expense_number);
|
WhatsappHelper::finalApprove($phoneNumbers, $expense_number);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Final Approve', 'Final Approve Expense at Form Entertainment Presentation (' . $form->expense_number . ')');
|
||||||
session()->flash('success', 'Form has been final approved.');
|
session()->flash('success', 'Form has been final approved.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -422,6 +439,7 @@ class FormUpCountryController extends Controller
|
|||||||
'status' => 'Approved'
|
'status' => 'Approved'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Open', 'Open Expense at Form Entertainment Presentation (' . $form->expense_number . ')');
|
||||||
session()->flash('success', 'Form has been opened.');
|
session()->flash('success', 'Form has been opened.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -431,6 +449,8 @@ class FormUpCountryController extends Controller
|
|||||||
$this->checkAuthorization(auth()->user(), ['forms.country.delete']);
|
$this->checkAuthorization(auth()->user(), ['forms.country.delete']);
|
||||||
|
|
||||||
$form = FormUpCountry::findOrfail($id);
|
$form = FormUpCountry::findOrfail($id);
|
||||||
|
AuditTrailHelper::AddAuditTrail('Delete', 'Delete Record at Form Entertainment Presentation (' . $form->expense_number . ')');
|
||||||
|
|
||||||
$form->delete();
|
$form->delete();
|
||||||
|
|
||||||
session()->flash('success', 'Form has been deleted.');
|
session()->flash('success', 'Form has been deleted.');
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ use App\Mail\ExpenseApproved;
|
|||||||
use App\Mail\ExpenseRejected;
|
use App\Mail\ExpenseRejected;
|
||||||
use App\Mail\FinalApprove;
|
use App\Mail\FinalApprove;
|
||||||
use App\Helpers\WhatsappHelper;
|
use App\Helpers\WhatsappHelper;
|
||||||
|
use App\Helpers\AuditTrailHelper;
|
||||||
|
|
||||||
class FormVehicleController extends Controller
|
class FormVehicleController extends Controller
|
||||||
{
|
{
|
||||||
@@ -26,11 +27,10 @@ class FormVehicleController extends Controller
|
|||||||
{
|
{
|
||||||
$this->checkAuthorization(auth()->user(), ['forms.vehicle.view']);
|
$this->checkAuthorization(auth()->user(), ['forms.vehicle.view']);
|
||||||
|
|
||||||
// get user role
|
|
||||||
$role = auth()->user()->getRoleNames()[0];
|
$role = auth()->user()->getRoleNames()[0];
|
||||||
$forms = FormVehicleRunningCost::get();
|
$forms = FormVehicleRunningCost::get();
|
||||||
|
|
||||||
if ($role == 'Admin Region') {
|
if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') {
|
||||||
$region_id = auth()->user()->getMyCabangAndRegionId()['region'];
|
$region_id = auth()->user()->getMyCabangAndRegionId()['region'];
|
||||||
|
|
||||||
if ($region_id) {
|
if ($region_id) {
|
||||||
@@ -42,8 +42,20 @@ class FormVehicleController extends Controller
|
|||||||
$forms = $forms->whereIn('user_id', $userIds);
|
$forms = $forms->whereIn('user_id', $userIds);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else if ($role == 'Area Manager Cabang') {
|
||||||
|
$cabang_id = auth()->user()->getMyCabangAndRegionId()['cabang'];
|
||||||
|
|
||||||
|
if ($cabang_id) {
|
||||||
|
$users = UserHasCabang::where('cabang_id', $cabang_id)->get();
|
||||||
|
$userIds = $users->pluck('user_id')->toArray();
|
||||||
|
$forms = $forms->whereIn('user_id', $userIds);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ($role == 'Medical Representatif') {
|
||||||
$forms = $forms->where('user_id', auth()->user()->id);
|
$forms = $forms->where('user_id', auth()->user()->id);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$forms = $forms;
|
||||||
}
|
}
|
||||||
|
|
||||||
session()->put('redirect_url', route('forms.vehicle'));
|
session()->put('redirect_url', route('forms.vehicle'));
|
||||||
@@ -144,6 +156,7 @@ class FormVehicleController extends Controller
|
|||||||
'status' => 'On Progress',
|
'status' => 'On Progress',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Insert', 'Insert New Expense at Form Entertainment Presentation (' . $expense_number . ')');
|
||||||
session()->flash('success', 'Form has been created.');
|
session()->flash('success', 'Form has been created.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -247,6 +260,7 @@ class FormVehicleController extends Controller
|
|||||||
'status' => 'On Progress',
|
'status' => 'On Progress',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Update', 'Update Record at Form Entertainment Presentation (' . $form->expense_number . ')');
|
||||||
session()->flash('success', 'Form has been updated.');
|
session()->flash('success', 'Form has been updated.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -297,6 +311,7 @@ class FormVehicleController extends Controller
|
|||||||
// Send bulk WhatsApp message
|
// Send bulk WhatsApp message
|
||||||
WhatsappHelper::approveExpense($phoneNumbers, $expense_number);
|
WhatsappHelper::approveExpense($phoneNumbers, $expense_number);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Approve', 'Approve Expense at Form Entertainment Presentation (' . $form->expense_number . ')');
|
||||||
session()->flash('success', 'Form has been approved.');
|
session()->flash('success', 'Form has been approved.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -352,6 +367,7 @@ class FormVehicleController extends Controller
|
|||||||
// send whatsapp message
|
// send whatsapp message
|
||||||
WhatsappHelper::finalApprove($phoneNumbers, $expense_number);
|
WhatsappHelper::finalApprove($phoneNumbers, $expense_number);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Final Approve', 'Final Approve Expense at Form Entertainment Presentation (' . $form->expense_number . ')');
|
||||||
session()->flash('success', 'Form has been final approved.');
|
session()->flash('success', 'Form has been final approved.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -367,6 +383,7 @@ class FormVehicleController extends Controller
|
|||||||
'status' => 'Approved'
|
'status' => 'Approved'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Open', 'Open Expense at Form Entertainment Presentation (' . $form->expense_number . ')');
|
||||||
session()->flash('success', 'Form has been opened.');
|
session()->flash('success', 'Form has been opened.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -415,6 +432,7 @@ class FormVehicleController extends Controller
|
|||||||
// Send bulk WhatsApp message
|
// Send bulk WhatsApp message
|
||||||
WhatsappHelper::rejectExpense($phoneNumbers, $expense_number);
|
WhatsappHelper::rejectExpense($phoneNumbers, $expense_number);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Reject', 'Reject Expense at Form Entertainment Presentation (' . $form->expense_number . ')');
|
||||||
session()->flash('success', 'Form has been rejected.');
|
session()->flash('success', 'Form has been rejected.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -424,6 +442,8 @@ class FormVehicleController extends Controller
|
|||||||
$this->checkAuthorization(auth()->user(), ['forms.vehicle.delete']);
|
$this->checkAuthorization(auth()->user(), ['forms.vehicle.delete']);
|
||||||
|
|
||||||
$form = FormVehicleRunningCost::findOrfail($id);
|
$form = FormVehicleRunningCost::findOrfail($id);
|
||||||
|
AuditTrailHelper::AddAuditTrail('Delete', 'Delete Record at Form Entertainment Presentation (' . $form->expense_number . ')');
|
||||||
|
|
||||||
$form->delete();
|
$form->delete();
|
||||||
|
|
||||||
session()->flash('success', 'Form has been deleted.');
|
session()->flash('success', 'Form has been deleted.');
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ namespace App\Http\Controllers\Master;
|
|||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Models\Kategori;
|
use App\Models\Kategori;
|
||||||
|
use App\Helpers\AuditTrailHelper;
|
||||||
|
|
||||||
class CategoryController extends Controller
|
class CategoryController extends Controller
|
||||||
{
|
{
|
||||||
@@ -37,6 +38,7 @@ class CategoryController extends Controller
|
|||||||
'account_number' => $request->account_number
|
'account_number' => $request->account_number
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Insert', 'Insert New Record at Category Table (' . $request->name . ')');
|
||||||
session()->flash('success', 'Category has been created.');
|
session()->flash('success', 'Category has been created.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -62,6 +64,7 @@ class CategoryController extends Controller
|
|||||||
'account_number' => $request->account_number
|
'account_number' => $request->account_number
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Update', 'Update Record at Category Table (' . $request->name . ')');
|
||||||
session()->flash('success', 'Category has been updated.');
|
session()->flash('success', 'Category has been updated.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -69,8 +72,10 @@ class CategoryController extends Controller
|
|||||||
public function destroy($id)
|
public function destroy($id)
|
||||||
{
|
{
|
||||||
$this->checkAuthorization(auth()->user(), ['category.delete']);
|
$this->checkAuthorization(auth()->user(), ['category.delete']);
|
||||||
Kategori::findOrfail($id)->delete();
|
$kategori = Kategori::findOrfail($id);
|
||||||
|
$kategori->delete();
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Delete', 'Delete Record at Category Table (' . $kategori->name . ')');
|
||||||
session()->flash('success', 'Category has been deleted.');
|
session()->flash('success', 'Category has been deleted.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ namespace App\Http\Controllers\Master;
|
|||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Models\CostCentre;
|
use App\Models\CostCentre;
|
||||||
|
use App\Helpers\AuditTrailHelper;
|
||||||
|
|
||||||
class CostCentreController extends Controller
|
class CostCentreController extends Controller
|
||||||
{
|
{
|
||||||
@@ -37,6 +38,7 @@ class CostCentreController extends Controller
|
|||||||
'name' => $request->name
|
'name' => $request->name
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Insert', 'Insert Record at Cost Centre Table (' . $request->name . ')');
|
||||||
session()->flash('success', 'Cost Centre has been created.');
|
session()->flash('success', 'Cost Centre has been created.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -62,6 +64,7 @@ class CostCentreController extends Controller
|
|||||||
'name' => $request->name
|
'name' => $request->name
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Update', 'Update Record at Cost Centre Table (' . $request->name . ')');
|
||||||
session()->flash('success', 'Cost has been updated.');
|
session()->flash('success', 'Cost has been updated.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -69,8 +72,10 @@ class CostCentreController extends Controller
|
|||||||
public function destroy($id)
|
public function destroy($id)
|
||||||
{
|
{
|
||||||
$this->checkAuthorization(auth()->user(), ['cost.delete']);
|
$this->checkAuthorization(auth()->user(), ['cost.delete']);
|
||||||
CostCentre::findOrfail($id)->delete();
|
$cost = CostCentre::findOrfail($id);
|
||||||
|
AuditTrailHelper::AddAuditTrail('Delete', 'Delete Record at Cost Centre Table (' . $cost->name . ')');
|
||||||
|
|
||||||
|
$cost->delete();
|
||||||
session()->flash('success', 'Cost has been deleted.');
|
session()->flash('success', 'Cost has been deleted.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ namespace App\Http\Controllers\Master;
|
|||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Models\Rayon;
|
use App\Models\Rayon;
|
||||||
|
use App\Helpers\AuditTrailHelper;
|
||||||
|
|
||||||
class RayonController extends Controller
|
class RayonController extends Controller
|
||||||
{
|
{
|
||||||
@@ -37,6 +38,7 @@ class RayonController extends Controller
|
|||||||
'name' => $request->name
|
'name' => $request->name
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Insert', 'Insert New Record at Rayon Table (' . $request->name . ')');
|
||||||
session()->flash('success', 'Rayon has been created.');
|
session()->flash('success', 'Rayon has been created.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -62,6 +64,7 @@ class RayonController extends Controller
|
|||||||
'name' => $request->name
|
'name' => $request->name
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
AuditTrailHelper::AddAuditTrail('Update', 'Update New Record at Rayon Table (' . $request->name . ')');
|
||||||
session()->flash('success', 'Rayon has been updated.');
|
session()->flash('success', 'Rayon has been updated.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
@@ -69,8 +72,10 @@ class RayonController extends Controller
|
|||||||
public function destroy($id)
|
public function destroy($id)
|
||||||
{
|
{
|
||||||
$this->checkAuthorization(auth()->user(), ['rayon.delete']);
|
$this->checkAuthorization(auth()->user(), ['rayon.delete']);
|
||||||
Rayon::findOrfail($id)->delete();
|
$rayon = Rayon::findOrfail($id);
|
||||||
|
AuditTrailHelper::AddAuditTrail('Delete', 'Delete Record at Rayon Table (' . $rayon->name . ')');
|
||||||
|
|
||||||
|
$rayon->delete();
|
||||||
session()->flash('success', 'Rayon has been deleted.');
|
session()->flash('success', 'Rayon has been deleted.');
|
||||||
return redirect()->back();
|
return redirect()->back();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,4 +18,9 @@ class AuditTrail extends Model
|
|||||||
'user_agent',
|
'user_agent',
|
||||||
'browser',
|
'browser',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
public function user()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(Admin::class, 'user_id');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ return new class extends Migration
|
|||||||
{
|
{
|
||||||
Schema::create('audit_trail', function (Blueprint $table) {
|
Schema::create('audit_trail', function (Blueprint $table) {
|
||||||
$table->id();
|
$table->id();
|
||||||
$table->foreignId('user_id')->constrained('admins')->cascadeOnDelete();
|
$table->foreignId('user_id')->nullable()->constrained('admins')->cascadeOnDelete();
|
||||||
$table->string('ip_address');
|
$table->string('ip_address');
|
||||||
$table->string('activity')->nullable();
|
$table->string('activity')->nullable();
|
||||||
$table->string('action')->nullable();
|
$table->string('action')->nullable();
|
||||||
|
|||||||
@@ -103,10 +103,16 @@
|
|||||||
|
|
||||||
@section('scripts')
|
@section('scripts')
|
||||||
<script>
|
<script>
|
||||||
if ($('#dataTable').length) {
|
$(document).ready(function () {
|
||||||
$('#dataTable').DataTable({
|
if ($('#dataTable').length) {
|
||||||
responsive: true
|
$('#dataTable').DataTable({
|
||||||
});
|
responsive: true,
|
||||||
}
|
dom: 'Bfrtip',
|
||||||
|
buttons: [
|
||||||
|
'excel', 'pdf', 'print'
|
||||||
|
]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
@endsection
|
@endsection
|
||||||
|
|||||||
@@ -0,0 +1,101 @@
|
|||||||
|
@extends('layouts.app')
|
||||||
|
|
||||||
|
@section('title')
|
||||||
|
{{ $pageInfo['title'] }}
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
|
||||||
|
@section('admin-content')
|
||||||
|
<section class="content-header">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="row mb-2">
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<h1>{{ $pageInfo['title'] }}</h1>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<ol class="breadcrumb float-sm-right">
|
||||||
|
<li class="breadcrumb-item"><a href="{{ route('admin.dashboard') }}">{{ __('Dashboard') }}</a></li>
|
||||||
|
<li class="breadcrumb-item active"><a href="{{ $pageInfo['path'] }}">{{ $pageInfo['title'] }}</a>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="content">
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<h4 class="header-title float-left">{{ $pageInfo['title'] }}</h4>
|
||||||
|
<div class="clearfix"></div>
|
||||||
|
<div class="data-tables">
|
||||||
|
@include('backend.layouts.partials.messages')
|
||||||
|
<table id="dataTable" class="text-center">
|
||||||
|
<thead class="bg-light text-capitalize">
|
||||||
|
<tr>
|
||||||
|
<th width="5%">{{ __('User') }}</th>
|
||||||
|
<th width="5%">{{ __('Ip Address') }}</th>
|
||||||
|
<th width="5%">{{ __('Action') }}</th>
|
||||||
|
<th width="15%">{{ __('Activity') }}</th>
|
||||||
|
<th width="5%">Browser</th>
|
||||||
|
<th width="15%">User Agent</th>
|
||||||
|
<th width="5%">Time</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($data as $item)
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
{{ $item->user ? $item->user->username : preg_replace('/\).*$/', '', explode('(', $item->activity)[1]) }}
|
||||||
|
</td>
|
||||||
|
<td>{{ $item->ip_address }}</td>
|
||||||
|
<td>
|
||||||
|
@php
|
||||||
|
$color = 'info';
|
||||||
|
if ($item->action == 'Create') {
|
||||||
|
$color = 'success';
|
||||||
|
} elseif ($item->action == 'Update') {
|
||||||
|
$color = 'warning';
|
||||||
|
} elseif ($item->action == 'Delete') {
|
||||||
|
$color = 'danger';
|
||||||
|
}
|
||||||
|
@endphp
|
||||||
|
<div class="badge badge-{{ $color }} text-white">
|
||||||
|
{{ $item->action }}
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td>{{ $item->activity }}</td>
|
||||||
|
<td>{{ $item->browser }}</td>
|
||||||
|
<td>{{ $item->user_agent }}</td>
|
||||||
|
<td>{{ $item->created_at->diffForHumans() }}</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('scripts')
|
||||||
|
<script>
|
||||||
|
$(document).ready(function () {
|
||||||
|
if ($('#dataTable').length) {
|
||||||
|
$('#dataTable').DataTable({
|
||||||
|
responsive: true,
|
||||||
|
dom: 'Bfrtip',
|
||||||
|
buttons: [
|
||||||
|
'excel', 'pdf', 'print'
|
||||||
|
]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
@endsection
|
||||||
@@ -14,7 +14,6 @@
|
|||||||
<div class="col-sm-6">
|
<div class="col-sm-6">
|
||||||
<ol class="breadcrumb float-sm-right">
|
<ol class="breadcrumb float-sm-right">
|
||||||
<li class="breadcrumb-item"><a href="{{ route('dashboard.index') }}">Dashboard</a></li>
|
<li class="breadcrumb-item"><a href="{{ route('dashboard.index') }}">Dashboard</a></li>
|
||||||
</li>
|
|
||||||
</ol>
|
</ol>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -22,6 +21,97 @@
|
|||||||
</section>
|
</section>
|
||||||
<section class="content">
|
<section class="content">
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
|
<div class="row">
|
||||||
|
<!-- Statistic Card 1 -->
|
||||||
|
<div class="col-lg-4 col-6">
|
||||||
|
<div class="small-box bg-info">
|
||||||
|
<div class="inner">
|
||||||
|
<h3>Rp {{ number_format($forms['vehicle'] + $forms['entertainment'] + $forms['meeting'] + $forms['upcountry'] + $forms['others'], 0, ',', '.') }}</h3>
|
||||||
|
<p>All Approved Expenses</p>
|
||||||
|
</div>
|
||||||
|
<div class="icon">
|
||||||
|
<i class="fas fa-check-circle"></i>
|
||||||
|
</div>
|
||||||
|
<a href="#" class="small-box-footer">
|
||||||
|
More info <i class="fas fa-arrow-circle-right"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Statistic Card 2 -->
|
||||||
|
<div class="col-lg-4 col-6">
|
||||||
|
<div class="small-box bg-success">
|
||||||
|
<div class="inner">
|
||||||
|
<h3>Rp {{ number_format($forms['upcountry'], 0, ',', '.') }}</h3>
|
||||||
|
<p>Approved Up Country Expenses</p>
|
||||||
|
</div>
|
||||||
|
<div class="icon">
|
||||||
|
<i class="fa fa-flag" aria-hidden="true"></i>
|
||||||
|
</div>
|
||||||
|
<a href="{{ route('forms.up-country') }}" class="small-box-footer">
|
||||||
|
More info <i class="fas fa-arrow-circle-right"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Statistic Card 3 -->
|
||||||
|
<div class="col-lg-4 col-6">
|
||||||
|
<div class="small-box bg-warning">
|
||||||
|
<div class="inner text-white">
|
||||||
|
<h3>Rp {{ number_format($forms['vehicle'], 0, ',', '.') }}</h3>
|
||||||
|
<p>Approved Vehicle Running Cost Expenses</p>
|
||||||
|
</div>
|
||||||
|
<div class="icon">
|
||||||
|
<i class="fa fa-car" aria-hidden="true"></i>
|
||||||
|
</div>
|
||||||
|
<a href="{{ route('forms.vehicle') }}" class="small-box-footer text-white">
|
||||||
|
<span class="text-white">More info</span> <i class="fas fa-arrow-circle-right text-white"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-4 col-6">
|
||||||
|
<div class="small-box bg-purple">
|
||||||
|
<div class="inner">
|
||||||
|
<h3>Rp {{ number_format($forms['entertainment'], 0, ',', '.') }}</h3>
|
||||||
|
<p>Approved Entertainment Presentation Expenses</p>
|
||||||
|
</div>
|
||||||
|
<div class="icon">
|
||||||
|
<i class="fa fa-desktop" aria-hidden="true"></i>
|
||||||
|
</div>
|
||||||
|
<a href="{{ route('forms.entertainment') }}" class="small-box-footer">
|
||||||
|
More info <i class="fas fa-arrow-circle-right"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-4 col-6">
|
||||||
|
<div class="small-box bg-danger">
|
||||||
|
<div class="inner">
|
||||||
|
<h3>Rp {{ number_format($forms['meeting'], 0, ',', '.') }}</h3>
|
||||||
|
<p>Approved Meeting Seminar Expenses</p>
|
||||||
|
</div>
|
||||||
|
<div class="icon">
|
||||||
|
<i class="fa fa-desktop" aria-hidden="true"></i>
|
||||||
|
</div>
|
||||||
|
<a href="{{ route('forms.meeting') }}" class="small-box-footer">
|
||||||
|
More info <i class="fas fa-arrow-circle-right"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-lg-4 col-6">
|
||||||
|
<div class="small-box bg-pink">
|
||||||
|
<div class="inner">
|
||||||
|
<h3>Rp {{ number_format($forms['others'], 0, ',', '.') }}</h3>
|
||||||
|
<p>Approved Other Expenses</p>
|
||||||
|
</div>
|
||||||
|
<div class="icon">
|
||||||
|
<i class="fa fa-bars" aria-hidden="true"></i>
|
||||||
|
</div>
|
||||||
|
<a href="{{ route('forms.other') }}" class="small-box-footer">
|
||||||
|
More info <i class="fas fa-arrow-circle-right"></i>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="card card-primary card-outline">
|
<div class="card card-primary card-outline">
|
||||||
<div class="card-body text-center">
|
<div class="card-body text-center">
|
||||||
<p class="lead">Welcome to {{ config('app.name') }} (development version).</p>
|
<p class="lead">Welcome to {{ config('app.name') }} (development version).</p>
|
||||||
|
|||||||
+4
-9
@@ -18,6 +18,7 @@ use App\Http\Controllers\Forms\FormMeetingSeminarController;
|
|||||||
use App\Http\Controllers\Forms\FormOtherController;
|
use App\Http\Controllers\Forms\FormOtherController;
|
||||||
use Illuminate\Support\Facades\Storage;
|
use Illuminate\Support\Facades\Storage;
|
||||||
use App\Helpers\NextCloudHelper;
|
use App\Helpers\NextCloudHelper;
|
||||||
|
use App\Http\Controllers\Backend\AuditTrailController;
|
||||||
|
|
||||||
Auth::routes();
|
Auth::routes();
|
||||||
|
|
||||||
@@ -62,6 +63,9 @@ Route::group(['prefix' => 'admin', 'as' => 'admin.', 'middleware' => ['auth:admi
|
|||||||
Route::get('/category/edit/{id}', [CategoryController::class, 'edit'])->name('category.edit');
|
Route::get('/category/edit/{id}', [CategoryController::class, 'edit'])->name('category.edit');
|
||||||
Route::put('/category/update/{id}', [CategoryController::class, 'update'])->name('category.update');
|
Route::put('/category/update/{id}', [CategoryController::class, 'update'])->name('category.update');
|
||||||
Route::delete('/category/destroy/{id}', [CategoryController::class, 'destroy'])->name('category.destroy');
|
Route::delete('/category/destroy/{id}', [CategoryController::class, 'destroy'])->name('category.destroy');
|
||||||
|
|
||||||
|
// Audit Trail
|
||||||
|
Route::get('/audit-trails', [AuditTrailController::class, 'index'])->name('audit-trail.index');
|
||||||
|
|
||||||
})->middleware(['auth:admin']);
|
})->middleware(['auth:admin']);
|
||||||
|
|
||||||
@@ -135,12 +139,3 @@ Route::middleware(['auth:admin', 'menu'])->group(function () {
|
|||||||
Route::get('/auth/menu-tree/{id}', [MenuRoleController::class, 'index'])->name('auth.menurole.index');
|
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');
|
Route::post('/auth/menu-tree/submit', [MenuRoleController::class, 'saveMenu'])->name('auth.menurole.submit');
|
||||||
});
|
});
|
||||||
|
|
||||||
Route::get('/test-nextcloud', function () {
|
|
||||||
$baseUrl = env('NEXT_CLOUD_URL');
|
|
||||||
$adminUsername = env('NEXT_CLOUD_USERNAME');
|
|
||||||
$adminPassword = env('NEXT_CLOUD_PASSWORD');
|
|
||||||
|
|
||||||
$response = NextCloudHelper::createFolder($baseUrl, $adminUsername, $adminPassword, 'test-folder');
|
|
||||||
dd($response);
|
|
||||||
});
|
|
||||||
|
|||||||
Reference in New Issue
Block a user