diff --git a/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php b/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php index 9740c46..19f1b07 100644 --- a/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php +++ b/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php @@ -65,6 +65,28 @@ class FormEntertainmentPresentationController extends Controller ]); } + public function detail($id) + { + $this->checkAuthorization(auth()->user(), ['forms.entertainment.view']); + + $form = FormEntertaimentPresentation::with('user')->findOrFail($id); + $form->bukti_total = $form->bukti_total ? NextCloudHelper::getFileUrl($form->bukti_total) : null; + + return response()->json($form); + } + + public function view($id) + { + $this->checkAuthorization(auth()->user(), ['forms.entertainment.view']); + + $form = FormEntertaimentPresentation::with('user')->findOrFail($id); + $form->bukti_total = $form->bukti_total ? NextCloudHelper::getFileUrl($form->bukti_total) : null; + + return view('backend.pages.forms.entertainment.view', [ + 'form' => $form, + ]); + } + public function create() { $this->checkAuthorization(auth()->user(), ['forms.entertainment.create']); @@ -84,9 +106,7 @@ class FormEntertainmentPresentationController extends Controller 'name' => 'required', 'alamat' => 'required', 'nik_or_npwp' => 'required', - 'bukti1' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], - 'bukti2' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], - 'bukti3' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], + 'bukti_total' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], ]); $cabang = UserHasCabang::with('cabang')->where('user_id', auth()->user()->id)->first()->cabang; @@ -96,43 +116,19 @@ class FormEntertainmentPresentationController extends Controller $filePaths = []; $folderPath = '/expense/' . $region->code . '/' . $cabang->code . '/entertainment'; - if ($request->hasFile('bukti1')) { - $bukti1 = $request->file('bukti1'); - $filename = Str::uuid() . '.' . $bukti1->extension(); + if ($request->hasFile('bukti_total')) { + $bukti_total = $request->file('bukti_total'); + $filename = Str::uuid() . '.' . $bukti_total->extension(); - $filePaths['bukti1'] = $folderPath . '/' . $filename; + $filePaths['bukti_total'] = $folderPath . '/' . $filename; NextCloudHelper::uploadFile( $folderPath, - $bukti1->getContent(), + $bukti_total->getContent(), $filename ); } - if ($request->hasFile('bukti2')) { - $bukti2 = $request->file('bukti2'); - $filename = Str::uuid() . '.' . $bukti2->extension(); - - $filePaths['bukti2'] = $folderPath . '/' . $filename; - - NextCloudHelper::uploadFile( - $folderPath, - $bukti2->getContent(), - $filename - ); - } - if ($request->hasFile('bukti3')) { - $bukti3 = $request->file('bukti3'); - $filename = Str::uuid() . '.' . $bukti3->extension(); - - $filePaths['bukti3'] = $folderPath . '/' . $filename; - - NextCloudHelper::uploadFile( - $folderPath, - $bukti3->getContent(), - $filename - ); - } // Generate sequence number and expense number $sequence_number = FormEntertaimentPresentation::withTrashed()->where('expense_number', 'like', $region->code . '-' . $cabang->code . '-ETY-' . date('ym') . '%')->count() + 1; @@ -150,9 +146,7 @@ class FormEntertainmentPresentationController extends Controller 'name' => $request->name, 'alamat' => $request->alamat, 'nik_or_npwp' => $request->nik_or_npwp, - 'bukti1' => $filePaths['bukti1'] ?? null, - 'bukti2' => $filePaths['bukti2'] ?? null, - 'bukti3' => $filePaths['bukti3'] ?? null, + 'bukti_total' => $filePaths['bukti_total'] ?? null, 'account_number' => $kategori->account_number, 'status' => 'On Progress', ]); @@ -189,9 +183,7 @@ class FormEntertainmentPresentationController extends Controller 'name' => 'required', 'alamat' => 'required', 'nik_or_npwp' => 'required', - 'bukti1' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], - 'bukti2' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], - 'bukti3' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], + 'bukti_total' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], ]); $form = FormEntertaimentPresentation::findOrfail($id); @@ -207,43 +199,19 @@ class FormEntertainmentPresentationController extends Controller $filePaths = []; $folderPath = '/expense/' . $region->code . '/' . $cabang->code . '/entertainment'; - if ($request->hasFile('bukti1')) { - $bukti1 = $request->file('bukti1'); - $filename = Str::uuid() . '.' . $bukti1->extension(); + if ($request->hasFile('bukti_total')) { + $bukti_total = $request->file('bukti_total'); + $filename = Str::uuid() . '.' . $bukti_total->extension(); - $filePaths['bukti1'] = $folderPath . '/' . $filename; + $filePaths['bukti_total'] = $folderPath . '/' . $filename; NextCloudHelper::uploadFile( $folderPath, - $bukti1->getContent(), + $bukti_total->getContent(), $filename ); } - if ($request->hasFile('bukti2')) { - $bukti2 = $request->file('bukti2'); - $filename = Str::uuid() . '.' . $bukti2->extension(); - - $filePaths['bukti2'] = $folderPath . '/' . $filename; - - NextCloudHelper::uploadFile( - $folderPath, - $bukti2->getContent(), - $filename - ); - } - if ($request->hasFile('bukti3')) { - $bukti3 = $request->file('bukti3'); - $filename = Str::uuid() . '.' . $bukti3->extension(); - - $filePaths['bukti3'] = $folderPath . '/' . $filename; - - NextCloudHelper::uploadFile( - $folderPath, - $bukti3->getContent(), - $filename - ); - } // Save the form data $form->update([ @@ -254,9 +222,7 @@ class FormEntertainmentPresentationController extends Controller 'name' => $request->name, 'alamat' => $request->alamat, 'nik_or_npwp' => $request->nik_or_npwp, - 'bukti1' => $filePaths['bukti1'] ?? null, - 'bukti2' => $filePaths['bukti2'] ?? null, - 'bukti3' => $filePaths['bukti3'] ?? null, + 'bukti_total' => $filePaths['bukti_total'] ?? $form->bukti_total, 'account_number' => $kategori->account_number, ]); @@ -265,15 +231,20 @@ class FormEntertainmentPresentationController extends Controller return redirect()->back(); } - public function approve($id) + public function approve(Request $request, $id) { $this->checkAuthorization(auth()->user(), ['approval.approve']); + $request->validate([ + 'total' => 'required', + ]); $form = FormEntertaimentPresentation::findOrfail($id); $form->update([ 'approved_at' => now(), 'approved_by' => auth()->user()->id, - 'status' => 'Approved' + 'status' => 'Approved', + + 'approved_total' => $form->total, ]); $heads = $form->user->getCabangAndRegionHead(); @@ -301,15 +272,16 @@ class FormEntertainmentPresentationController extends Controller $phoneNumbers = array_unique($phoneNumbers); // Send bulk email - Mail::to($recipients)->send(new ExpenseApproved( - $name, - $expense_number, - $tanggal, - $total - )); + // Mail::to($recipients)->send(new ExpenseApproved( + // $name, + // $expense_number, + // $tanggal, + // $total + // )); // Send bulk whatsapp - WhatsappHelper::approveExpense($phoneNumbers, $expense_number); + $url = route('forms.entertainment.view', $form->id); + WhatsappHelper::approveExpense($phoneNumbers, $expense_number, $url); AuditTrailHelper::AddAuditTrail('Approve', 'Approved Expense at Form Entertainment Presentation (' . $expense_number . ')'); session()->flash('success', 'Form has been approved.'); @@ -357,15 +329,16 @@ class FormEntertainmentPresentationController extends Controller $phoneNumbers = array_unique($phoneNumbers); // Send bulk email - Mail::to($recipients)->send(new FinalApprove( - $name, - $expense_number, - $tanggal, - $total - )); + // Mail::to($recipients)->send(new FinalApprove( + // $name, + // $expense_number, + // $tanggal, + // $total + // )); // send whatsapp message - WhatsappHelper::finalApprove($phoneNumbers, $expense_number); + $url = route('forms.entertainment.view', $form->id); + WhatsappHelper::approveExpense($phoneNumbers, $expense_number, $url); AuditTrailHelper::AddAuditTrail('Final Approve', 'Final Approved Expense at Form Entertainment Presentation (' . $expense_number . ')'); session()->flash('success', 'Form has been final approved.'); @@ -422,15 +395,16 @@ class FormEntertainmentPresentationController extends Controller $phoneNumbers = array_unique($phoneNumbers); // Send bulk email - Mail::to($recipients)->send(new ExpenseRejected( - $name, - $expense_number, - $tanggal, - $total - )); + // Mail::to($recipients)->send(new ExpenseRejected( + // $name, + // $expense_number, + // $tanggal, + // $total + // )); // Send bulk whatsapp - WhatsappHelper::rejectExpense($phoneNumbers, $expense_number); + $url = route('forms.entertainment.view', $form->id); + WhatsappHelper::approveExpense($phoneNumbers, $expense_number, $url); AuditTrailHelper::AddAuditTrail('Reject', 'Reject Expense at Form Entertainment Presentation (' . $expense_number . ')'); session()->flash('success', 'Form has been rejected.'); diff --git a/app/Http/Controllers/Forms/FormOtherController.php b/app/Http/Controllers/Forms/FormOtherController.php index af75f24..c6e6c61 100644 --- a/app/Http/Controllers/Forms/FormOtherController.php +++ b/app/Http/Controllers/Forms/FormOtherController.php @@ -65,6 +65,28 @@ class FormOtherController extends Controller ]); } + public function detail($id) + { + $this->checkAuthorization(auth()->user(), ['forms.other.view']); + + $form = FormOthers::with(['user', 'kategori'])->findOrFail($id); + $form->bukti_total = $form->bukti_total ? NextCloudHelper::getFileUrl($form->bukti_total) : null; + + return response()->json($form); + } + + public function view($id) + { + $this->checkAuthorization(auth()->user(), ['forms.other.view']); + + $form = FormOthers::with(['user', 'kategori'])->findOrFail($id); + $form->bukti_total = $form->bukti_total ? NextCloudHelper::getFileUrl($form->bukti_total) : null; + + return view('backend.pages.forms.other.view', [ + 'form' => $form, + ]); + } + public function create() { $this->checkAuthorization(auth()->user(), ['forms.other.create']); @@ -83,9 +105,7 @@ class FormOtherController extends Controller 'tanggal' => 'required|date', 'keterangan' => 'required', 'total' => 'required', - 'bukti1' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], - 'bukti2' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], - 'bukti3' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], + 'bukti_total' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], ]); $cabang = UserHasCabang::with('cabang')->where('user_id', auth()->user()->id)->first()->cabang; @@ -95,43 +115,19 @@ class FormOtherController extends Controller $filePaths = []; $folderPath = '/expense/' . $region->code . '/' . $cabang->code . '/other'; - if ($request->hasFile('bukti1')) { - $bukti1 = $request->file('bukti1'); - $filename = Str::uuid() . '.' . $bukti1->extension(); + if ($request->hasFile('bukti_total')) { + $bukti_total = $request->file('bukti_total'); + $filename = Str::uuid() . '.' . $bukti_total->extension(); - $filePaths['bukti1'] = $folderPath . '/' . $filename; + $filePaths['bukti_total'] = $folderPath . '/' . $filename; NextCloudHelper::uploadFile( $folderPath, - $bukti1->getContent(), + $bukti_total->getContent(), $filename ); } - if ($request->hasFile('bukti2')) { - $bukti2 = $request->file('bukti2'); - $filename = Str::uuid() . '.' . $bukti2->extension(); - - $filePaths['bukti2'] = $folderPath . '/' . $filename; - - NextCloudHelper::uploadFile( - $folderPath, - $bukti2->getContent(), - $filename - ); - } - if ($request->hasFile('bukti3')) { - $bukti3 = $request->file('bukti3'); - $filename = Str::uuid() . '.' . $bukti3->extension(); - - $filePaths['bukti3'] = $folderPath . '/' . $filename; - - NextCloudHelper::uploadFile( - $folderPath, - $bukti3->getContent(), - $filename - ); - } // Generate sequence number and expense number $sequence_number = FormOthers::withTrashed()->where('expense_number', 'like', $region->code . '-' . $cabang->code . '-OTH-' . date('ym') . '%')->count() + 1; @@ -146,9 +142,7 @@ class FormOtherController extends Controller 'tanggal' => $request->tanggal, 'keterangan' => $request->keterangan, 'total' => $request->total, - 'bukti1' => $filePaths['bukti1'] ?? null, - 'bukti2' => $filePaths['bukti2'] ?? null, - 'bukti3' => $filePaths['bukti3'] ?? null, + 'bukti_total' => $filePaths['bukti_total'] ?? null, 'account_number' => $kategori->account_number, 'status' => 'On Progress', ]); @@ -183,9 +177,7 @@ class FormOtherController extends Controller 'tanggal' => 'required|date', 'keterangan' => 'required', 'total' => 'required', - 'bukti1' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], - 'bukti2' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], - 'bukti3' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], + 'bukti_total' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], ]); $form = FormOthers::findOrfail($id); @@ -201,43 +193,19 @@ class FormOtherController extends Controller $filePaths = []; $folderPath = '/expense/' . $region->code . '/' . $cabang->code . '/other'; - if ($request->hasFile('bukti1')) { - $bukti1 = $request->file('bukti1'); - $filename = Str::uuid() . '.' . $bukti1->extension(); + if ($request->hasFile('bukti_total')) { + $bukti_total = $request->file('bukti_total'); + $filename = Str::uuid() . '.' . $bukti_total->extension(); - $filePaths['bukti1'] = $folderPath . '/' . $filename; + $filePaths['bukti_total'] = $folderPath . '/' . $filename; NextCloudHelper::uploadFile( $folderPath, - $bukti1->getContent(), + $bukti_total->getContent(), $filename ); } - if ($request->hasFile('bukti2')) { - $bukti2 = $request->file('bukti2'); - $filename = Str::uuid() . '.' . $bukti2->extension(); - - $filePaths['bukti2'] = $folderPath . '/' . $filename; - - NextCloudHelper::uploadFile( - $folderPath, - $bukti2->getContent(), - $filename - ); - } - if ($request->hasFile('bukti3')) { - $bukti3 = $request->file('bukti3'); - $filename = Str::uuid() . '.' . $bukti3->extension(); - - $filePaths['bukti3'] = $folderPath . '/' . $filename; - - NextCloudHelper::uploadFile( - $folderPath, - $bukti3->getContent(), - $filename - ); - } // Save the form data $form->update([ @@ -245,9 +213,7 @@ class FormOtherController extends Controller 'tanggal' => $request->tanggal, 'keterangan' => $request->keterangan, 'total' => $request->total, - 'bukti1' => $filePaths['bukti1'] ?? $form->bukti1, - 'bukti2' => $filePaths['bukti2'] ?? $form->bukti2, - 'bukti3' => $filePaths['bukti3'] ?? $form->bukti3, + 'bukti_total' => $filePaths['bukti_total'] ?? $form->bukti_total, 'account_number' => $kategori->account_number, ]); @@ -256,15 +222,21 @@ class FormOtherController extends Controller return redirect()->back(); } - public function approve($id) + public function approve(Request $request, $id) { $this->checkAuthorization(auth()->user(), ['approval.approve']); + $request->validate([ + 'total' => 'required', + ]); + $form = FormOthers::findOrfail($id); $form->update([ 'approved_at' => now(), 'approved_by' => auth()->user()->id, - 'status' => 'Approved' + 'status' => 'Approved', + + 'approved_total' => $form->total, ]); $heads = $form->user->getCabangAndRegionHead(); @@ -292,15 +264,16 @@ class FormOtherController extends Controller $phoneNumbers = array_unique($phoneNumbers); // Send bulk email - Mail::to($recipients)->send(new ExpenseApproved( - $name, - $expense_number, - $tanggal, - $total - )); + // Mail::to($recipients)->send(new ExpenseApproved( + // $name, + // $expense_number, + // $tanggal, + // $total + // )); // Send bulk WhatsApp message - WhatsappHelper::approveExpense($phoneNumbers, $expense_number); + $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 . ')'); session()->flash('success', 'Form has been approved.'); @@ -348,15 +321,16 @@ class FormOtherController extends Controller $phoneNumbers = array_unique($phoneNumbers); // Send bulk email - Mail::to($recipients)->send(new FinalApprove( - $name, - $expense_number, - $tanggal, - $total - )); + // Mail::to($recipients)->send(new FinalApprove( + // $name, + // $expense_number, + // $tanggal, + // $total + // )); // send whatsapp message - WhatsappHelper::finalApprove($phoneNumbers, $expense_number); + $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 . ')'); session()->flash('success', 'Form has been final approved.'); @@ -413,15 +387,16 @@ class FormOtherController extends Controller $phoneNumbers = array_unique($phoneNumbers); // Send bulk email - Mail::to($recipients)->send(new ExpenseRejected( - $name, - $expense_number, - $tanggal, - $total - )); + // Mail::to($recipients)->send(new ExpenseRejected( + // $name, + // $expense_number, + // $tanggal, + // $total + // )); // Send bulk WhatsApp message - WhatsappHelper::rejectExpense($phoneNumbers, $expense_number); + $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 . ')'); session()->flash('success', 'Form has been rejected.'); diff --git a/app/Http/Controllers/Forms/FormVehicleController.php b/app/Http/Controllers/Forms/FormVehicleController.php index 558c136..07c1d95 100644 --- a/app/Http/Controllers/Forms/FormVehicleController.php +++ b/app/Http/Controllers/Forms/FormVehicleController.php @@ -65,6 +65,28 @@ class FormVehicleController extends Controller ]); } + public function detail($id) + { + $this->checkAuthorization(auth()->user(), ['forms.vehicle.view']); + + $form = FormVehicleRunningCost::with('user')->findOrFail($id); + $form->bukti_total = $form->bukti_total ? NextCloudHelper::getFileUrl($form->bukti_total) : null; + + return response()->json($form); + } + + public function view($id) + { + $this->checkAuthorization(auth()->user(), ['forms.vehicle.view']); + + $form = FormVehicleRunningCost::with('user')->findOrFail($id); + $form->bukti_total = $form->bukti_total ? NextCloudHelper::getFileUrl($form->bukti_total) : null; + + return view('backend.pages.forms.vehicle.view', [ + 'form' => $form, + ]); + } + public function create() { $this->checkAuthorization(auth()->user(), ['forms.vehicle.create']); @@ -84,9 +106,7 @@ class FormVehicleController extends Controller 'tipe_bensin' => 'required|in:pertalite,pertamax', 'nopol' => 'required', 'keterangan' => 'required', - 'bukti1' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], - 'bukti2' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], - 'bukti3' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], + 'bukti_total' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], ]); $cabang = UserHasCabang::with('cabang')->where('user_id', auth()->user()->id)->first()->cabang; @@ -96,43 +116,19 @@ class FormVehicleController extends Controller $filePaths = []; $folderPath = '/expense/' . $region->code . '/' . $cabang->code . '/vehicle'; - if ($request->hasFile('bukti1')) { - $bukti1 = $request->file('bukti1'); - $filename = Str::uuid() . '.' . $bukti1->extension(); + if ($request->hasFile('bukti_total')) { + $bukti_total = $request->file('bukti_total'); + $filename = Str::uuid() . '.' . $bukti_total->extension(); - $filePaths['bukti1'] = $folderPath . '/' . $filename; + $filePaths['bukti_total'] = $folderPath . '/' . $filename; NextCloudHelper::uploadFile( $folderPath, - $bukti1->getContent(), + $bukti_total->getContent(), $filename ); } - if ($request->hasFile('bukti2')) { - $bukti2 = $request->file('bukti2'); - $filename = Str::uuid() . '.' . $bukti2->extension(); - - $filePaths['bukti2'] = $folderPath . '/' . $filename; - - NextCloudHelper::uploadFile( - $folderPath, - $bukti2->getContent(), - $filename - ); - } - if ($request->hasFile('bukti3')) { - $bukti3 = $request->file('bukti3'); - $filename = Str::uuid() . '.' . $bukti3->extension(); - - $filePaths['bukti3'] = $folderPath . '/' . $filename; - - NextCloudHelper::uploadFile( - $folderPath, - $bukti3->getContent(), - $filename - ); - } // Generate sequence number and expense number $sequence_number = FormVehicleRunningCost::withTrashed()->where('expense_number', 'like', $region->code . '-' . $cabang->code . '-VHC-' . date('ym') . '%')->count() + 1; @@ -150,9 +146,7 @@ class FormVehicleController extends Controller 'tipe_bensin' => $request->tipe_bensin, 'nopol' => $request->nopol, 'keterangan' => $request->keterangan, - 'bukti1' => $filePaths['bukti1'] ?? null, - 'bukti2' => $filePaths['bukti2'] ?? null, - 'bukti3' => $filePaths['bukti3'] ?? null, + 'bukti_total' => $filePaths['bukti_total'] ?? null, 'account_number' => $kategori->account_number, 'status' => 'On Progress', ]); @@ -189,9 +183,7 @@ class FormVehicleController extends Controller 'tipe_bensin' => 'required|in:pertalite,pertamax', 'nopol' => 'required', 'keterangan' => 'required', - 'bukti1' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], - 'bukti2' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], - 'bukti3' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], + 'bukti_total' => ['nullable', 'file', 'max:51200', new FileType(['php', 'exe', 'js', 'sh', 'bat', 'exe', 'sh', 'php', 'vbs'])], ]); $form = FormVehicleRunningCost::findOrfail($id); @@ -207,43 +199,19 @@ class FormVehicleController extends Controller $filePaths = []; $folderPath = '/expense/' . $region->code . '/' . $cabang->code . '/vehicle'; - if ($request->hasFile('bukti1')) { - $bukti1 = $request->file('bukti1'); - $filename = Str::uuid() . '.' . $bukti1->extension(); + if ($request->hasFile('bukti_total')) { + $bukti_total = $request->file('bukti_total'); + $filename = Str::uuid() . '.' . $bukti_total->extension(); - $filePaths['bukti1'] = $folderPath . '/' . $filename; + $filePaths['bukti_total'] = $folderPath . '/' . $filename; NextCloudHelper::uploadFile( $folderPath, - $bukti1->getContent(), + $bukti_total->getContent(), $filename ); } - if ($request->hasFile('bukti2')) { - $bukti2 = $request->file('bukti2'); - $filename = Str::uuid() . '.' . $bukti2->extension(); - - $filePaths['bukti2'] = $folderPath . '/' . $filename; - - NextCloudHelper::uploadFile( - $folderPath, - $bukti2->getContent(), - $filename - ); - } - if ($request->hasFile('bukti3')) { - $bukti3 = $request->file('bukti3'); - $filename = Str::uuid() . '.' . $bukti3->extension(); - - $filePaths['bukti3'] = $folderPath . '/' . $filename; - - NextCloudHelper::uploadFile( - $folderPath, - $bukti3->getContent(), - $filename - ); - } // Save the form data $form->update([ @@ -254,9 +222,7 @@ class FormVehicleController extends Controller 'tipe_bensin' => $request->tipe_bensin, 'nopol' => $request->nopol, 'keterangan' => $request->keterangan, - 'bukti1' => $filePaths['bukti1'] ?? $form->bukti1, - 'bukti2' => $filePaths['bukti2'] ?? $form->bukti2, - 'bukti3' => $filePaths['bukti3'] ?? $form->bukti3, + 'bukti_total' => $filePaths['bukti_total'] ?? $form->bukti_total, 'account_number' => $kategori->account_number, 'status' => 'On Progress', ]); @@ -266,15 +232,20 @@ class FormVehicleController extends Controller return redirect()->back(); } - public function approve($id) + public function approve(Request $request, $id) { $this->checkAuthorization(auth()->user(), ['approval.approve']); + $request->validate([ + 'total' => 'required', + ]); $form = FormVehicleRunningCost::findOrfail($id); $form->update([ 'approved_at' => now(), 'approved_by' => auth()->user()->id, - 'status' => 'Approved' + 'status' => 'Approved', + + 'approved_total' => $form->total, ]); $heads = $form->user->getCabangAndRegionHead(); @@ -302,15 +273,16 @@ class FormVehicleController extends Controller $phoneNumbers = array_unique($phoneNumbers); // Send bulk email - Mail::to($recipients)->send(new ExpenseApproved( - $name, - $expense_number, - $tanggal, - $total - )); + // Mail::to($recipients)->send(new ExpenseApproved( + // $name, + // $expense_number, + // $tanggal, + // $total + // )); // Send bulk WhatsApp message - WhatsappHelper::approveExpense($phoneNumbers, $expense_number); + $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 . ')'); session()->flash('success', 'Form has been approved.'); @@ -358,15 +330,16 @@ class FormVehicleController extends Controller $phoneNumbers = array_unique($phoneNumbers); // Send bulk email - Mail::to($recipients)->send(new FinalApprove( - $name, - $expense_number, - $tanggal, - $total - )); + // Mail::to($recipients)->send(new FinalApprove( + // $name, + // $expense_number, + // $tanggal, + // $total + // )); // send whatsapp message - WhatsappHelper::finalApprove($phoneNumbers, $expense_number); + $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 . ')'); session()->flash('success', 'Form has been final approved.'); @@ -423,16 +396,17 @@ class FormVehicleController extends Controller $phoneNumbers = array_unique($phoneNumbers); // Send bulk email - Mail::to($recipients)->send(new ExpenseRejected( - $name, - $expense_number, - $tanggal, - $total - )); + // Mail::to($recipients)->send(new ExpenseRejected( + // $name, + // $expense_number, + // $tanggal, + // $total + // )); // Send bulk WhatsApp message - WhatsappHelper::rejectExpense($phoneNumbers, $expense_number); - + $url = route('forms.vehicle.view', $form->id); + WhatsappHelper::approveExpense($phoneNumbers, $expense_number, $url); + AuditTrailHelper::AddAuditTrail('Reject', 'Reject Expense at Form Entertainment Presentation (' . $form->expense_number . ')'); session()->flash('success', 'Form has been rejected.'); return redirect()->back(); diff --git a/app/Models/FormEntertaimentPresentation.php b/app/Models/FormEntertaimentPresentation.php index 0bb0820..5c98480 100644 --- a/app/Models/FormEntertaimentPresentation.php +++ b/app/Models/FormEntertaimentPresentation.php @@ -21,9 +21,7 @@ class FormEntertaimentPresentation extends Model 'name', 'alamat', 'nik_or_npwp', - 'bukti1', - 'bukti2', - 'bukti3', + 'bukti_total', 'account_number', 'status', 'approved_at', diff --git a/app/Models/FormOthers.php b/app/Models/FormOthers.php index 33e61d5..b2a7d82 100644 --- a/app/Models/FormOthers.php +++ b/app/Models/FormOthers.php @@ -18,9 +18,7 @@ class FormOthers extends Model 'keterangan', 'total', 'approved_total', - 'bukti1', - 'bukti2', - 'bukti3', + 'bukti_total', 'account_number', 'status', 'approved_at', diff --git a/app/Models/FormVehicleRunningCost.php b/app/Models/FormVehicleRunningCost.php index ca5cf1c..8a67dd4 100644 --- a/app/Models/FormVehicleRunningCost.php +++ b/app/Models/FormVehicleRunningCost.php @@ -21,9 +21,7 @@ class FormVehicleRunningCost extends Model 'tipe_bensin', 'nopol', 'keterangan', - 'bukti1', - 'bukti2', - 'bukti3', + 'bukti_total', 'account_number', 'status', 'approved_at', diff --git a/database/migrations/2025_01_06_072318_changed_bukti_to_form_vehicle_running_cost.php b/database/migrations/2025_01_06_072318_changed_bukti_to_form_vehicle_running_cost.php new file mode 100644 index 0000000..a02432f --- /dev/null +++ b/database/migrations/2025_01_06_072318_changed_bukti_to_form_vehicle_running_cost.php @@ -0,0 +1,36 @@ +dropColumn('bukti1'); + $table->dropColumn('bukti2'); + $table->dropColumn('bukti3'); + + $table->string('bukti_total')->after('approved_total')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('form_vehicle_running_cost', function (Blueprint $table) { + $table->string('bukti1')->after('approved_total')->nullable()->change(); + $table->string('bukti2')->after('bukti1')->nullable()->change(); + $table->string('bukti3')->after('bukti2')->nullable()->change(); + + $table->dropColumn('bukti_total'); + }); + } +}; diff --git a/database/migrations/2025_01_06_080502_changed_bukti_to_form_entertainment_presentation.php b/database/migrations/2025_01_06_080502_changed_bukti_to_form_entertainment_presentation.php new file mode 100644 index 0000000..714ae46 --- /dev/null +++ b/database/migrations/2025_01_06_080502_changed_bukti_to_form_entertainment_presentation.php @@ -0,0 +1,36 @@ +dropColumn('bukti1'); + $table->dropColumn('bukti2'); + $table->dropColumn('bukti3'); + + $table->string('bukti_total')->after('approved_total')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('form_entertainment_presentation', function (Blueprint $table) { + $table->string('bukti1')->after('approved_total')->nullable()->change(); + $table->string('bukti2')->after('bukti1')->nullable()->change(); + $table->string('bukti3')->after('bukti2')->nullable()->change(); + + $table->dropColumn('bukti_total'); + }); + } +}; diff --git a/database/migrations/2025_01_06_084746_changed_bukti_to_form_others.php b/database/migrations/2025_01_06_084746_changed_bukti_to_form_others.php new file mode 100644 index 0000000..07357bf --- /dev/null +++ b/database/migrations/2025_01_06_084746_changed_bukti_to_form_others.php @@ -0,0 +1,36 @@ +dropColumn('bukti1'); + $table->dropColumn('bukti2'); + $table->dropColumn('bukti3'); + + $table->string('bukti_total')->after('approved_total')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('form_others', function (Blueprint $table) { + $table->string('bukti1')->after('approved_total')->nullable()->change(); + $table->string('bukti2')->after('bukti1')->nullable()->change(); + $table->string('bukti3')->after('bukti2')->nullable()->change(); + + $table->dropColumn('bukti_total'); + }); + } +}; diff --git a/resources/views/backend/pages/forms/entertainment/create.blade.php b/resources/views/backend/pages/forms/entertainment/create.blade.php index d94d66b..861edd2 100644 --- a/resources/views/backend/pages/forms/entertainment/create.blade.php +++ b/resources/views/backend/pages/forms/entertainment/create.blade.php @@ -32,11 +32,11 @@
Approved Expenses