From ace9ea2c9c2720726d92ea78fb6b974be21cb499 Mon Sep 17 00:00:00 2001 From: Jagad R R Date: Thu, 9 Jan 2025 13:22:56 +0700 Subject: [PATCH] add notif expense created --- app/Helpers/WhatsappHelper.php | 30 ++ ...ormEntertainmentPresentationController.php | 95 +++-- .../Forms/FormMeetingSeminarController.php | 93 +++-- .../Controllers/Forms/FormOtherController.php | 107 ++++-- .../Forms/FormUpCountryController.php | 107 ++++-- .../Forms/FormVehicleController.php | 107 ++++-- app/Mail/ExpenseApproved.php | 2 + app/Mail/ExpenseCreated.php | 63 +++ app/Mail/ExpenseRejected.php | 2 + app/Mail/FinalApprove.php | 2 + .../backend/pages/forms/other/index.blade.php | 2 + .../pages/report/entertainment.blade.php | 2 +- .../backend/pages/report/meeting.blade.php | 2 +- .../backend/pages/report/others.blade.php | 2 +- .../backend/pages/report/upcountry.blade.php | 2 +- .../backend/pages/report/vehicle.blade.php | 2 +- resources/views/mail/approved.blade.php | 2 +- resources/views/mail/closed.blade.php | 2 +- resources/views/mail/created.blade.php | 362 ++++++++++++++++++ resources/views/mail/rejected.blade.php | 2 +- 20 files changed, 822 insertions(+), 166 deletions(-) create mode 100644 app/Mail/ExpenseCreated.php create mode 100644 resources/views/mail/created.blade.php diff --git a/app/Helpers/WhatsappHelper.php b/app/Helpers/WhatsappHelper.php index 0847f35..54239fa 100644 --- a/app/Helpers/WhatsappHelper.php +++ b/app/Helpers/WhatsappHelper.php @@ -98,4 +98,34 @@ class WhatsappHelper return $response->getBody()->getContents(); } + + public static function newExpense($phones, $expense_number, $url = null) + { + $client = new Client(); + + if ($url && !preg_match('/^https?:\/\//', $url)) { + $url = 'https://' . $url; + } + + $data = []; + foreach ($phones as $phone) { + $data[] = [ + 'phone' => $phone, + 'message' => 'Pengajuan pengeluaran baru dengan nomor *' . $expense_number . '* telah dibuat. Silahkan buka link berikut untuk melihat detailnya: ' . $url, + 'source' => 'web' + ]; + } + + $response = $client->post(env('WABLAS_HOST') . '/api/v2/send-message', [ + 'headers' => [ + 'Authorization' => env('WABLAS_TOKEN'), + 'Content-Type' => 'application/json' + ], + 'json' => [ + 'data' => $data + ] + ]); + + return $response->getBody()->getContents(); + } } diff --git a/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php b/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php index 3125c77..eed607d 100644 --- a/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php +++ b/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php @@ -18,8 +18,10 @@ use Illuminate\Support\Facades\Mail; use App\Mail\ExpenseApproved; use App\Mail\ExpenseRejected; use App\Mail\FinalApprove; +use App\Mail\ExpenseCreated; use App\Helpers\WhatsappHelper; use App\Helpers\AuditTrailHelper; +use App\Models\Admin; use App\Rules\FileType; class FormEntertainmentPresentationController extends Controller @@ -127,7 +129,6 @@ class FormEntertainmentPresentationController extends Controller $bukti_total->getContent(), $filename ); - } // Generate sequence number and expense number @@ -136,7 +137,7 @@ class FormEntertainmentPresentationController extends Controller $expense_number = $region->code . '-' . $cabang->code . '-ETY-' . date('ym') . $formatted_sequence_number; // Save the form data - FormEntertaimentPresentation::create([ + $form = FormEntertaimentPresentation::create([ 'expense_number' => $expense_number, 'user_id' => auth()->user()->id, 'tanggal' => $request->tanggal, @@ -151,6 +152,40 @@ class FormEntertainmentPresentationController extends Controller 'status' => 'On Progress', ]); + // Send notification to MIS and Admin Region + $roles = ['Marketing Information System', 'Admin Region']; + $recipients = []; + $phoneNumbers = []; + + $name = auth()->user()->name; + $tanggal = $form->tanggal; + $total = $form->total; + + // Collect all recipients (emails and phone numbers) for the specified roles + foreach ($roles as $role) { + $users = Admin::getUserByRoleName($role); + foreach ($users as $user) { + $recipients[] = $user->email; + $phoneNumbers[] = $user->phone; + } + } + + // Remove duplicate email addresses, if any + $recipients = array_unique($recipients); + + // Generate URL and send WhatsApp notification + $url = route('forms.entertainment.view', $form->id); + WhatsappHelper::newExpense($phoneNumbers, $expense_number, $url); + + // Send bulk email + Mail::to($recipients)->send(new ExpenseCreated( + $name, + $expense_number, + $tanggal, + $total, + $url + )); + AuditTrailHelper::AddAuditTrail('Insert', 'Insert New Expense at Form Entertainment Presentation (' . $expense_number . ')'); session()->flash('success', 'Form has been created.'); return redirect()->back(); @@ -212,7 +247,6 @@ class FormEntertainmentPresentationController extends Controller $bukti_total->getContent(), $filename ); - } // Save the form data @@ -253,7 +287,7 @@ class FormEntertainmentPresentationController extends Controller $name = $form->user->name; $expense_number = $form->expense_number; $tanggal = $form->tanggal; - $total = $form->total; + $total = $form->approved_total; // Collect all recipients $recipients = [$form->user->email, auth()->user()->email]; @@ -273,18 +307,19 @@ class FormEntertainmentPresentationController extends Controller $recipients = array_unique($recipients); $phoneNumbers = array_unique($phoneNumbers); - // Send bulk email - // Mail::to($recipients)->send(new ExpenseApproved( - // $name, - // $expense_number, - // $tanggal, - // $total - // )); - // Send bulk whatsapp $url = route('forms.entertainment.view', $form->id); WhatsappHelper::approveExpense($phoneNumbers, $expense_number, $url); + // Send bulk email + Mail::to($recipients)->send(new ExpenseApproved( + $name, + $expense_number, + $tanggal, + $total, + $url + )); + AuditTrailHelper::AddAuditTrail('Approve', 'Approved Expense at Form Entertainment Presentation (' . $expense_number . ')'); session()->flash('success', 'Form has been approved.'); return redirect()->back(); @@ -310,7 +345,7 @@ class FormEntertainmentPresentationController extends Controller $name = $form->user->name; $expense_number = $form->expense_number; $tanggal = $form->tanggal; - $total = $form->total; + $total = $form->approved_total; // Collect all recipients $recipients = [$form->user->email, auth()->user()->email]; @@ -330,18 +365,19 @@ class FormEntertainmentPresentationController extends Controller $recipients = array_unique($recipients); $phoneNumbers = array_unique($phoneNumbers); - // Send bulk email - // Mail::to($recipients)->send(new FinalApprove( - // $name, - // $expense_number, - // $tanggal, - // $total - // )); - // send whatsapp message $url = route('forms.entertainment.view', $form->id); WhatsappHelper::approveExpense($phoneNumbers, $expense_number, $url); + // Send bulk email + Mail::to($recipients)->send(new FinalApprove( + $name, + $expense_number, + $tanggal, + $total, + $url + )); + AuditTrailHelper::AddAuditTrail('Final Approve', 'Final Approved Expense at Form Entertainment Presentation (' . $expense_number . ')'); session()->flash('success', 'Form has been final approved.'); return redirect()->back(); @@ -396,18 +432,19 @@ class FormEntertainmentPresentationController extends Controller $recipients = array_unique($recipients); $phoneNumbers = array_unique($phoneNumbers); - // Send bulk email - // Mail::to($recipients)->send(new ExpenseRejected( - // $name, - // $expense_number, - // $tanggal, - // $total - // )); - // Send bulk whatsapp $url = route('forms.entertainment.view', $form->id); WhatsappHelper::approveExpense($phoneNumbers, $expense_number, $url); + // Send bulk email + Mail::to($recipients)->send(new ExpenseRejected( + $name, + $expense_number, + $tanggal, + $total, + $url + )); + AuditTrailHelper::AddAuditTrail('Reject', 'Reject Expense at Form Entertainment Presentation (' . $expense_number . ')'); session()->flash('success', 'Form has been rejected.'); return redirect()->back(); diff --git a/app/Http/Controllers/Forms/FormMeetingSeminarController.php b/app/Http/Controllers/Forms/FormMeetingSeminarController.php index d342a46..256b310 100644 --- a/app/Http/Controllers/Forms/FormMeetingSeminarController.php +++ b/app/Http/Controllers/Forms/FormMeetingSeminarController.php @@ -17,10 +17,12 @@ use Illuminate\Support\Str; use Illuminate\Support\Facades\Mail; use App\Mail\ExpenseApproved; use App\Mail\ExpenseRejected; +use App\Mail\ExpenseCreated; use App\Mail\FinalApprove; use App\Helpers\WhatsappHelper; use App\Helpers\AuditTrailHelper; use App\Rules\FileType; +use App\Models\Admin; class FormMeetingSeminarController extends Controller { @@ -168,7 +170,7 @@ class FormMeetingSeminarController extends Controller ]; // Save the form data - FormMeetingSeminar::create([ + $form = FormMeetingSeminar::create([ 'expense_number' => $expense_number, 'user_id' => auth()->user()->id, 'allowance' => $data_nominal['allowance'], @@ -182,6 +184,40 @@ class FormMeetingSeminarController extends Controller 'status' => 'On Progress', ]); + // Send notification to MIS and Admin Region + $roles = ['Marketing Information System', 'Admin Region']; + $recipients = []; + $phoneNumbers = []; + + $name = auth()->user()->name; + $tanggal = $form->created_at; + $total = $form->total; + + // Collect all recipients (emails and phone numbers) for the specified roles + foreach ($roles as $role) { + $users = Admin::getUserByRoleName($role); + foreach ($users as $user) { + $recipients[] = $user->email; + $phoneNumbers[] = $user->phone; + } + } + + // Remove duplicate email addresses, if any + $recipients = array_unique($recipients); + + // Generate URL and send WhatsApp notification + $url = route('forms.meeting.view', $form->id); + WhatsappHelper::newExpense($phoneNumbers, $expense_number, $url); + + // Send bulk email + Mail::to($recipients)->send(new ExpenseCreated( + $name, + $expense_number, + $tanggal, + $total, + $url + )); + AuditTrailHelper::AddAuditTrail('Insert', 'Insert New Expense at Form Meeting Seminar (' . $expense_number . ')'); session()->flash('success', 'Form has been created.'); return redirect()->back(); @@ -316,7 +352,7 @@ class FormMeetingSeminarController extends Controller $name = $form->user->name; $expense_number = $form->expense_number; $tanggal = $form->created_at; - $total = $form->total; + $total = $form->approved_total; // Collect all recipients $recipients = [$form->user->email, auth()->user()->email]; @@ -336,18 +372,19 @@ class FormMeetingSeminarController extends Controller $recipients = array_unique($recipients); $phoneNumbers = array_unique($phoneNumbers); - // Send bulk email - // Mail::to($recipients)->send(new ExpenseApproved( - // $name, - // $expense_number, - // $tanggal, - // $total - // )); - // Send bulk WhatsApp message $url = route('forms.meeting.view', $form->id); WhatsappHelper::approveExpense($phoneNumbers, $expense_number, $url); + // Send bulk email + Mail::to($recipients)->send(new ExpenseApproved( + $name, + $expense_number, + $tanggal, + $total, + $url + )); + AuditTrailHelper::AddAuditTrail('Approve', 'Approve Expense at Form Meeting Seminar (' . $form->expense_number . ')'); session()->flash('success', 'Form has been approved.'); return redirect()->back(); @@ -373,7 +410,7 @@ class FormMeetingSeminarController extends Controller $name = $form->user->name; $expense_number = $form->expense_number; $tanggal = $form->created_at; - $total = $form->total; + $total = $form->approved_total; // Collect all recipients $recipients = [$form->user->email, auth()->user()->email]; @@ -393,18 +430,19 @@ class FormMeetingSeminarController extends Controller $recipients = array_unique($recipients); $phoneNumbers = array_unique($phoneNumbers); - // Send bulk email - // Mail::to($recipients)->send(new FinalApprove( - // $name, - // $expense_number, - // $tanggal, - // $total - // )); - // send whatsapp message $url = route('forms.meeting.view', $form->id); WhatsappHelper::finalApprove($phoneNumbers, $expense_number, $url); + // Send bulk email + Mail::to($recipients)->send(new FinalApprove( + $name, + $expense_number, + $tanggal, + $total, + $url + )); + AuditTrailHelper::AddAuditTrail('Final Approve', 'Final Approve Expense at Form Meeting Seminar (' . $form->expense_number . ')'); session()->flash('success', 'Form has been final approved.'); return redirect()->back(); @@ -459,18 +497,19 @@ class FormMeetingSeminarController extends Controller $recipients = array_unique($recipients); $phoneNumbers = array_unique($phoneNumbers); - // Send bulk email - // Mail::to($recipients)->send(new ExpenseRejected( - // $name, - // $expense_number, - // $tanggal, - // $total - // )); - // Send bulk WhatsApp message $url = route('forms.meeting.view', $form->id); WhatsappHelper::rejectExpense($phoneNumbers, $expense_number, $url); + // Send bulk email + Mail::to($recipients)->send(new ExpenseRejected( + $name, + $expense_number, + $tanggal, + $total, + $url + )); + AuditTrailHelper::AddAuditTrail('Reject', 'Reject Expense at Form Meeting Seminar (' . $form->expense_number . ')'); session()->flash('success', 'Form has been rejected.'); return redirect()->back(); diff --git a/app/Http/Controllers/Forms/FormOtherController.php b/app/Http/Controllers/Forms/FormOtherController.php index 9c74822..2bd7a97 100644 --- a/app/Http/Controllers/Forms/FormOtherController.php +++ b/app/Http/Controllers/Forms/FormOtherController.php @@ -18,9 +18,11 @@ use Illuminate\Support\Facades\Mail; use App\Mail\ExpenseApproved; use App\Mail\ExpenseRejected; use App\Mail\FinalApprove; +use App\Mail\ExpenseCreated; use App\Helpers\WhatsappHelper; use App\Helpers\AuditTrailHelper; use App\Rules\FileType; +use App\Models\Admin; class FormOtherController extends Controller { @@ -135,7 +137,7 @@ class FormOtherController extends Controller $expense_number = $region->code . '-' . $cabang->code . '-OTH-' . date('ym') . $formatted_sequence_number; // Save the form data - FormOthers::create([ + $form = FormOthers::create([ 'expense_number' => $expense_number, 'user_id' => auth()->user()->id, 'kategori_id' => $request->kategori_id, @@ -147,7 +149,41 @@ class FormOtherController extends Controller 'status' => 'On Progress', ]); - AuditTrailHelper::AddAuditTrail('Insert', 'Insert New Expense at Form Entertainment Presentation (' . $expense_number . ')'); + // Send notification to MIS and Admin Region + $roles = ['Marketing Information System', 'Admin Region']; + $recipients = []; + $phoneNumbers = []; + + $name = auth()->user()->name; + $tanggal = $request->tanggal; + $total = $request->total; + + // Collect all recipients (emails and phone numbers) for the specified roles + foreach ($roles as $role) { + $users = Admin::getUserByRoleName($role); + foreach ($users as $user) { + $recipients[] = $user->email; + $phoneNumbers[] = $user->phone; + } + } + + // Remove duplicate email addresses, if any + $recipients = array_unique($recipients); + + // Generate URL and send WhatsApp notification + $url = route('forms.other.view', $form->id); + WhatsappHelper::newExpense($phoneNumbers, $expense_number, $url); + + // Send bulk email + Mail::to($recipients)->send(new ExpenseCreated( + $name, + $expense_number, + $tanggal, + $total, + $url + )); + + AuditTrailHelper::AddAuditTrail('Insert', 'Insert New Expense at Form Other (' . $expense_number . ')'); session()->flash('success', 'Form has been created.'); return redirect()->back(); } @@ -218,7 +254,7 @@ class FormOtherController extends Controller 'account_number' => $kategori->account_number, ]); - AuditTrailHelper::AddAuditTrail('Update', 'Update Record at Form Entertainment Presentation (' . $form->expense_number . ')'); + AuditTrailHelper::AddAuditTrail('Update', 'Update Record at Form Other (' . $form->expense_number . ')'); session()->flash('success', 'Form has been updated.'); return redirect()->back(); } @@ -244,7 +280,7 @@ class FormOtherController extends Controller $name = $form->user->name; $expense_number = $form->expense_number; $tanggal = $form->tanggal; - $total = $form->total; + $total = $form->approved_total; // Collect all recipients $recipients = [$form->user->email, auth()->user()->email]; @@ -264,19 +300,20 @@ class FormOtherController extends Controller $recipients = array_unique($recipients); $phoneNumbers = array_unique($phoneNumbers); - // Send bulk email - // Mail::to($recipients)->send(new ExpenseApproved( - // $name, - // $expense_number, - // $tanggal, - // $total - // )); - // Send bulk WhatsApp message $url = route('forms.other.view', $form->id); WhatsappHelper::approveExpense($phoneNumbers, $expense_number, $url); - AuditTrailHelper::AddAuditTrail('Approve', 'Approve Expense at Form Entertainment Presentation (' . $form->expense_number . ')'); + // Send bulk email + Mail::to($recipients)->send(new ExpenseApproved( + $name, + $expense_number, + $tanggal, + $total, + $url + )); + + AuditTrailHelper::AddAuditTrail('Approve', 'Approve Expense at Form Other (' . $form->expense_number . ')'); session()->flash('success', 'Form has been approved.'); return redirect()->back(); } @@ -301,7 +338,7 @@ class FormOtherController extends Controller $name = $form->user->name; $expense_number = $form->expense_number; $tanggal = $form->tanggal; - $total = $form->total; + $total = $form->approved_total; // Collect all recipients $recipients = [$form->user->email, auth()->user()->email]; @@ -321,19 +358,20 @@ class FormOtherController extends Controller $recipients = array_unique($recipients); $phoneNumbers = array_unique($phoneNumbers); - // Send bulk email - // Mail::to($recipients)->send(new FinalApprove( - // $name, - // $expense_number, - // $tanggal, - // $total - // )); - // send whatsapp message $url = route('forms.other.view', $form->id); WhatsappHelper::approveExpense($phoneNumbers, $expense_number, $url); - AuditTrailHelper::AddAuditTrail('Final Approve', 'Final Approve Expense at Form Entertainment Presentation (' . $form->expense_number . ')'); + // Send bulk email + Mail::to($recipients)->send(new FinalApprove( + $name, + $expense_number, + $tanggal, + $total, + $url + )); + + AuditTrailHelper::AddAuditTrail('Final Approve', 'Final Approve Expense at Form Other (' . $form->expense_number . ')'); session()->flash('success', 'Form has been final approved.'); return redirect()->back(); } @@ -349,7 +387,7 @@ class FormOtherController extends Controller 'status' => 'Approved' ]); - AuditTrailHelper::AddAuditTrail('Open', 'Open Expense at Form Entertainment Presentation (' . $form->expense_number . ')'); + AuditTrailHelper::AddAuditTrail('Open', 'Open Expense at Form Other (' . $form->expense_number . ')'); session()->flash('success', 'Form has been opened.'); return redirect()->back(); } @@ -387,19 +425,20 @@ class FormOtherController extends Controller $recipients = array_unique($recipients); $phoneNumbers = array_unique($phoneNumbers); - // Send bulk email - // Mail::to($recipients)->send(new ExpenseRejected( - // $name, - // $expense_number, - // $tanggal, - // $total - // )); - // Send bulk WhatsApp message $url = route('forms.other.view', $form->id); WhatsappHelper::approveExpense($phoneNumbers, $expense_number, $url); - AuditTrailHelper::AddAuditTrail('Reject', 'Reject Expense at Form Entertainment Presentation (' . $form->expense_number . ')'); + // Send bulk email + Mail::to($recipients)->send(new ExpenseRejected( + $name, + $expense_number, + $tanggal, + $total, + $url + )); + + AuditTrailHelper::AddAuditTrail('Reject', 'Reject Expense at Form Other (' . $form->expense_number . ')'); session()->flash('success', 'Form has been rejected.'); return redirect()->back(); } @@ -415,7 +454,7 @@ class FormOtherController extends Controller return redirect()->back(); } - AuditTrailHelper::AddAuditTrail('Delete', 'Delete Record at Form Entertainment Presentation (' . $form->expense_number . ')'); + AuditTrailHelper::AddAuditTrail('Delete', 'Delete Record at Form Other (' . $form->expense_number . ')'); $form->delete(); diff --git a/app/Http/Controllers/Forms/FormUpCountryController.php b/app/Http/Controllers/Forms/FormUpCountryController.php index 6a4ecdd..9647dd9 100644 --- a/app/Http/Controllers/Forms/FormUpCountryController.php +++ b/app/Http/Controllers/Forms/FormUpCountryController.php @@ -17,10 +17,12 @@ use Illuminate\Support\Facades\Mail; use App\Mail\ExpenseApproved; use App\Mail\ExpenseRejected; use App\Mail\FinalApprove; +use App\Mail\ExpenseCreated; use App\Helpers\WhatsappHelper; use App\Helpers\AuditTrailHelper; use App\Helpers\NextCloudHelper; use App\Rules\FileType; +use App\Models\Admin; class FormUpCountryController extends Controller { @@ -192,7 +194,7 @@ class FormUpCountryController extends Controller ]; // Save the form data - FormUpCountry::create([ + $form = FormUpCountry::create([ 'expense_number' => $expense_number, 'user_id' => auth()->user()->id, 'rayon_id' => $request->rayon_id, @@ -212,7 +214,41 @@ class FormUpCountryController extends Controller 'status' => 'On Progress', ]); - AuditTrailHelper::AddAuditTrail('Insert', 'Insert New Expense at Form Entertainment Presentation (' . $expense_number . ')'); + // Send notification to MIS and Admin Region + $roles = ['Marketing Information System', 'Admin Region']; + $recipients = []; + $phoneNumbers = []; + + $name = auth()->user()->name; + $tanggal = $form->tanggal; + $total = $form->total; + + // Collect all recipients (emails and phone numbers) for the specified roles + foreach ($roles as $role) { + $users = Admin::getUserByRoleName($role); + foreach ($users as $user) { + $recipients[] = $user->email; + $phoneNumbers[] = $user->phone; + } + } + + // Remove duplicate email addresses, if any + $recipients = array_unique($recipients); + + // Generate URL and send WhatsApp notification + $url = route('forms.up-country.view', $form->id); + WhatsappHelper::newExpense($phoneNumbers, $expense_number, $url); + + // Send bulk email + Mail::to($recipients)->send(new ExpenseCreated( + $name, + $expense_number, + $tanggal, + $total, + $url + )); + + AuditTrailHelper::AddAuditTrail('Insert', 'Insert New Expense at Form Up Country (' . $expense_number . ')'); session()->flash('success', 'Form has been created.'); return redirect()->back(); } @@ -342,7 +378,7 @@ class FormUpCountryController extends Controller 'account_number' => $kategori->account_number, ]); - AuditTrailHelper::AddAuditTrail('Update', 'Update Record at Form Entertainment Presentation (' . $form->expense_number . ')'); + AuditTrailHelper::AddAuditTrail('Update', 'Update Record at Form Up Country (' . $form->expense_number . ')'); session()->flash('success', 'Form has been updated.'); return redirect()->back(); } @@ -374,7 +410,7 @@ class FormUpCountryController extends Controller $name = $form->user->name; $expense_number = $form->expense_number; $tanggal = $form->tanggal; - $total = $form->total; + $total = $form->approved_total; // Collect all recipients $recipients = [$form->user->email, auth()->user()->email]; @@ -394,19 +430,20 @@ class FormUpCountryController extends Controller $recipients = array_unique($recipients); $phoneNumbers = array_unique($phoneNumbers); - // // Send bulk email - // Mail::to($recipients)->send(new ExpenseApproved( - // $name, - // $expense_number, - // $tanggal, - // $total - // )); - // send whatsapp message $url = route('forms.up-country.view', $form->id); WhatsappHelper::approveExpense($phoneNumbers, $expense_number, $url); - AuditTrailHelper::AddAuditTrail('Approve', 'Approve Expense at Form Entertainment Presentation (' . $form->expense_number . ')'); + // // Send bulk email + Mail::to($recipients)->send(new ExpenseApproved( + $name, + $expense_number, + $tanggal, + $total, + $url + )); + + AuditTrailHelper::AddAuditTrail('Approve', 'Approve Expense at Form Up Country (' . $form->expense_number . ')'); session()->flash('success', 'Form has been approved.'); return redirect()->back(); } @@ -444,19 +481,20 @@ class FormUpCountryController extends Controller $recipients = array_unique($recipients); $phoneNumbers = array_unique($phoneNumbers); - // Send bulk email - // Mail::to($recipients)->send(new ExpenseRejected( - // $name, - // $expense_number, - // $tanggal, - // $total - // )); - // send whatsapp message $url = route('forms.up-country.view', $form->id); WhatsappHelper::rejectExpense($phoneNumbers, $expense_number, $url); - AuditTrailHelper::AddAuditTrail('Reject', 'Reject Expense at Form Entertainment Presentation (' . $form->expense_number . ')'); + // Send bulk email + Mail::to($recipients)->send(new ExpenseRejected( + $name, + $expense_number, + $tanggal, + $total, + $url + )); + + AuditTrailHelper::AddAuditTrail('Reject', 'Reject Expense at Form Up Country (' . $form->expense_number . ')'); session()->flash('success', 'Form has been rejected.'); return redirect()->back(); } @@ -481,7 +519,7 @@ class FormUpCountryController extends Controller $name = $form->user->name; $expense_number = $form->expense_number; $tanggal = $form->tanggal; - $total = $form->total; + $total = $form->approved_total; // Collect all recipients $recipients = [$form->user->email, auth()->user()->email]; @@ -501,19 +539,20 @@ class FormUpCountryController extends Controller $recipients = array_unique($recipients); $phoneNumbers = array_unique($phoneNumbers); - // Send bulk email - // Mail::to($recipients)->send(new FinalApprove( - // $name, - // $expense_number, - // $tanggal, - // $total - // )); - // send whatsapp message $url = route('forms.up-country.view', $form->id); WhatsappHelper::finalApprove($phoneNumbers, $expense_number, $url); - AuditTrailHelper::AddAuditTrail('Final Approve', 'Final Approve Expense at Form Entertainment Presentation (' . $form->expense_number . ')'); + // Send bulk email + Mail::to($recipients)->send(new FinalApprove( + $name, + $expense_number, + $tanggal, + $total, + $url + )); + + AuditTrailHelper::AddAuditTrail('Final Approve', 'Final Approve Expense at Form Up Country (' . $form->expense_number . ')'); session()->flash('success', 'Form has been final approved.'); return redirect()->back(); } @@ -529,7 +568,7 @@ class FormUpCountryController extends Controller 'status' => 'Approved' ]); - AuditTrailHelper::AddAuditTrail('Open', 'Open Expense at Form Entertainment Presentation (' . $form->expense_number . ')'); + AuditTrailHelper::AddAuditTrail('Open', 'Open Expense at Form Up Country (' . $form->expense_number . ')'); session()->flash('success', 'Form has been opened.'); return redirect()->back(); } @@ -544,7 +583,7 @@ class FormUpCountryController extends Controller return redirect()->back(); } - AuditTrailHelper::AddAuditTrail('Delete', 'Delete Record at Form Entertainment Presentation (' . $form->expense_number . ')'); + AuditTrailHelper::AddAuditTrail('Delete', 'Delete Record at Form Up Country (' . $form->expense_number . ')'); $form->delete(); diff --git a/app/Http/Controllers/Forms/FormVehicleController.php b/app/Http/Controllers/Forms/FormVehicleController.php index 38b4bef..3cf81ba 100644 --- a/app/Http/Controllers/Forms/FormVehicleController.php +++ b/app/Http/Controllers/Forms/FormVehicleController.php @@ -18,9 +18,11 @@ use Illuminate\Support\Facades\Mail; use App\Mail\ExpenseApproved; use App\Mail\ExpenseRejected; use App\Mail\FinalApprove; +use App\Mail\ExpenseCreated; use App\Helpers\WhatsappHelper; use App\Helpers\AuditTrailHelper; use App\Rules\FileType; +use App\Models\Admin; class FormVehicleController extends Controller { @@ -136,7 +138,7 @@ class FormVehicleController extends Controller $expense_number = $region->code . '-' . $cabang->code . '-VHC-' . date('ym') . $formatted_sequence_number; // Save the form data - FormVehicleRunningCost::create([ + $form = FormVehicleRunningCost::create([ 'expense_number' => $expense_number, 'user_id' => auth()->user()->id, 'tanggal' => $request->tanggal, @@ -151,7 +153,41 @@ class FormVehicleController extends Controller 'status' => 'On Progress', ]); - AuditTrailHelper::AddAuditTrail('Insert', 'Insert New Expense at Form Entertainment Presentation (' . $expense_number . ')'); + // Send notification to MIS and Admin Region + $roles = ['Marketing Information System', 'Admin Region']; + $recipients = []; + $phoneNumbers = []; + + $name = auth()->user()->name; + $tanggal = $form->tanggal; + $total = $form->total; + + // Collect all recipients (emails and phone numbers) for the specified roles + foreach ($roles as $role) { + $users = Admin::getUserByRoleName($role); + foreach ($users as $user) { + $recipients[] = $user->email; + $phoneNumbers[] = $user->phone; + } + } + + // Remove duplicate email addresses, if any + $recipients = array_unique($recipients); + + // Generate URL and send WhatsApp notification + $url = route('forms.vehicle.view', $form->id); + WhatsappHelper::newExpense($phoneNumbers, $expense_number, $url); + + // Send bulk email + Mail::to($recipients)->send(new ExpenseCreated( + $name, + $expense_number, + $tanggal, + $total, + $url + )); + + AuditTrailHelper::AddAuditTrail('Insert', 'Insert New Expense at Form Vehicle Running Cost (' . $expense_number . ')'); session()->flash('success', 'Form has been created.'); return redirect()->back(); } @@ -228,7 +264,7 @@ class FormVehicleController extends Controller 'status' => 'On Progress', ]); - AuditTrailHelper::AddAuditTrail('Update', 'Update Record at Form Entertainment Presentation (' . $form->expense_number . ')'); + AuditTrailHelper::AddAuditTrail('Update', 'Update Record at Form Vehicle Running Cost (' . $form->expense_number . ')'); session()->flash('success', 'Form has been updated.'); return redirect()->back(); } @@ -253,7 +289,7 @@ class FormVehicleController extends Controller $name = $form->user->name; $expense_number = $form->expense_number; $tanggal = $form->tanggal; - $total = $form->total; + $total = $form->approved_total; // Collect all recipients $recipients = [$form->user->email, auth()->user()->email]; @@ -273,19 +309,20 @@ class FormVehicleController extends Controller $recipients = array_unique($recipients); $phoneNumbers = array_unique($phoneNumbers); - // Send bulk email - // Mail::to($recipients)->send(new ExpenseApproved( - // $name, - // $expense_number, - // $tanggal, - // $total - // )); - // Send bulk WhatsApp message $url = route('forms.vehicle.view', $form->id); WhatsappHelper::approveExpense($phoneNumbers, $expense_number, $url); - AuditTrailHelper::AddAuditTrail('Approve', 'Approve Expense at Form Entertainment Presentation (' . $form->expense_number . ')'); + // Send bulk email + Mail::to($recipients)->send(new ExpenseApproved( + $name, + $expense_number, + $tanggal, + $total, + $url + )); + + AuditTrailHelper::AddAuditTrail('Approve', 'Approve Expense at Form Vehicle Running Cost (' . $form->expense_number . ')'); session()->flash('success', 'Form has been approved.'); return redirect()->back(); } @@ -310,7 +347,7 @@ class FormVehicleController extends Controller $name = $form->user->name; $expense_number = $form->expense_number; $tanggal = $form->tanggal; - $total = $form->total; + $total = $form->approved_total; // Collect all recipients $recipients = [$form->user->email, auth()->user()->email]; @@ -330,19 +367,20 @@ class FormVehicleController extends Controller $recipients = array_unique($recipients); $phoneNumbers = array_unique($phoneNumbers); - // Send bulk email - // Mail::to($recipients)->send(new FinalApprove( - // $name, - // $expense_number, - // $tanggal, - // $total - // )); - // send whatsapp message $url = route('forms.vehicle.view', $form->id); WhatsappHelper::approveExpense($phoneNumbers, $expense_number, $url); - AuditTrailHelper::AddAuditTrail('Final Approve', 'Final Approve Expense at Form Entertainment Presentation (' . $form->expense_number . ')'); + // Send bulk email + Mail::to($recipients)->send(new FinalApprove( + $name, + $expense_number, + $tanggal, + $total, + $url + )); + + AuditTrailHelper::AddAuditTrail('Final Approve', 'Final Approve Expense at Form Vehicle Running Cost (' . $form->expense_number . ')'); session()->flash('success', 'Form has been final approved.'); return redirect()->back(); } @@ -358,7 +396,7 @@ class FormVehicleController extends Controller 'status' => 'Approved' ]); - AuditTrailHelper::AddAuditTrail('Open', 'Open Expense at Form Entertainment Presentation (' . $form->expense_number . ')'); + AuditTrailHelper::AddAuditTrail('Open', 'Open Expense at Form Vehicle Running Cost (' . $form->expense_number . ')'); session()->flash('success', 'Form has been opened.'); return redirect()->back(); } @@ -396,19 +434,20 @@ class FormVehicleController extends Controller $recipients = array_unique($recipients); $phoneNumbers = array_unique($phoneNumbers); - // Send bulk email - // Mail::to($recipients)->send(new ExpenseRejected( - // $name, - // $expense_number, - // $tanggal, - // $total - // )); - // Send bulk WhatsApp message $url = route('forms.vehicle.view', $form->id); WhatsappHelper::approveExpense($phoneNumbers, $expense_number, $url); + + // Send bulk email + Mail::to($recipients)->send(new ExpenseRejected( + $name, + $expense_number, + $tanggal, + $total, + $url + )); - AuditTrailHelper::AddAuditTrail('Reject', 'Reject Expense at Form Entertainment Presentation (' . $form->expense_number . ')'); + AuditTrailHelper::AddAuditTrail('Reject', 'Reject Expense at Form Vehicle Running Cost (' . $form->expense_number . ')'); session()->flash('success', 'Form has been rejected.'); return redirect()->back(); } @@ -424,7 +463,7 @@ class FormVehicleController extends Controller return redirect()->back(); } - AuditTrailHelper::AddAuditTrail('Delete', 'Delete Record at Form Entertainment Presentation (' . $form->expense_number . ')'); + AuditTrailHelper::AddAuditTrail('Delete', 'Delete Record at Form Vehicle Running Cost (' . $form->expense_number . ')'); $form->delete(); diff --git a/app/Mail/ExpenseApproved.php b/app/Mail/ExpenseApproved.php index 973075f..7247c3c 100644 --- a/app/Mail/ExpenseApproved.php +++ b/app/Mail/ExpenseApproved.php @@ -21,6 +21,7 @@ class ExpenseApproved extends Mailable protected string $expense_number, protected string $tanggal, protected int $total, + protected string $url, ) {} /** @@ -45,6 +46,7 @@ class ExpenseApproved extends Mailable 'expense_number' => $this->expense_number, 'tanggal' => $this->tanggal, 'total' => $this->total, + 'url' => $this->url, ], ); } diff --git a/app/Mail/ExpenseCreated.php b/app/Mail/ExpenseCreated.php new file mode 100644 index 0000000..609130f --- /dev/null +++ b/app/Mail/ExpenseCreated.php @@ -0,0 +1,63 @@ + $this->name, + 'expense_number' => $this->expense_number, + 'tanggal' => $this->tanggal, + 'total' => $this->total, + 'url' => $this->url, + ], + ); + } + + /** + * Get the attachments for the message. + * + * @return array + */ + public function attachments(): array + { + return []; + } +} diff --git a/app/Mail/ExpenseRejected.php b/app/Mail/ExpenseRejected.php index f1945a3..17aa3a3 100644 --- a/app/Mail/ExpenseRejected.php +++ b/app/Mail/ExpenseRejected.php @@ -21,6 +21,7 @@ class ExpenseRejected extends Mailable protected string $expense_number, protected string $tanggal, protected int $total, + protected string $url, ) {} /** @@ -45,6 +46,7 @@ class ExpenseRejected extends Mailable 'expense_number' => $this->expense_number, 'tanggal' => $this->tanggal, 'total' => $this->total, + 'url' => $this->url, ], ); } diff --git a/app/Mail/FinalApprove.php b/app/Mail/FinalApprove.php index fedb1c2..e7ec7de 100644 --- a/app/Mail/FinalApprove.php +++ b/app/Mail/FinalApprove.php @@ -21,6 +21,7 @@ class FinalApprove extends Mailable protected string $expense_number, protected string $tanggal, protected int $total, + protected string $url, ) {} /** @@ -45,6 +46,7 @@ class FinalApprove extends Mailable 'expense_number' => $this->expense_number, 'tanggal' => $this->tanggal, 'total' => $this->total, + 'url' => $this->url, ], ); } diff --git a/resources/views/backend/pages/forms/other/index.blade.php b/resources/views/backend/pages/forms/other/index.blade.php index 8a2616e..5c8c315 100644 --- a/resources/views/backend/pages/forms/other/index.blade.php +++ b/resources/views/backend/pages/forms/other/index.blade.php @@ -91,6 +91,7 @@ Jenis Keterangan Total + Total Approved Bukti Total Account Number Status @@ -118,6 +119,7 @@ {{ $item->kategori->name }} {{ $item->keterangan }} {{ number_format($item->total, 0, ',', '.') }} + {{ number_format($item->approved_total, 0, ',', '.') }} @if ($item->bukti_total) diff --git a/resources/views/backend/pages/report/entertainment.blade.php b/resources/views/backend/pages/report/entertainment.blade.php index 5285049..3a2da01 100644 --- a/resources/views/backend/pages/report/entertainment.blade.php +++ b/resources/views/backend/pages/report/entertainment.blade.php @@ -64,9 +64,9 @@ diff --git a/resources/views/backend/pages/report/meeting.blade.php b/resources/views/backend/pages/report/meeting.blade.php index 82bce68..ec37ce2 100644 --- a/resources/views/backend/pages/report/meeting.blade.php +++ b/resources/views/backend/pages/report/meeting.blade.php @@ -64,9 +64,9 @@
- {{-- submit button --}}
+ Reset
diff --git a/resources/views/backend/pages/report/others.blade.php b/resources/views/backend/pages/report/others.blade.php index 08a4647..e1589d3 100644 --- a/resources/views/backend/pages/report/others.blade.php +++ b/resources/views/backend/pages/report/others.blade.php @@ -64,9 +64,9 @@
- {{-- submit button --}}
+ Reset
diff --git a/resources/views/backend/pages/report/upcountry.blade.php b/resources/views/backend/pages/report/upcountry.blade.php index c5746a3..a878000 100644 --- a/resources/views/backend/pages/report/upcountry.blade.php +++ b/resources/views/backend/pages/report/upcountry.blade.php @@ -64,9 +64,9 @@
- {{-- submit button --}}
+ Reset
diff --git a/resources/views/backend/pages/report/vehicle.blade.php b/resources/views/backend/pages/report/vehicle.blade.php index e157a93..ccd331f 100644 --- a/resources/views/backend/pages/report/vehicle.blade.php +++ b/resources/views/backend/pages/report/vehicle.blade.php @@ -64,9 +64,9 @@
- {{-- submit button --}}
+ Reset
diff --git a/resources/views/mail/approved.blade.php b/resources/views/mail/approved.blade.php index 4ac914e..b55a2c5 100644 --- a/resources/views/mail/approved.blade.php +++ b/resources/views/mail/approved.blade.php @@ -328,7 +328,7 @@ -

