insyaallah revisi done
This commit is contained in:
@@ -20,6 +20,7 @@ use App\Models\FormMeetingSeminar;
|
||||
use App\Models\UserHasCabang;
|
||||
use App\Models\Cabang;
|
||||
use App\Helpers\AuditTrailHelper;
|
||||
use App\Models\Region;
|
||||
|
||||
class AdminsController extends Controller
|
||||
{
|
||||
@@ -35,7 +36,7 @@ class AdminsController extends Controller
|
||||
'path' => url()->current()
|
||||
];
|
||||
|
||||
$admins = Admin::with(['region', 'cabang', 'roles'])->get();
|
||||
$admins = Admin::with(['region', 'cabang', 'roles', 'getRayon', 'getRegion'])->get();
|
||||
return view('backend.pages.admins.index', [
|
||||
'admins' => $admins,
|
||||
'pageInfo' => $pageInfo,
|
||||
@@ -55,7 +56,7 @@ class AdminsController extends Controller
|
||||
return view('backend.pages.admins.create', [
|
||||
'roles' => Role::all(),
|
||||
'pageInfo' => $pageInfo,
|
||||
'cabangs' => Cabang::all()
|
||||
'regions' => Region::all(),
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -63,15 +64,16 @@ class AdminsController extends Controller
|
||||
{
|
||||
$this->checkAuthorization(auth()->user(), ['admin.create']);
|
||||
|
||||
$admin = new Admin();
|
||||
$admin->name = $request->name;
|
||||
$admin->password = Hash::make($request->password);
|
||||
$admin->username = $request->username;
|
||||
$admin->email = $request->email;
|
||||
$admin->phone = $request->phone;
|
||||
$admin->save();
|
||||
$admin = Admin::create([
|
||||
'name' => $request->name,
|
||||
'password' => Hash::make($request->password),
|
||||
'username' => $request->username,
|
||||
'email' => $request->email,
|
||||
'phone' => $request->phone,
|
||||
'region_id' => $request->region_id ? $request->region_id : null,
|
||||
'rayon_id' => $request->rayon_id ? $request->rayon_id : null,
|
||||
])->assignRole($request->roles);
|
||||
|
||||
// Assign the user to a cabang
|
||||
if($request->cabang_id) {
|
||||
UserHasCabang::create([
|
||||
'user_id' => $admin->id,
|
||||
@@ -79,21 +81,6 @@ class AdminsController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
if ($request->roles) {
|
||||
$admin->assignRole($request->roles);
|
||||
}
|
||||
|
||||
// Create a folder in Nextcloud
|
||||
// $response = NextcloudHelper::createUser(env('NEXT_CLOUD_URL'), env('NEXT_CLOUD_USERNAME'), env('NEXT_CLOUD_PASSWORD'), $request->username, $request->password, $request->name, $request->email);
|
||||
|
||||
// if ($response['success']) {
|
||||
// session()->flash('success', __('Admin has been created.'));
|
||||
// return redirect()->route('admin.admins.index');
|
||||
// } else {
|
||||
// session()->flash('error', $response['message']);
|
||||
// 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.');
|
||||
return redirect()->back();
|
||||
@@ -115,29 +102,33 @@ class AdminsController extends Controller
|
||||
'admin' => $admin,
|
||||
'roles' => Role::all(),
|
||||
'pageInfo' => $pageInfo,
|
||||
'cabangs' => Cabang::all()
|
||||
'regions' => Region::all(),
|
||||
]);
|
||||
}
|
||||
|
||||
public function update(AdminRequest $request, int $id): RedirectResponse
|
||||
{
|
||||
$this->checkAuthorization(auth()->user(), ['admin.edit']);
|
||||
|
||||
$admin = Admin::findOrFail($id);
|
||||
$admin->name = $request->name;
|
||||
$admin->email = $request->email;
|
||||
$admin->username = $request->username;
|
||||
$admin->phone = $request->phone;
|
||||
|
||||
if ($request->password) {
|
||||
$admin->password = Hash::make($request->password);
|
||||
}
|
||||
$admin->save();
|
||||
$admin->update([
|
||||
'name' => $request->name,
|
||||
'email' => $request->email,
|
||||
'username' => $request->username,
|
||||
'phone' => $request->phone,
|
||||
'region_id' => $request->region_id ? $request->region_id : null,
|
||||
'rayon_id' => $request->rayon_id ? $request->rayon_id : null,
|
||||
]);
|
||||
|
||||
$admin->roles()->detach();
|
||||
if ($request->roles) {
|
||||
$admin->assignRole($request->roles);
|
||||
}
|
||||
|
||||
if ($request->password) {
|
||||
$admin->password = Hash::make($request->password);
|
||||
$admin->save();
|
||||
}
|
||||
|
||||
// Update the user's cabang
|
||||
if($request->cabang_id) {
|
||||
$userHasCabang = UserHasCabang::where('user_id', $admin->id)->first();
|
||||
|
||||
@@ -22,36 +22,28 @@ class DashboardController extends Controller
|
||||
public function index()
|
||||
{
|
||||
$role = auth()->user()->getRoleNames()[0];
|
||||
$closing_date = env('CLOSING_DATE');
|
||||
$startDate = date('Y-m-' . env('STARTING_DATE')); // Starting date from .env for the current month
|
||||
$closingDateNextMonth = date('Y-m-', strtotime('+1 month')) . env('CLOSING_DATE'); // Closing date for the next month
|
||||
|
||||
$forms = [
|
||||
'vehicle' => FormVehicleRunningCost::whereMonth('tanggal', date('m'))
|
||||
->whereYear('tanggal', date('Y'))
|
||||
->where('tanggal', '<=', date('Y-m-'.$closing_date))
|
||||
->whereRaw('DAY(CURDATE()) <= '.$closing_date)
|
||||
->whereBetween('tanggal', [$startDate, $closingDateNextMonth])
|
||||
->orderBy('tanggal', 'desc')
|
||||
->get(),
|
||||
'upcountry' => FormUpCountry::whereMonth('tanggal', date('m'))
|
||||
->whereYear('tanggal', date('Y'))
|
||||
->where('tanggal', '<=', date('Y-m-'.$closing_date))
|
||||
->whereRaw('DAY(CURDATE()) <= '.$closing_date)
|
||||
->whereBetween('tanggal', [$startDate, $closingDateNextMonth])
|
||||
->orderBy('tanggal', 'desc')
|
||||
->get(),
|
||||
'entertainment' => FormEntertaimentPresentation::whereMonth('tanggal', date('m'))
|
||||
->whereYear('tanggal', date('Y'))
|
||||
->where('tanggal', '<=', date('Y-m-'.$closing_date))
|
||||
->whereRaw('DAY(CURDATE()) <= '.$closing_date)
|
||||
->whereBetween('tanggal', [$startDate, $closingDateNextMonth])
|
||||
->orderBy('tanggal', 'desc')
|
||||
->get(),
|
||||
'meeting' => FormMeetingSeminar::whereMonth('created_at', date('m'))
|
||||
->whereYear('created_at', date('Y'))
|
||||
->where('created_at', '<=', date('Y-m-'.$closing_date))
|
||||
->whereRaw('DAY(CURDATE()) <= '.$closing_date)
|
||||
->whereBetween('created_at', [$startDate, $closingDateNextMonth])
|
||||
->orderBy('created_at', 'desc')
|
||||
->get(),
|
||||
'others' => FormOthers::whereMonth('tanggal', date('m'))
|
||||
->whereYear('tanggal', date('Y'))
|
||||
->where('tanggal', '<=', date('Y-m-'.$closing_date))
|
||||
->whereRaw('DAY(CURDATE()) <= '.$closing_date)
|
||||
->whereBetween('tanggal', [$startDate, $closingDateNextMonth])
|
||||
->orderBy('tanggal', 'desc')
|
||||
->get(),
|
||||
];
|
||||
@@ -117,14 +109,24 @@ class DashboardController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
public function mark_read()
|
||||
public function mark_read($id)
|
||||
{
|
||||
$this->checkAuthorization(auth()->user(), ['notification.delete']);
|
||||
$receiver_id = auth()->user()->id;
|
||||
|
||||
Notifications::where('receiver_id', $receiver_id)->where('id', $id)->update(['is_read' => 1]);
|
||||
|
||||
return response()->json(['message' => 'Notification marked as read.']);
|
||||
}
|
||||
|
||||
public function mark_all_read()
|
||||
{
|
||||
$this->checkAuthorization(auth()->user(), ['notification.delete']);
|
||||
$receiver_id = auth()->user()->id;
|
||||
|
||||
Notifications::where('receiver_id', $receiver_id)->update(['is_read' => 1]);
|
||||
|
||||
session()->flash('success', 'Notifications marked as read.');
|
||||
session()->flash('success', 'All notifications marked as read.');
|
||||
return redirect()->back();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ use App\Models\Admin;
|
||||
use App\Rules\FileType;
|
||||
use App\Helpers\BudgetHelper;
|
||||
use App\Helpers\NotificationHelper;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class FormEntertainmentPresentationController extends Controller
|
||||
{
|
||||
@@ -220,15 +221,22 @@ class FormEntertainmentPresentationController extends Controller
|
||||
WhatsappHelper::newExpense($phoneNumbers, $expense_number, $url, $tanggal, $total, $name);
|
||||
|
||||
// Send bulk email
|
||||
Mail::to($recipients)->send(new ExpenseCreated(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
foreach ($recipients as $recipient) {
|
||||
try {
|
||||
Mail::to($recipient)->send(new ExpenseCreated(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
} catch (\Exception $e) {
|
||||
Log::error("Failed to send email to {$recipient}: " . $e->getMessage());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
NotificationHelper::newExpense($form->user_id, $expense_number, $receiver_ids);
|
||||
NotificationHelper::newExpense('entertainment-presentation', $form->id, $form->user_id, $expense_number, $receiver_ids);
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Insert', 'Insert New Expense at Form Entertainment Presentation (' . $expense_number . ')');
|
||||
session()->flash('success', 'Form has been created.');
|
||||
@@ -321,6 +329,7 @@ class FormEntertainmentPresentationController extends Controller
|
||||
'approved_at' => now(),
|
||||
'approved_by' => auth()->user()->id,
|
||||
'status' => 'Approved 1',
|
||||
'approved_total' => $form->total,
|
||||
]);
|
||||
|
||||
$name = $form->user->name;
|
||||
@@ -364,15 +373,22 @@ class FormEntertainmentPresentationController extends Controller
|
||||
WhatsappHelper::approveExpense($phoneNumbers, $expense_number, $url, $tanggal, $total, $name);
|
||||
|
||||
// // Send bulk email
|
||||
Mail::to($recipients)->send(new ExpenseApproved(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
foreach ($recipients as $recipient) {
|
||||
try {
|
||||
Mail::to($recipient)->send(new ExpenseApproved(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
} catch (\Exception $e) {
|
||||
Log::error("Failed to send email to {$recipient}: " . $e->getMessage());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
NotificationHelper::approveExpense($form->user_id, $expense_number, $receiver_ids);
|
||||
NotificationHelper::approveExpense('entertainment-presentation', $form->id, $form->user_id, $expense_number, $receiver_ids);
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Approve', 'Approve Expense at Form Entertainment (' . $form->expense_number . ')');
|
||||
session()->flash('success', 'Form has been approved.');
|
||||
@@ -431,22 +447,29 @@ class FormEntertainmentPresentationController extends Controller
|
||||
WhatsappHelper::approve2Expense($phoneNumbers, $expense_number, $url, $tanggal, $total, $name);
|
||||
|
||||
// // Send bulk email
|
||||
Mail::to($recipients)->send(new ExpenseApproved2(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
foreach ($recipients as $recipient) {
|
||||
try {
|
||||
Mail::to($recipient)->send(new ExpenseApproved2(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
} catch (\Exception $e) {
|
||||
Log::error("Failed to send email to {$recipient}: " . $e->getMessage());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
NotificationHelper::approve2Expense($form->user_id, $expense_number, $receiver_ids);
|
||||
NotificationHelper::approve2Expense('entertainment-presentation', $form->id, $form->user_id, $expense_number, $receiver_ids);
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Approve', 'Approve Expense at Form Entertainment (' . $form->expense_number . ')');
|
||||
session()->flash('success', 'Form has been approved.');
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
public function finalApprove(Request $request, $id)
|
||||
public function finalApprove($id)
|
||||
{
|
||||
$this->checkAuthorization(auth()->user(), ['final_approval.approve']);
|
||||
|
||||
@@ -458,8 +481,8 @@ class FormEntertainmentPresentationController extends Controller
|
||||
|
||||
// Check if the total nominal exceeds the available budget
|
||||
$cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()->cabang_id;
|
||||
if($form->total > BudgetHelper::getAvailableBudget($cabang_id)) {
|
||||
session()->flash('error', 'The total nominal exceeds the available budget.');
|
||||
if($form->approved_total > BudgetHelper::getAvailableBudget($cabang_id)) {
|
||||
session()->flash('error', 'Budget cabang untuk periode ini tidak mencukupi, silahkan ajukan pada periode expense berikutnya');
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
@@ -467,7 +490,6 @@ class FormEntertainmentPresentationController extends Controller
|
||||
'final_approved_at' => now(),
|
||||
'final_approved_by' => auth()->user()->id,
|
||||
'status' => 'Closed',
|
||||
'approved_total' => $form->total,
|
||||
]);
|
||||
|
||||
$name = $form->user->name;
|
||||
@@ -506,13 +528,20 @@ class FormEntertainmentPresentationController extends Controller
|
||||
WhatsappHelper::finalApprove($phoneNumbers, $expense_number, $url, $tanggal, $total, $name);
|
||||
|
||||
// Send bulk email
|
||||
Mail::to($recipients)->send(new FinalApprove(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
foreach ($recipients as $recipient) {
|
||||
try {
|
||||
Mail::to($recipient)->send(new FinalApprove(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
} catch (\Exception $e) {
|
||||
Log::error("Failed to send email to {$recipient}: " . $e->getMessage());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Final Approve', 'Final Approve Expense at Form Entertainment (' . $form->expense_number . ')');
|
||||
session()->flash('success', 'Form has been final approved.');
|
||||
@@ -557,13 +586,20 @@ class FormEntertainmentPresentationController extends Controller
|
||||
WhatsappHelper::rejectExpense($phoneNumbers, $expense_number, $url, $tanggal, $total, $name);
|
||||
|
||||
// Send bulk email
|
||||
Mail::to($recipients)->send(new ExpenseRejected(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
foreach ($recipients as $recipient) {
|
||||
try {
|
||||
Mail::to($recipient)->send(new ExpenseRejected(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
} catch (\Exception $e) {
|
||||
Log::error("Failed to send email to {$recipient}: " . $e->getMessage());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Reject', 'Reject Expense at Form Entertainment (' . $form->expense_number . ')');
|
||||
session()->flash('success', 'Form has been rejected.');
|
||||
|
||||
@@ -26,6 +26,7 @@ use App\Rules\FileType;
|
||||
use App\Models\Admin;
|
||||
use App\Helpers\BudgetHelper;
|
||||
use App\Helpers\NotificationHelper;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class FormMeetingSeminarController extends Controller
|
||||
{
|
||||
@@ -254,15 +255,22 @@ class FormMeetingSeminarController extends Controller
|
||||
WhatsappHelper::newExpense($phoneNumbers, $expense_number, $url, $tanggal, $total, $name);
|
||||
|
||||
// Send bulk email
|
||||
Mail::to($recipients)->send(new ExpenseCreated(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
foreach ($recipients as $recipient) {
|
||||
try {
|
||||
Mail::to($recipient)->send(new ExpenseCreated(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
} catch (\Exception $e) {
|
||||
Log::error("Failed to send email to {$recipient}: " . $e->getMessage());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
NotificationHelper::newExpense($form->user_id, $expense_number, $receiver_ids);
|
||||
NotificationHelper::newExpense('meeting-seminar', $form->id, $form->user_id, $expense_number, $receiver_ids);
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Insert', 'Insert New Expense at Form Meeting Seminar (' . $expense_number . ')');
|
||||
session()->flash('success', 'Form has been created.');
|
||||
@@ -380,15 +388,26 @@ class FormMeetingSeminarController extends Controller
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
public function approve($id)
|
||||
public function approve(Request $request, $id)
|
||||
{
|
||||
$this->checkAuthorization(auth()->user(), ['approval.approve']);
|
||||
|
||||
$form = FormMeetingSeminar::findOrfail($id);
|
||||
|
||||
$approved_data = [
|
||||
'allowance' => $request->allowance ? $form->allowance : 0,
|
||||
'transport_ankot' => $request->transport_ankot ? $form->transport_ankot : 0,
|
||||
'hotel' => $request->hotel ? $form->hotel : 0,
|
||||
];
|
||||
|
||||
$form->update([
|
||||
'approved_at' => now(),
|
||||
'approved_by' => auth()->user()->id,
|
||||
'status' => 'Approved 1',
|
||||
'approved_allowance' => $approved_data['allowance'],
|
||||
'approved_transport_ankot' => $approved_data['transport_ankot'],
|
||||
'approved_hotel' => $approved_data['hotel'],
|
||||
'approved_total' => array_sum($approved_data),
|
||||
]);
|
||||
|
||||
$name = $form->user->name;
|
||||
@@ -432,15 +451,22 @@ class FormMeetingSeminarController extends Controller
|
||||
WhatsappHelper::approveExpense($phoneNumbers, $expense_number, $url, $tanggal, $total, $name);
|
||||
|
||||
// // Send bulk email
|
||||
Mail::to($recipients)->send(new ExpenseApproved(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
foreach ($recipients as $recipient) {
|
||||
try {
|
||||
Mail::to($recipient)->send(new ExpenseApproved(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
} catch (\Exception $e) {
|
||||
Log::error("Failed to send email to {$recipient}: " . $e->getMessage());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
NotificationHelper::approveExpense($form->user_id, $expense_number, $receiver_ids);
|
||||
NotificationHelper::approveExpense('meeting-seminar', $form->id, $form->user_id, $expense_number, $receiver_ids);
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Approve', 'Approve Expense at Form Meeting Seminar (' . $form->expense_number . ')');
|
||||
session()->flash('success', 'Form has been approved.');
|
||||
@@ -499,22 +525,29 @@ class FormMeetingSeminarController extends Controller
|
||||
WhatsappHelper::approve2Expense($phoneNumbers, $expense_number, $url, $tanggal, $total, $name);
|
||||
|
||||
// // Send bulk email
|
||||
Mail::to($recipients)->send(new ExpenseApproved2(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
foreach ($recipients as $recipient) {
|
||||
try {
|
||||
Mail::to($recipient)->send(new ExpenseApproved2(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
} catch (\Exception $e) {
|
||||
Log::error("Failed to send email to {$recipient}: " . $e->getMessage());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
NotificationHelper::approve2Expense($form->user_id, $expense_number, $receiver_ids);
|
||||
NotificationHelper::approve2Expense('meeting-seminar', $form->id, $form->user_id, $expense_number, $receiver_ids);
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Approve', 'Approve Expense at Form Meeting Seminar (' . $form->expense_number . ')');
|
||||
session()->flash('success', 'Form has been approved.');
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
public function finalApprove(Request $request, $id)
|
||||
public function finalApprove($id)
|
||||
{
|
||||
$this->checkAuthorization(auth()->user(), ['final_approval.approve']);
|
||||
|
||||
@@ -524,16 +557,10 @@ class FormMeetingSeminarController extends Controller
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
$approved_data = [
|
||||
'allowance' => $request->allowance ? $form->allowance : 0,
|
||||
'transport_ankot' => $request->transport_ankot ? $form->transport_ankot : 0,
|
||||
'hotel' => $request->hotel ? $form->hotel : 0,
|
||||
];
|
||||
|
||||
// Check if the total nominal exceeds the available budget
|
||||
$cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()->cabang_id;
|
||||
if(array_sum($approved_data) > BudgetHelper::getAvailableBudget($cabang_id)) {
|
||||
session()->flash('error', 'The total nominal exceeds the available budget.');
|
||||
if($form->approved_total > BudgetHelper::getAvailableBudget($cabang_id)) {
|
||||
session()->flash('error', 'Budget cabang untuk periode ini tidak mencukupi, silahkan ajukan pada periode expense berikutnya');
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
@@ -541,10 +568,6 @@ class FormMeetingSeminarController extends Controller
|
||||
'final_approved_at' => now(),
|
||||
'final_approved_by' => auth()->user()->id,
|
||||
'status' => 'Closed',
|
||||
'approved_allowance' => $approved_data['allowance'],
|
||||
'approved_transport_ankot' => $approved_data['transport_ankot'],
|
||||
'approved_hotel' => $approved_data['hotel'],
|
||||
'approved_total' => array_sum($approved_data),
|
||||
]);
|
||||
|
||||
$name = $form->user->name;
|
||||
@@ -583,13 +606,20 @@ class FormMeetingSeminarController extends Controller
|
||||
WhatsappHelper::finalApprove($phoneNumbers, $expense_number, $url, $tanggal, $total, $name);
|
||||
|
||||
// Send bulk email
|
||||
Mail::to($recipients)->send(new FinalApprove(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
foreach ($recipients as $recipient) {
|
||||
try {
|
||||
Mail::to($recipient)->send(new FinalApprove(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
} catch (\Exception $e) {
|
||||
Log::error("Failed to send email to {$recipient}: " . $e->getMessage());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Final Approve', 'Final Approve Expense at Form Meeting Seminar (' . $form->expense_number . ')');
|
||||
session()->flash('success', 'Form has been final approved.');
|
||||
@@ -634,13 +664,20 @@ class FormMeetingSeminarController extends Controller
|
||||
WhatsappHelper::rejectExpense($phoneNumbers, $expense_number, $url, $tanggal, $total, $name);
|
||||
|
||||
// Send bulk email
|
||||
Mail::to($recipients)->send(new ExpenseRejected(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
foreach ($recipients as $recipient) {
|
||||
try {
|
||||
Mail::to($recipient)->send(new ExpenseRejected(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
} catch (\Exception $e) {
|
||||
Log::error("Failed to send email to {$recipient}: " . $e->getMessage());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Reject', 'Reject Expense at Form Meeting Seminar (' . $form->expense_number . ')');
|
||||
session()->flash('success', 'Form has been rejected.');
|
||||
|
||||
@@ -22,6 +22,7 @@ use App\Rules\FileType;
|
||||
use App\Models\Admin;
|
||||
use App\Helpers\BudgetHelper;
|
||||
use App\Helpers\NotificationHelper;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class FormOtherController extends Controller
|
||||
{
|
||||
@@ -214,16 +215,23 @@ class FormOtherController extends Controller
|
||||
WhatsappHelper::newExpense($phoneNumbers, $expense_number, $url, $tanggal, $total, $name);
|
||||
|
||||
// Send bulk email
|
||||
Mail::to($recipients)->send(new ExpenseCreated(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
foreach ($recipients as $recipient) {
|
||||
try {
|
||||
Mail::to($recipient)->send(new ExpenseCreated(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
} catch (\Exception $e) {
|
||||
Log::error("Failed to send email to {$recipient}: " . $e->getMessage());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// Send notification to the user
|
||||
NotificationHelper::newExpense($form->user_id, $expense_number, $receiver_ids);
|
||||
NotificationHelper::newExpense('other', $form->id, $form->user_id, $expense_number, $receiver_ids);
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Insert', 'Insert New Expense at Form Other (' . $expense_number . ')');
|
||||
session()->flash('success', 'Form has been created.');
|
||||
@@ -311,6 +319,7 @@ class FormOtherController extends Controller
|
||||
'approved_at' => now(),
|
||||
'approved_by' => auth()->user()->id,
|
||||
'status' => 'Approved 1',
|
||||
'approved_total' => $form->total,
|
||||
]);
|
||||
|
||||
$name = $form->user->name;
|
||||
@@ -354,15 +363,22 @@ class FormOtherController extends Controller
|
||||
WhatsappHelper::approveExpense($phoneNumbers, $expense_number, $url, $tanggal, $total, $name);
|
||||
|
||||
// // Send bulk email
|
||||
Mail::to($recipients)->send(new ExpenseApproved(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
foreach ($recipients as $recipient) {
|
||||
try {
|
||||
Mail::to($recipient)->send(new ExpenseApproved(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
} catch (\Exception $e) {
|
||||
Log::error("Failed to send email to {$recipient}: " . $e->getMessage());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
NotificationHelper::approveExpense($form->user_id, $expense_number, $receiver_ids);
|
||||
NotificationHelper::approveExpense('other', $form->id, $form->user_id, $expense_number, $receiver_ids);
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Approve', 'Approve Expense at Form Other (' . $form->expense_number . ')');
|
||||
session()->flash('success', 'Form has been approved.');
|
||||
@@ -421,22 +437,29 @@ class FormOtherController extends Controller
|
||||
WhatsappHelper::approve2Expense($phoneNumbers, $expense_number, $url, $tanggal, $total, $name);
|
||||
|
||||
// // Send bulk email
|
||||
Mail::to($recipients)->send(new ExpenseApproved2(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
foreach ($recipients as $recipient) {
|
||||
try {
|
||||
Mail::to($recipient)->send(new ExpenseApproved2(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
} catch (\Exception $e) {
|
||||
Log::error("Failed to send email to {$recipient}: " . $e->getMessage());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
NotificationHelper::approve2Expense($form->user_id, $expense_number, $receiver_ids);
|
||||
NotificationHelper::approve2Expense('other', $form->id, $form->user_id, $expense_number, $receiver_ids);
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Approve', 'Approve Expense at Form Other (' . $form->expense_number . ')');
|
||||
session()->flash('success', 'Form has been approved.');
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
public function finalApprove(Request $request, $id)
|
||||
public function finalApprove($id)
|
||||
{
|
||||
$this->checkAuthorization(auth()->user(), ['final_approval.approve']);
|
||||
|
||||
@@ -448,8 +471,8 @@ class FormOtherController extends Controller
|
||||
|
||||
// Check if the total nominal exceeds the available budget
|
||||
$cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()->cabang_id;
|
||||
if($form->total > BudgetHelper::getAvailableBudget($cabang_id)) {
|
||||
session()->flash('error', 'The total nominal exceeds the available budget.');
|
||||
if($form->approved_total > BudgetHelper::getAvailableBudget($cabang_id)) {
|
||||
session()->flash('error', 'Budget cabang untuk periode ini tidak mencukupi, silahkan ajukan pada periode expense berikutnya');
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
@@ -457,7 +480,6 @@ class FormOtherController extends Controller
|
||||
'final_approved_at' => now(),
|
||||
'final_approved_by' => auth()->user()->id,
|
||||
'status' => 'Closed',
|
||||
'approved_total' => $form->total,
|
||||
]);
|
||||
|
||||
$name = $form->user->name;
|
||||
@@ -496,13 +518,20 @@ class FormOtherController extends Controller
|
||||
WhatsappHelper::finalApprove($phoneNumbers, $expense_number, $url, $tanggal, $total, $name);
|
||||
|
||||
// Send bulk email
|
||||
Mail::to($recipients)->send(new FinalApprove(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
foreach ($recipients as $recipient) {
|
||||
try {
|
||||
Mail::to($recipient)->send(new FinalApprove(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
} catch (\Exception $e) {
|
||||
Log::error("Failed to send email to {$recipient}: " . $e->getMessage());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Final Approve', 'Final Approve Expense at Form Other (' . $form->expense_number . ')');
|
||||
session()->flash('success', 'Form has been final approved.');
|
||||
@@ -547,13 +576,20 @@ class FormOtherController extends Controller
|
||||
WhatsappHelper::rejectExpense($phoneNumbers, $expense_number, $url, $tanggal, $total, $name);
|
||||
|
||||
// Send bulk email
|
||||
Mail::to($recipients)->send(new ExpenseRejected(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
foreach ($recipients as $recipient) {
|
||||
try {
|
||||
Mail::to($recipient)->send(new ExpenseRejected(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
} catch (\Exception $e) {
|
||||
Log::error("Failed to send email to {$recipient}: " . $e->getMessage());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Reject', 'Reject Expense at Form Other (' . $form->expense_number . ')');
|
||||
session()->flash('success', 'Form has been rejected.');
|
||||
|
||||
@@ -26,6 +26,7 @@ use App\Rules\FileType;
|
||||
use App\Models\Admin;
|
||||
use App\Helpers\BudgetHelper;
|
||||
use App\Helpers\NotificationHelper;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class FormUpCountryController extends Controller
|
||||
{
|
||||
@@ -285,15 +286,22 @@ class FormUpCountryController extends Controller
|
||||
WhatsappHelper::newExpense($phoneNumbers, $expense_number, $url, $tanggal, $total, $name);
|
||||
|
||||
// Send bulk email
|
||||
Mail::to($recipients)->send(new ExpenseCreated(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
foreach ($recipients as $recipient) {
|
||||
try {
|
||||
Mail::to($recipient)->send(new ExpenseCreated(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
} catch (\Exception $e) {
|
||||
Log::error("Failed to send email to {$recipient}: " . $e->getMessage());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
NotificationHelper::newExpense($form->user_id, $expense_number, $receiver_ids);
|
||||
NotificationHelper::newExpense('up-country', $form->id, $form->user_id, $expense_number, $receiver_ids);
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Insert', 'Insert New Expense at Form Up Country (' . $expense_number . ')');
|
||||
session()->flash('success', 'Form has been created.');
|
||||
@@ -439,15 +447,29 @@ class FormUpCountryController extends Controller
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
public function approve($id)
|
||||
public function approve(Request $request, $id)
|
||||
{
|
||||
$this->checkAuthorization(auth()->user(), ['approval.approve']);
|
||||
|
||||
$form = FormUpCountry::findOrfail($id);
|
||||
|
||||
$approved_data = [
|
||||
'allowance' => $request->allowance ? $form->allowance : 0,
|
||||
'transport_dalkot' => $request->transport_dalkot ? $form->transport_dalkot : 0,
|
||||
'transport_ankot' => $request->transport_ankot ? $form->transport_ankot : 0,
|
||||
'hotel' => $request->hotel ? $form->hotel : 0,
|
||||
];
|
||||
|
||||
$form->update([
|
||||
'approved_at' => now(),
|
||||
'approved_by' => auth()->user()->id,
|
||||
'status' => 'Approved 1',
|
||||
|
||||
'approved_allowance' => $approved_data['allowance'],
|
||||
'approved_transport_dalkot' => $approved_data['transport_dalkot'],
|
||||
'approved_transport_ankot' => $approved_data['transport_ankot'],
|
||||
'approved_hotel' => $approved_data['hotel'],
|
||||
'approved_total' => array_sum($approved_data),
|
||||
]);
|
||||
|
||||
$name = $form->user->name;
|
||||
@@ -490,16 +512,22 @@ class FormUpCountryController extends Controller
|
||||
$url = route('forms.up-country.view', $form->id);
|
||||
WhatsappHelper::approveExpense($phoneNumbers, $expense_number, $url, $tanggal, $total, $name);
|
||||
|
||||
// // Send bulk email
|
||||
Mail::to($recipients)->send(new ExpenseApproved(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
foreach ($recipients as $recipient) {
|
||||
try {
|
||||
Mail::to($recipient)->send(new ExpenseApproved(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
} catch (\Exception $e) {
|
||||
Log::error("Failed to send email to {$recipient}: " . $e->getMessage());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
NotificationHelper::approveExpense($form->user_id, $expense_number, $receiver_ids);
|
||||
NotificationHelper::approveExpense('up-country', $form->id, $form->user_id, $expense_number, $receiver_ids);
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Approve', 'Approve Expense at Form Up Country (' . $form->expense_number . ')');
|
||||
session()->flash('success', 'Form has been approved.');
|
||||
@@ -557,22 +585,29 @@ class FormUpCountryController extends Controller
|
||||
WhatsappHelper::approve2Expense($phoneNumbers, $expense_number, $url, $tanggal, $total, $name);
|
||||
|
||||
// // Send bulk email
|
||||
Mail::to($recipients)->send(new ExpenseApproved2(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
foreach ($recipients as $recipient) {
|
||||
try {
|
||||
Mail::to($recipient)->send(new ExpenseApproved2(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
} catch (\Exception $e) {
|
||||
Log::error("Failed to send email to {$recipient}: " . $e->getMessage());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
NotificationHelper::approve2Expense($form->user_id, $expense_number, $receiver_ids);
|
||||
NotificationHelper::approve2Expense('up-country', $form->id, $form->user_id, $expense_number, $receiver_ids);
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Approve', 'Approve Expense at Form Up Country (' . $form->expense_number . ')');
|
||||
session()->flash('success', 'Form has been approved.');
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
public function finalApprove(Request $request, $id)
|
||||
public function finalApprove($id)
|
||||
{
|
||||
$this->checkAuthorization(auth()->user(), ['final_approval.approve']);
|
||||
|
||||
@@ -582,17 +617,10 @@ class FormUpCountryController extends Controller
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
$approved_data = [
|
||||
'allowance' => $request->allowance ? $form->allowance : 0,
|
||||
'transport_dalkot' => $request->transport_dalkot ? $form->transport_dalkot : 0,
|
||||
'transport_ankot' => $request->transport_ankot ? $form->transport_ankot : 0,
|
||||
'hotel' => $request->hotel ? $form->hotel : 0,
|
||||
];
|
||||
|
||||
// Check if the total nominal exceeds the available budget
|
||||
$cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()->cabang_id;
|
||||
if(array_sum($approved_data) > BudgetHelper::getAvailableBudget($cabang_id)) {
|
||||
session()->flash('error', 'The total nominal exceeds the available budget.');
|
||||
if($form->approved_total > BudgetHelper::getAvailableBudget($cabang_id)) {
|
||||
session()->flash('error', 'Budget cabang untuk periode ini tidak mencukupi, silahkan ajukan pada periode expense berikutnya');
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
@@ -600,11 +628,6 @@ class FormUpCountryController extends Controller
|
||||
'final_approved_at' => now(),
|
||||
'final_approved_by' => auth()->user()->id,
|
||||
'status' => 'Closed',
|
||||
'approved_allowance' => $approved_data['allowance'],
|
||||
'approved_transport_dalkot' => $approved_data['transport_dalkot'],
|
||||
'approved_transport_ankot' => $approved_data['transport_ankot'],
|
||||
'approved_hotel' => $approved_data['hotel'],
|
||||
'approved_total' => array_sum($approved_data),
|
||||
]);
|
||||
|
||||
$name = $form->user->name;
|
||||
@@ -643,13 +666,20 @@ class FormUpCountryController extends Controller
|
||||
WhatsappHelper::finalApprove($phoneNumbers, $expense_number, $url, $tanggal, $total, $name);
|
||||
|
||||
// Send bulk email
|
||||
Mail::to($recipients)->send(new FinalApprove(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
foreach ($recipients as $recipient) {
|
||||
try {
|
||||
Mail::to($recipient)->send(new FinalApprove(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
} catch (\Exception $e) {
|
||||
Log::error("Failed to send email to {$recipient}: " . $e->getMessage());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Final Approve', 'Final Approve Expense at Form Up Country (' . $form->expense_number . ')');
|
||||
session()->flash('success', 'Form has been final approved.');
|
||||
@@ -694,13 +724,20 @@ class FormUpCountryController extends Controller
|
||||
WhatsappHelper::rejectExpense($phoneNumbers, $expense_number, $url, $tanggal, $total, $name);
|
||||
|
||||
// Send bulk email
|
||||
Mail::to($recipients)->send(new ExpenseRejected(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
foreach ($recipients as $recipient) {
|
||||
try {
|
||||
Mail::to($recipient)->send(new ExpenseRejected(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
} catch (\Exception $e) {
|
||||
Log::error("Failed to send email to {$recipient}: " . $e->getMessage());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Reject', 'Reject Expense at Form Up Country (' . $form->expense_number . ')');
|
||||
session()->flash('success', 'Form has been rejected.');
|
||||
|
||||
@@ -26,6 +26,7 @@ use App\Rules\FileType;
|
||||
use App\Models\Admin;
|
||||
use App\Helpers\BudgetHelper;
|
||||
use App\Helpers\NotificationHelper;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class FormVehicleController extends Controller
|
||||
{
|
||||
@@ -158,7 +159,6 @@ class FormVehicleController extends Controller
|
||||
$bukti_total->getContent(),
|
||||
$filename
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
// Generate sequence number and expense number
|
||||
@@ -222,15 +222,22 @@ class FormVehicleController extends Controller
|
||||
WhatsappHelper::newExpense($phoneNumbers, $expense_number, $url, $tanggal, $total, $name);
|
||||
|
||||
// Send bulk email
|
||||
Mail::to($recipients)->send(new ExpenseCreated(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
foreach ($recipients as $recipient) {
|
||||
try {
|
||||
Mail::to($recipient)->send(new ExpenseCreated(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
} catch (\Exception $e) {
|
||||
Log::error("Failed to send email to {$recipient}: " . $e->getMessage());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
NotificationHelper::newExpense($form->user_id, $expense_number, $receiver_ids);
|
||||
NotificationHelper::newExpense('vehicle-running-cost', $form->id, $form->user_id, $expense_number, $receiver_ids);
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Insert', 'Insert New Expense at Form Vehicle Running Cost (' . $expense_number . ')');
|
||||
session()->flash('success', 'Form has been created.');
|
||||
@@ -324,6 +331,7 @@ class FormVehicleController extends Controller
|
||||
'approved_at' => now(),
|
||||
'approved_by' => auth()->user()->id,
|
||||
'status' => 'Approved 1',
|
||||
'approved_total' => $form->total,
|
||||
]);
|
||||
|
||||
$name = $form->user->name;
|
||||
@@ -367,15 +375,22 @@ class FormVehicleController extends Controller
|
||||
WhatsappHelper::approveExpense($phoneNumbers, $expense_number, $url, $tanggal, $total, $name);
|
||||
|
||||
// // Send bulk email
|
||||
Mail::to($recipients)->send(new ExpenseApproved(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
foreach ($recipients as $recipient) {
|
||||
try {
|
||||
Mail::to($recipient)->send(new ExpenseApproved(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
} catch (\Exception $e) {
|
||||
Log::error("Failed to send email to {$recipient}: " . $e->getMessage());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
NotificationHelper::approveExpense($form->user_id, $expense_number, $receiver_ids);
|
||||
NotificationHelper::approveExpense('vehicle-running-cost', $form->id, $form->user_id, $expense_number, $receiver_ids);
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Approve', 'Approve Expense at Form Vehicle Running Cost (' . $form->expense_number . ')');
|
||||
session()->flash('success', 'Form has been approved.');
|
||||
@@ -434,22 +449,29 @@ class FormVehicleController extends Controller
|
||||
WhatsappHelper::approve2Expense($phoneNumbers, $expense_number, $url, $tanggal, $total, $name);
|
||||
|
||||
// // Send bulk email
|
||||
Mail::to($recipients)->send(new ExpenseApproved2(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
foreach ($recipients as $recipient) {
|
||||
try {
|
||||
Mail::to($recipient)->send(new ExpenseApproved2(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
} catch (\Exception $e) {
|
||||
Log::error("Failed to send email to {$recipient}: " . $e->getMessage());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
NotificationHelper::approve2Expense($form->user_id, $expense_number, $receiver_ids);
|
||||
NotificationHelper::approve2Expense('vehicle-running-cost', $form->id, $form->user_id, $expense_number, $receiver_ids);
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Approve', 'Approve Expense at Form Vehicle Running Cost (' . $form->expense_number . ')');
|
||||
session()->flash('success', 'Form has been approved.');
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
public function finalApprove(Request $request, $id)
|
||||
public function finalApprove($id)
|
||||
{
|
||||
$this->checkAuthorization(auth()->user(), ['final_approval.approve']);
|
||||
|
||||
@@ -461,8 +483,8 @@ class FormVehicleController extends Controller
|
||||
|
||||
// Check if the total nominal exceeds the available budget
|
||||
$cabang_id = UserHasCabang::where('user_id', $form->user_id)->first()->cabang_id;
|
||||
if($form->total > BudgetHelper::getAvailableBudget($cabang_id)) {
|
||||
session()->flash('error', 'The total nominal exceeds the available budget.');
|
||||
if($form->approved_total > BudgetHelper::getAvailableBudget($cabang_id)) {
|
||||
session()->flash('error', 'Budget cabang untuk periode ini tidak mencukupi, silahkan ajukan pada periode expense berikutnya');
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
@@ -470,7 +492,6 @@ class FormVehicleController extends Controller
|
||||
'final_approved_at' => now(),
|
||||
'final_approved_by' => auth()->user()->id,
|
||||
'status' => 'Closed',
|
||||
'approved_total' => $form->total,
|
||||
]);
|
||||
|
||||
$name = $form->user->name;
|
||||
@@ -509,13 +530,20 @@ class FormVehicleController extends Controller
|
||||
WhatsappHelper::finalApprove($phoneNumbers, $expense_number, $url, $tanggal, $total, $name);
|
||||
|
||||
// Send bulk email
|
||||
Mail::to($recipients)->send(new FinalApprove(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
foreach ($recipients as $recipient) {
|
||||
try {
|
||||
Mail::to($recipient)->send(new FinalApprove(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
} catch (\Exception $e) {
|
||||
Log::error("Failed to send email to {$recipient}: " . $e->getMessage());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Final Approve', 'Final Approve Expense at Form Vehicle Running Cost (' . $form->expense_number . ')');
|
||||
session()->flash('success', 'Form has been final approved.');
|
||||
@@ -560,13 +588,20 @@ class FormVehicleController extends Controller
|
||||
WhatsappHelper::rejectExpense($phoneNumbers, $expense_number, $url, $tanggal, $total, $name);
|
||||
|
||||
// Send bulk email
|
||||
Mail::to($recipients)->send(new ExpenseRejected(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
foreach ($recipients as $recipient) {
|
||||
try {
|
||||
Mail::to($recipient)->send(new ExpenseRejected(
|
||||
$name,
|
||||
$expense_number,
|
||||
$tanggal,
|
||||
$total,
|
||||
$url
|
||||
));
|
||||
} catch (\Exception $e) {
|
||||
Log::error("Failed to send email to {$recipient}: " . $e->getMessage());
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
AuditTrailHelper::AddAuditTrail('Reject', 'Reject Expense at Form Vehicle Running Cost (' . $form->expense_number . ')');
|
||||
session()->flash('success', 'Form has been rejected.');
|
||||
|
||||
@@ -9,6 +9,7 @@ use App\Helpers\AuditTrailHelper;
|
||||
use App\Models\Admin;
|
||||
use App\Models\CostCentre;
|
||||
use App\Models\Region;
|
||||
use App\Models\Rayon;
|
||||
|
||||
class CabangController extends Controller
|
||||
{
|
||||
@@ -29,6 +30,25 @@ class CabangController extends Controller
|
||||
return response()->json($cabang);
|
||||
}
|
||||
|
||||
public function getRayonByCabang($cabangCode)
|
||||
{
|
||||
$cabang_id = Cabang::where('code', $cabangCode)->first()->id;
|
||||
$rayon = Rayon::where('cabang_id', $cabang_id)->get(['code', 'name']);
|
||||
return response()->json($rayon);
|
||||
}
|
||||
|
||||
public function getCabangByRegionId($regionId)
|
||||
{
|
||||
$cabang = Cabang::where('region_id', $regionId)->get();
|
||||
return response()->json($cabang);
|
||||
}
|
||||
|
||||
public function getRayonByCabangId($cabangId)
|
||||
{
|
||||
$rayon = Rayon::where('cabang_id', $cabangId)->get();
|
||||
return response()->json($rayon);
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$this->checkAuthorization(auth()->user(), ['cabang.create']);
|
||||
|
||||
Reference in New Issue
Block a user