Silahkan login ke aplikasi untuk melihat detail status pengajuan pengeluaran Anda.

+

Silahkan buka link berikut untuk melihat detail expense anda: {{ $url }}

Terima kasih.

diff --git a/resources/views/mail/closed.blade.php b/resources/views/mail/closed.blade.php index a8c9e97..8e51d82 100644 --- a/resources/views/mail/closed.blade.php +++ b/resources/views/mail/closed.blade.php @@ -328,7 +328,7 @@ -

Silahkan login ke aplikasi untuk melihat detail status pengajuan pengeluaran Anda.

+

Silahkan buka link berikut untuk melihat detail expense anda: {{ $url }}

Terima kasih.

diff --git a/resources/views/mail/created.blade.php b/resources/views/mail/created.blade.php new file mode 100644 index 0000000..486e9a5 --- /dev/null +++ b/resources/views/mail/created.blade.php @@ -0,0 +1,362 @@ + + + + + + Expense Created + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/views/mail/rejected.blade.php b/resources/views/mail/rejected.blade.php index 2707d37..fee4d3f 100644 --- a/resources/views/mail/rejected.blade.php +++ b/resources/views/mail/rejected.blade.php @@ -328,7 +328,7 @@ -

Silahkan login ke aplikasi untuk melihat detail status pengajuan pengeluaran Anda.

+

Silahkan buka link berikut untuk melihat detail expense anda: {{ $url }}

Terima kasih.