From 1bd9ffecba11e18b2917597c93b33a2b7d7861f4 Mon Sep 17 00:00:00 2001 From: Jagad R R Date: Thu, 26 Dec 2024 13:28:06 +0700 Subject: [PATCH 01/12] fix redirect --- .../Controllers/Backend/AdminsController.php | 2 ++ ...ormEntertainmentPresentationController.php | 1 + .../Forms/FormMeetingSeminarController.php | 1 + .../Controllers/Forms/FormOtherController.php | 1 + .../Forms/FormUpCountryController.php | 3 +- .../Forms/FormVehicleController.php | 1 + .../layouts/partials/messages.blade.php | 7 ++++- .../pages/forms/upcountry/edit.blade.php | 30 ------------------- 8 files changed, 13 insertions(+), 33 deletions(-) diff --git a/app/Http/Controllers/Backend/AdminsController.php b/app/Http/Controllers/Backend/AdminsController.php index c25a3c6..679f6d0 100644 --- a/app/Http/Controllers/Backend/AdminsController.php +++ b/app/Http/Controllers/Backend/AdminsController.php @@ -143,6 +143,8 @@ class AdminsController extends Controller 'form_meeting_seminar' => $formMeetingSeminar, ]; + session()->put('redirect_url', route('admin.admins.expense', $user_id)); + // Pass the forms and page information to the view return view('backend.pages.admins.expense', [ 'pageInfo' => [ diff --git a/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php b/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php index 48f43c8..f56d699 100644 --- a/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php +++ b/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php @@ -35,6 +35,7 @@ class FormEntertainmentPresentationController extends Controller $forms = FormEntertaimentPresentation::where('user_id', auth()->user()->id)->get(); } + session()->put('redirect_url', route('forms.entertainment')); return view('backend.pages.forms.entertainment.index', [ 'forms' => $forms ]); diff --git a/app/Http/Controllers/Forms/FormMeetingSeminarController.php b/app/Http/Controllers/Forms/FormMeetingSeminarController.php index 363f486..a3a36ca 100644 --- a/app/Http/Controllers/Forms/FormMeetingSeminarController.php +++ b/app/Http/Controllers/Forms/FormMeetingSeminarController.php @@ -35,6 +35,7 @@ class FormMeetingSeminarController extends Controller $forms = FormMeetingSeminar::where('user_id', auth()->user()->id)->get(); } + session()->put('redirect_url', route('forms.meeting')); return view('backend.pages.forms.meeting.index', [ 'forms' => $forms ]); diff --git a/app/Http/Controllers/Forms/FormOtherController.php b/app/Http/Controllers/Forms/FormOtherController.php index ba4ec54..a9141c6 100644 --- a/app/Http/Controllers/Forms/FormOtherController.php +++ b/app/Http/Controllers/Forms/FormOtherController.php @@ -35,6 +35,7 @@ class FormOtherController extends Controller $forms = FormOthers::where('user_id', auth()->user()->id)->get(); } + session()->put('redirect_url', route('forms.other')); return view('backend.pages.forms.other.index', [ 'forms' => $forms ]); diff --git a/app/Http/Controllers/Forms/FormUpCountryController.php b/app/Http/Controllers/Forms/FormUpCountryController.php index 0697156..52f3cf8 100644 --- a/app/Http/Controllers/Forms/FormUpCountryController.php +++ b/app/Http/Controllers/Forms/FormUpCountryController.php @@ -35,6 +35,7 @@ class FormUpCountryController extends Controller $forms = FormUpCountry::with('rayon')->where('user_id', auth()->user()->id)->get(); } + session()->put('redirect_url', route('forms.up-country')); return view('backend.pages.forms.upcountry.index', [ 'forms' => $forms ]); @@ -137,8 +138,6 @@ class FormUpCountryController extends Controller ]); session()->flash('success', 'Form has been created.'); - session()->flash('redirect_url', route('forms.up-country')); - return redirect()->back(); } diff --git a/app/Http/Controllers/Forms/FormVehicleController.php b/app/Http/Controllers/Forms/FormVehicleController.php index cc2d535..b7f3b3b 100644 --- a/app/Http/Controllers/Forms/FormVehicleController.php +++ b/app/Http/Controllers/Forms/FormVehicleController.php @@ -35,6 +35,7 @@ class FormVehicleController extends Controller $forms = FormVehicleRunningCost::where('user_id', auth()->user()->id)->get(); } + session()->put('redirect_url', route('forms.vehicle')); return view('backend.pages.forms.vehicle.index', [ 'forms' => $forms ]); diff --git a/resources/views/backend/layouts/partials/messages.blade.php b/resources/views/backend/layouts/partials/messages.blade.php index 4c582f8..db13ad7 100644 --- a/resources/views/backend/layouts/partials/messages.blade.php +++ b/resources/views/backend/layouts/partials/messages.blade.php @@ -11,7 +11,6 @@ @endif - @if (Session::has('success')) @@ -37,6 +39,9 @@ }).then(() => { if ("{{ Session::get('redirect_url') }}") { window.location.href = "{{ Session::get('redirect_url') }}"; + @php + Session::forget('redirect_url'); + @endphp } }); diff --git a/resources/views/backend/pages/forms/upcountry/edit.blade.php b/resources/views/backend/pages/forms/upcountry/edit.blade.php index 5e1279b..158f4ac 100644 --- a/resources/views/backend/pages/forms/upcountry/edit.blade.php +++ b/resources/views/backend/pages/forms/upcountry/edit.blade.php @@ -70,10 +70,6 @@ -
- - -
@@ -95,30 +91,4 @@
- - @endsection From 4c6d6859a05679f362cac1fbfb23b374c7b70abf Mon Sep 17 00:00:00 2001 From: Jagad R R Date: Thu, 26 Dec 2024 13:40:17 +0700 Subject: [PATCH 02/12] add notifications for approver --- .../Forms/FormEntertainmentPresentationController.php | 8 ++++---- .../Controllers/Forms/FormMeetingSeminarController.php | 8 ++++---- app/Http/Controllers/Forms/FormOtherController.php | 8 ++++---- app/Http/Controllers/Forms/FormUpCountryController.php | 8 ++++---- app/Http/Controllers/Forms/FormVehicleController.php | 8 ++++---- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php b/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php index f56d699..f6a6d0e 100644 --- a/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php +++ b/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php @@ -257,8 +257,8 @@ class FormEntertainmentPresentationController extends Controller $total = $form->total; // Collect all recipients - $recipients = [$form->user->email]; - $phoneNumbers = [$form->user->phone]; + $recipients = [$form->user->email, auth()->user()->email]; + $phoneNumbers = [$form->user->phone, auth()->user()->phone]; if ($heads['cabang_head']) { $recipients[] = $heads['cabang_head']['email']; @@ -340,8 +340,8 @@ class FormEntertainmentPresentationController extends Controller $total = $form->total; // Collect all recipients - $recipients = [$form->user->email]; - $phoneNumbers = [$form->user->phone]; + $recipients = [$form->user->email, auth()->user()->email]; + $phoneNumbers = [$form->user->phone, auth()->user()->phone]; if ($heads['cabang_head']) { $recipients[] = $heads['cabang_head']['email']; diff --git a/app/Http/Controllers/Forms/FormMeetingSeminarController.php b/app/Http/Controllers/Forms/FormMeetingSeminarController.php index a3a36ca..14d2822 100644 --- a/app/Http/Controllers/Forms/FormMeetingSeminarController.php +++ b/app/Http/Controllers/Forms/FormMeetingSeminarController.php @@ -243,8 +243,8 @@ class FormMeetingSeminarController extends Controller $total = $form->total; // Collect all recipients - $recipients = [$form->user->email]; - $phoneNumbers = [$form->user->phone]; + $recipients = [$form->user->email, auth()->user()->email]; + $phoneNumbers = [$form->user->phone, auth()->user()->phone]; if ($heads['cabang_head']) { $recipients[] = $heads['cabang_head']['email']; @@ -326,8 +326,8 @@ class FormMeetingSeminarController extends Controller $total = $form->total; // Collect all recipients - $recipients = [$form->user->email]; - $phoneNumbers = [$form->user->phone]; + $recipients = [$form->user->email, auth()->user()->email]; + $phoneNumbers = [$form->user->phone, auth()->user()->phone]; if ($heads['cabang_head']) { $recipients[] = $heads['cabang_head']['email']; diff --git a/app/Http/Controllers/Forms/FormOtherController.php b/app/Http/Controllers/Forms/FormOtherController.php index a9141c6..c62050d 100644 --- a/app/Http/Controllers/Forms/FormOtherController.php +++ b/app/Http/Controllers/Forms/FormOtherController.php @@ -248,8 +248,8 @@ class FormOtherController extends Controller $total = $form->total; // Collect all recipients - $recipients = [$form->user->email]; - $phoneNumbers = [$form->user->phone]; + $recipients = [$form->user->email, auth()->user()->email]; + $phoneNumbers = [$form->user->phone, auth()->user()->phone]; if ($heads['cabang_head']) { $recipients[] = $heads['cabang_head']['email']; @@ -331,8 +331,8 @@ class FormOtherController extends Controller $total = $form->total; // Collect all recipients - $recipients = [$form->user->email]; - $phoneNumbers = [$form->user->phone]; + $recipients = [$form->user->email, auth()->user()->email]; + $phoneNumbers = [$form->user->phone, auth()->user()->phone]; if ($heads['cabang_head']) { $recipients[] = $heads['cabang_head']['email']; diff --git a/app/Http/Controllers/Forms/FormUpCountryController.php b/app/Http/Controllers/Forms/FormUpCountryController.php index 52f3cf8..3637854 100644 --- a/app/Http/Controllers/Forms/FormUpCountryController.php +++ b/app/Http/Controllers/Forms/FormUpCountryController.php @@ -265,8 +265,8 @@ class FormUpCountryController extends Controller $total = $form->total; // Collect all recipients - $recipients = [$form->user->email]; - $phoneNumbers = [$form->user->phone]; + $recipients = [$form->user->email, auth()->user()->email]; + $phoneNumbers = [$form->user->phone, auth()->user()->phone]; if ($heads['cabang_head']) { $recipients[] = $heads['cabang_head']['email']; @@ -313,8 +313,8 @@ class FormUpCountryController extends Controller $total = $form->total; // Collect all recipients - $recipients = [$form->user->email]; - $phoneNumbers = [$form->user->phone]; + $recipients = [$form->user->email, auth()->user()->email]; + $phoneNumbers = [$form->user->phone, auth()->user()->phone]; if ($heads['cabang_head']) { $recipients[] = $heads['cabang_head']['email']; diff --git a/app/Http/Controllers/Forms/FormVehicleController.php b/app/Http/Controllers/Forms/FormVehicleController.php index b7f3b3b..49d5f9c 100644 --- a/app/Http/Controllers/Forms/FormVehicleController.php +++ b/app/Http/Controllers/Forms/FormVehicleController.php @@ -258,8 +258,8 @@ class FormVehicleController extends Controller $total = $form->total; // Collect all recipients - $recipients = [$form->user->email]; - $phoneNumbers = [$form->user->phone]; + $recipients = [$form->user->email, auth()->user()->email]; + $phoneNumbers = [$form->user->phone, auth()->user()->phone]; if ($heads['cabang_head']) { $recipients[] = $heads['cabang_head']['email']; @@ -341,8 +341,8 @@ class FormVehicleController extends Controller $total = $form->total; // Collect all recipients - $recipients = [$form->user->email]; - $phoneNumbers = [$form->user->phone]; + $recipients = [$form->user->email, auth()->user()->email]; + $phoneNumbers = [$form->user->phone, auth()->user()->phone]; if ($heads['cabang_head']) { $recipients[] = $heads['cabang_head']['email']; From 87714a773863f6c3a03e68d108dd85d989ff6852 Mon Sep 17 00:00:00 2001 From: Jagad R R Date: Thu, 26 Dec 2024 13:49:00 +0700 Subject: [PATCH 03/12] added final approval (close) expense notification --- app/Helpers/WhatsappHelper.php | 26 ++ ...ormEntertainmentPresentationController.php | 36 ++ .../Forms/FormMeetingSeminarController.php | 36 ++ .../Controllers/Forms/FormOtherController.php | 36 ++ .../Forms/FormUpCountryController.php | 36 ++ .../Forms/FormVehicleController.php | 36 ++ app/Mail/FinalApprove.php | 61 +++ resources/views/mail/approved.blade.php | 3 - resources/views/mail/closed.blade.php | 362 ++++++++++++++++++ resources/views/mail/rejected.blade.php | 3 - 10 files changed, 629 insertions(+), 6 deletions(-) create mode 100644 app/Mail/FinalApprove.php create mode 100644 resources/views/mail/closed.blade.php diff --git a/app/Helpers/WhatsappHelper.php b/app/Helpers/WhatsappHelper.php index 6a3fe68..ed06a60 100644 --- a/app/Helpers/WhatsappHelper.php +++ b/app/Helpers/WhatsappHelper.php @@ -59,4 +59,30 @@ class WhatsappHelper return $response->getBody()->getContents(); } + + public static function finalApprove($phones, $expense_number) + { + $client = new Client(); + + $data = []; + foreach ($phones as $phone) { + $data[] = [ + 'phone' => $phone, + 'message' => 'Pengajuan pengeluaran anda dengan nomor *' . $expense_number . '* telah ditutup karena telah selesai diproses. Silahkan buka website untuk melihat detailnya.', + '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 f6a6d0e..6934204 100644 --- a/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php +++ b/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php @@ -17,6 +17,7 @@ use Illuminate\Support\Str; use Illuminate\Support\Facades\Mail; use App\Mail\ExpenseApproved; use App\Mail\ExpenseRejected; +use App\Mail\FinalApprove; use App\Helpers\WhatsappHelper; class FormEntertainmentPresentationController extends Controller @@ -305,6 +306,41 @@ class FormEntertainmentPresentationController extends Controller 'status' => 'Closed' ]); + $heads = $form->user->getCabangAndRegionHead(); + $name = $form->user->name; + $expense_number = $form->expense_number; + $tanggal = $form->tanggal; + $total = $form->total; + + // Collect all recipients + $recipients = [$form->user->email, auth()->user()->email]; + $phoneNumbers = [$form->user->phone, auth()->user()->phone]; + + if ($heads['cabang_head']) { + $recipients[] = $heads['cabang_head']['email']; + $phoneNumbers[] = $heads['cabang_head']['phone']; + } + + if ($heads['region_head']) { + $recipients[] = $heads['region_head']['email']; + $phoneNumbers[] = $heads['region_head']['phone']; + } + + // Remove duplicate email addresses, if any + $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 + WhatsappHelper::finalApprove($phoneNumbers, $expense_number); + session()->flash('success', 'Form has been final approved.'); return redirect()->back(); } diff --git a/app/Http/Controllers/Forms/FormMeetingSeminarController.php b/app/Http/Controllers/Forms/FormMeetingSeminarController.php index 14d2822..696865b 100644 --- a/app/Http/Controllers/Forms/FormMeetingSeminarController.php +++ b/app/Http/Controllers/Forms/FormMeetingSeminarController.php @@ -17,6 +17,7 @@ use Illuminate\Support\Str; use Illuminate\Support\Facades\Mail; use App\Mail\ExpenseApproved; use App\Mail\ExpenseRejected; +use App\Mail\FinalApprove; use App\Helpers\WhatsappHelper; class FormMeetingSeminarController extends Controller @@ -291,6 +292,41 @@ class FormMeetingSeminarController extends Controller 'status' => 'Closed' ]); + $heads = $form->user->getCabangAndRegionHead(); + $name = $form->user->name; + $expense_number = $form->expense_number; + $tanggal = $form->tanggal; + $total = $form->total; + + // Collect all recipients + $recipients = [$form->user->email, auth()->user()->email]; + $phoneNumbers = [$form->user->phone, auth()->user()->phone]; + + if ($heads['cabang_head']) { + $recipients[] = $heads['cabang_head']['email']; + $phoneNumbers[] = $heads['cabang_head']['phone']; + } + + if ($heads['region_head']) { + $recipients[] = $heads['region_head']['email']; + $phoneNumbers[] = $heads['region_head']['phone']; + } + + // Remove duplicate email addresses, if any + $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 + WhatsappHelper::finalApprove($phoneNumbers, $expense_number); + session()->flash('success', 'Form has been final approved.'); return redirect()->back(); } diff --git a/app/Http/Controllers/Forms/FormOtherController.php b/app/Http/Controllers/Forms/FormOtherController.php index c62050d..c98f58e 100644 --- a/app/Http/Controllers/Forms/FormOtherController.php +++ b/app/Http/Controllers/Forms/FormOtherController.php @@ -17,6 +17,7 @@ use App\Helpers\NextCloudHelper; use Illuminate\Support\Facades\Mail; use App\Mail\ExpenseApproved; use App\Mail\ExpenseRejected; +use App\Mail\FinalApprove; use App\Helpers\WhatsappHelper; class FormOtherController extends Controller @@ -296,6 +297,41 @@ class FormOtherController extends Controller 'status' => 'Closed' ]); + $heads = $form->user->getCabangAndRegionHead(); + $name = $form->user->name; + $expense_number = $form->expense_number; + $tanggal = $form->tanggal; + $total = $form->total; + + // Collect all recipients + $recipients = [$form->user->email, auth()->user()->email]; + $phoneNumbers = [$form->user->phone, auth()->user()->phone]; + + if ($heads['cabang_head']) { + $recipients[] = $heads['cabang_head']['email']; + $phoneNumbers[] = $heads['cabang_head']['phone']; + } + + if ($heads['region_head']) { + $recipients[] = $heads['region_head']['email']; + $phoneNumbers[] = $heads['region_head']['phone']; + } + + // Remove duplicate email addresses, if any + $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 + WhatsappHelper::finalApprove($phoneNumbers, $expense_number); + session()->flash('success', 'Form has been final approved.'); return redirect()->back(); } diff --git a/app/Http/Controllers/Forms/FormUpCountryController.php b/app/Http/Controllers/Forms/FormUpCountryController.php index 3637854..16c7f74 100644 --- a/app/Http/Controllers/Forms/FormUpCountryController.php +++ b/app/Http/Controllers/Forms/FormUpCountryController.php @@ -17,6 +17,7 @@ use Illuminate\Support\Str; use Illuminate\Support\Facades\Mail; use App\Mail\ExpenseApproved; use App\Mail\ExpenseRejected; +use App\Mail\FinalApprove; use App\Helpers\WhatsappHelper; class FormUpCountryController extends Controller @@ -361,6 +362,41 @@ class FormUpCountryController extends Controller 'status' => 'Closed' ]); + $heads = $form->user->getCabangAndRegionHead(); + $name = $form->user->name; + $expense_number = $form->expense_number; + $tanggal = $form->tanggal; + $total = $form->total; + + // Collect all recipients + $recipients = [$form->user->email, auth()->user()->email]; + $phoneNumbers = [$form->user->phone, auth()->user()->phone]; + + if ($heads['cabang_head']) { + $recipients[] = $heads['cabang_head']['email']; + $phoneNumbers[] = $heads['cabang_head']['phone']; + } + + if ($heads['region_head']) { + $recipients[] = $heads['region_head']['email']; + $phoneNumbers[] = $heads['region_head']['phone']; + } + + // Remove duplicate email addresses, if any + $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 + WhatsappHelper::finalApprove($phoneNumbers, $expense_number); + session()->flash('success', 'Form has been final approved.'); return redirect()->back(); } diff --git a/app/Http/Controllers/Forms/FormVehicleController.php b/app/Http/Controllers/Forms/FormVehicleController.php index 49d5f9c..683f4f7 100644 --- a/app/Http/Controllers/Forms/FormVehicleController.php +++ b/app/Http/Controllers/Forms/FormVehicleController.php @@ -17,6 +17,7 @@ use Illuminate\Support\Str; use Illuminate\Support\Facades\Mail; use App\Mail\ExpenseApproved; use App\Mail\ExpenseRejected; +use App\Mail\FinalApprove; use App\Helpers\WhatsappHelper; class FormVehicleController extends Controller @@ -306,6 +307,41 @@ class FormVehicleController extends Controller 'status' => 'Closed' ]); + $heads = $form->user->getCabangAndRegionHead(); + $name = $form->user->name; + $expense_number = $form->expense_number; + $tanggal = $form->tanggal; + $total = $form->total; + + // Collect all recipients + $recipients = [$form->user->email, auth()->user()->email]; + $phoneNumbers = [$form->user->phone, auth()->user()->phone]; + + if ($heads['cabang_head']) { + $recipients[] = $heads['cabang_head']['email']; + $phoneNumbers[] = $heads['cabang_head']['phone']; + } + + if ($heads['region_head']) { + $recipients[] = $heads['region_head']['email']; + $phoneNumbers[] = $heads['region_head']['phone']; + } + + // Remove duplicate email addresses, if any + $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 + WhatsappHelper::finalApprove($phoneNumbers, $expense_number); + session()->flash('success', 'Form has been final approved.'); return redirect()->back(); } diff --git a/app/Mail/FinalApprove.php b/app/Mail/FinalApprove.php new file mode 100644 index 0000000..fedb1c2 --- /dev/null +++ b/app/Mail/FinalApprove.php @@ -0,0 +1,61 @@ + $this->name, + 'expense_number' => $this->expense_number, + 'tanggal' => $this->tanggal, + 'total' => $this->total, + ], + ); + } + + /** + * Get the attachments for the message. + * + * @return array + */ + public function attachments(): array + { + return []; + } +} diff --git a/resources/views/mail/approved.blade.php b/resources/views/mail/approved.blade.php index 0b937d9..4ac914e 100644 --- a/resources/views/mail/approved.blade.php +++ b/resources/views/mail/approved.blade.php @@ -302,9 +302,6 @@  
- - - Expense Approved diff --git a/resources/views/mail/closed.blade.php b/resources/views/mail/closed.blade.php new file mode 100644 index 0000000..a8c9e97 --- /dev/null +++ b/resources/views/mail/closed.blade.php @@ -0,0 +1,362 @@ + + + + + + Expense Closed + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/views/mail/rejected.blade.php b/resources/views/mail/rejected.blade.php index 9e12216..2707d37 100644 --- a/resources/views/mail/rejected.blade.php +++ b/resources/views/mail/rejected.blade.php @@ -302,9 +302,6 @@  
- - - Expense Rejected From 81ecc4b69a30aa85c8ece513df20ef211df11c86 Mon Sep 17 00:00:00 2001 From: Jagad R R Date: Thu, 26 Dec 2024 14:49:20 +0700 Subject: [PATCH 04/12] error get public url --- app/Helpers/NextCloudHelper.php | 49 ++++++++++++++++--- composer.json | 1 + composer.lock | 2 +- config/filesystems.php | 10 ++++ .../pages/forms/upcountry/index.blade.php | 2 +- 5 files changed, 55 insertions(+), 9 deletions(-) diff --git a/app/Helpers/NextCloudHelper.php b/app/Helpers/NextCloudHelper.php index 49b78ee..b51fb34 100644 --- a/app/Helpers/NextCloudHelper.php +++ b/app/Helpers/NextCloudHelper.php @@ -5,6 +5,7 @@ namespace App\Helpers; use GuzzleHttp\Client; use GuzzleHttp\Exception\RequestException; use Illuminate\Support\Str; +use Illuminate\Support\Facades\Storage; class NextCloudHelper { @@ -102,19 +103,53 @@ class NextCloudHelper } } - public static function getFileUrl($filePath) { $baseUrl = env('NEXT_CLOUD_URL'); - $username = env('NEXT_CLOUD_USERNAME'); + $publicToken = '5ogLDbQEbEMsAbD'; // Replace with your actual token + $relativePath = "/mktia/public.php/webdav/" . ltrim($filePath, '/'); - // Build the user-specific WebDAV file URL - $relativePath = "/mktia/remote.php/dav/files/{$username}/" . ltrim($filePath, '/'); + // Build the full URL + $url = rtrim($baseUrl, '/') . $relativePath . "?token={$publicToken}"; - // Return the full accessible URL - return rtrim($baseUrl, '/') . '/' . $relativePath; + // Initialize cURL + $ch = curl_init($url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_HTTPHEADER, [ + 'OCS-APIRequest: true', // Ensure Nextcloud recognizes the API request + ]); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // Disable SSL host verification + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Disable SSL peer verification + + $response = curl_exec($ch); + + // Handle cURL errors + if ($response === false) { + $error = curl_error($ch); + curl_close($ch); + throw new \Exception("cURL error: {$error}"); + } + + curl_close($ch); + return $url; } - + + public static function getNextcloudFile($filePath) + { + // Check if the file exists + if (Storage::disk('webdav')->exists($filePath)) { + // Get the file contents + $content = Storage::disk('webdav')->get($filePath); + + // Return the file as a response for download + return response($content) + ->header('Content-Type', 'application/pdf') + ->header('Content-Disposition', 'inline; filename="' . basename($filePath) . '"'); + } else { + return response()->json(['error' => 'File not found'], 404); + } + } + /** * Create a user in Nextcloud. * diff --git a/composer.json b/composer.json index c646c79..df51847 100644 --- a/composer.json +++ b/composer.json @@ -14,6 +14,7 @@ "laravel/tinker": "^2.9", "laravel/ui": "^4.6", "laravolt/avatar": "^6.0", + "league/flysystem-webdav": "^3.29", "nino/laravel-nextcloud-fs": "^2.0", "phpoffice/phpspreadsheet": "^3.5", "singlequote/laravel-webdav": "^1.1", diff --git a/composer.lock b/composer.lock index fd8a12c..18f4e50 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "83771e2a711327eac79ef3f7b30673da", + "content-hash": "fc2177036b736100113a527777c8cbc8", "packages": [ { "name": "barryvdh/laravel-dompdf", diff --git a/config/filesystems.php b/config/filesystems.php index 1de83d6..37a9b06 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -68,6 +68,16 @@ return [ ], ], + 'webdav' => [ + 'driver' => 'webdav', + 'baseUri' => 'https://mkt.tunggal-pharma.com/mktia/remote.php/dav/files/user_dev/', + 'userName' => env('NEXT_CLOUD_USERNAME'), + 'password' => env('NEXT_CLOUD_PASSWORD'), + 'prefix' => '', + 'options' => [ + 'verify' => false, + ], + ], ], /* diff --git a/resources/views/backend/pages/forms/upcountry/index.blade.php b/resources/views/backend/pages/forms/upcountry/index.blade.php index 2b913f1..0477cbb 100644 --- a/resources/views/backend/pages/forms/upcountry/index.blade.php +++ b/resources/views/backend/pages/forms/upcountry/index.blade.php @@ -115,7 +115,7 @@ + @endforeach + + +
diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php index a0eb504..b43eaf0 100644 --- a/resources/views/layouts/app.blade.php +++ b/resources/views/layouts/app.blade.php @@ -68,14 +68,16 @@
- -
+ @include('layouts.partials.sidebar') From 86639eb24622db2bf85d25446f8a30ca62a23e5c Mon Sep 17 00:00:00 2001 From: Jagad R R Date: Fri, 27 Dec 2024 13:34:59 +0700 Subject: [PATCH 10/12] increase image size limit --- .../Forms/FormEntertainmentPresentationController.php | 4 ++-- app/Http/Controllers/Forms/FormMeetingSeminarController.php | 4 ++-- app/Http/Controllers/Forms/FormOtherController.php | 4 ++-- app/Http/Controllers/Forms/FormUpCountryController.php | 4 ++-- app/Http/Controllers/Forms/FormVehicleController.php | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php b/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php index 17a0ad3..6356a48 100644 --- a/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php +++ b/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php @@ -72,7 +72,7 @@ class FormEntertainmentPresentationController extends Controller 'name' => 'required', 'alamat' => 'required', 'nik_or_npwp' => 'required', - 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048', + 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:51200', 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', 'bukti3' => 'nullable|file|mimes:pdf', ]); @@ -176,7 +176,7 @@ class FormEntertainmentPresentationController extends Controller 'name' => 'required', 'alamat' => 'required', 'nik_or_npwp' => 'required', - 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048', + 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:51200', 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', 'bukti3' => 'nullable|file|mimes:pdf', ]); diff --git a/app/Http/Controllers/Forms/FormMeetingSeminarController.php b/app/Http/Controllers/Forms/FormMeetingSeminarController.php index b80c013..0af0ff7 100644 --- a/app/Http/Controllers/Forms/FormMeetingSeminarController.php +++ b/app/Http/Controllers/Forms/FormMeetingSeminarController.php @@ -68,7 +68,7 @@ class FormMeetingSeminarController extends Controller 'allowance' => 'required', 'transport_ankot' => 'required', 'hotel' => 'required', - 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048', + 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:51200', 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', 'bukti3' => 'nullable|file|mimes:pdf', ]); @@ -165,7 +165,7 @@ class FormMeetingSeminarController extends Controller 'allowance' => 'required', 'transport_ankot' => 'required', 'hotel' => 'required', - 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048', + 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:51200', 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', 'bukti3' => 'nullable|file|mimes:pdf', ]); diff --git a/app/Http/Controllers/Forms/FormOtherController.php b/app/Http/Controllers/Forms/FormOtherController.php index a9f4a96..71bfc8e 100644 --- a/app/Http/Controllers/Forms/FormOtherController.php +++ b/app/Http/Controllers/Forms/FormOtherController.php @@ -74,7 +74,7 @@ class FormOtherController extends Controller 'tanggal' => 'required|date', 'keterangan' => 'required', 'total' => 'required', - 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048', + 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:51200', 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', 'bukti3' => 'nullable|file|mimes:pdf', ]); @@ -173,7 +173,7 @@ class FormOtherController extends Controller 'tanggal' => 'required|date', 'keterangan' => 'required', 'total' => 'required', - 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048', + 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:51200', 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', 'bukti3' => 'nullable|file|mimes:pdf', ]); diff --git a/app/Http/Controllers/Forms/FormUpCountryController.php b/app/Http/Controllers/Forms/FormUpCountryController.php index b2b62eb..4ad9549 100644 --- a/app/Http/Controllers/Forms/FormUpCountryController.php +++ b/app/Http/Controllers/Forms/FormUpCountryController.php @@ -73,7 +73,7 @@ class FormUpCountryController extends Controller 'allowance' => 'required', 'transport_dalkot' => 'required', 'transport_ankot' => 'required', - 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048', + 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:51200', 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', 'bukti3' => 'nullable|file|mimes:pdf', ]); @@ -181,7 +181,7 @@ class FormUpCountryController extends Controller 'transport_dalkot' => 'required', 'transport_ankot' => 'required', 'hotel' => 'required', - 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048', + 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:51200', 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', 'bukti3' => 'nullable|file|mimes:pdf', ]); diff --git a/app/Http/Controllers/Forms/FormVehicleController.php b/app/Http/Controllers/Forms/FormVehicleController.php index c5fb717..30ccd09 100644 --- a/app/Http/Controllers/Forms/FormVehicleController.php +++ b/app/Http/Controllers/Forms/FormVehicleController.php @@ -71,7 +71,7 @@ class FormVehicleController extends Controller 'tipe_bensin' => 'required|in:pertalite,pertamax', 'nopol' => 'required', 'keterangan' => 'required', - 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048', + 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:51200', 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', 'bukti3' => 'nullable|file|mimes:pdf', ]); @@ -175,7 +175,7 @@ class FormVehicleController extends Controller 'tipe_bensin' => 'required|in:pertalite,pertamax', 'nopol' => 'required', 'keterangan' => 'required', - 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048', + 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:51200', 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', 'bukti3' => 'nullable|file|mimes:pdf', ]); From 3f7b9d0eb5244eecd10b7cb5a01c8c81bfea35eb Mon Sep 17 00:00:00 2001 From: Jagad R R Date: Tue, 31 Dec 2024 12:38:14 +0700 Subject: [PATCH 11/12] add image compressor (50%) --- app/Helpers/NextCloudHelper.php | 37 +++++- composer.json | 2 +- composer.lock | 204 +++++++++++++++++++++----------- 3 files changed, 167 insertions(+), 76 deletions(-) diff --git a/app/Helpers/NextCloudHelper.php b/app/Helpers/NextCloudHelper.php index b51fb34..55109fb 100644 --- a/app/Helpers/NextCloudHelper.php +++ b/app/Helpers/NextCloudHelper.php @@ -6,6 +6,7 @@ use GuzzleHttp\Client; use GuzzleHttp\Exception\RequestException; use Illuminate\Support\Str; use Illuminate\Support\Facades\Storage; +use Spatie\Image\Image; class NextCloudHelper { @@ -63,12 +64,11 @@ class NextCloudHelper { $baseUrl = env('NEXT_CLOUD_URL'); $username = env('NEXT_CLOUD_USERNAME'); - $password= env('NEXT_CLOUD_PASSWORD'); + $password = env('NEXT_CLOUD_PASSWORD'); // Ensure the folder exists (or create it) $folderResponse = self::createFolder($baseUrl, $username, $password, $folderPath); - // Check if folder creation was successful or if it already exists if (!$folderResponse['success']) { return [ 'success' => false, @@ -81,12 +81,37 @@ class NextCloudHelper $url = rtrim($baseUrl, '/') . "/mktia/remote.php/dav/files/{$username}/" . ltrim($folderPath, '/') . '/' . $fileName; try { - // If fileObject is a stream, we can use it directly - // If it's raw content, ensure it's being properly passed + // Check if the file is an image + if (Str::endsWith($fileName, ['.jpeg', '.png', '.jpg', '.gif', '.svg', '.heic', '.heif'])) { + // Save the uploaded file or raw content to a temporary path + $tempPath = tempnam(sys_get_temp_dir(), 'image_') . '.' . pathinfo($fileName, PATHINFO_EXTENSION); + + if (is_string($fileObject)) { + // If fileObject is raw content, write it to the temp file + file_put_contents($tempPath, $fileObject); + } elseif ($fileObject instanceof \Illuminate\Http\UploadedFile) { + // If fileObject is an UploadedFile, move it to the temp file + $fileObject->move(dirname($tempPath), basename($tempPath)); + } + + // Optimize the image + Image::load($tempPath) + ->optimize() + ->quality(50) + ->save(); + + // Replace fileObject with the optimized file content + $fileObject = file_get_contents($tempPath); + + // Remove the temporary file + unlink($tempPath); + } + + // Upload the file $response = $client->request('PUT', $url, [ 'auth' => [$username, $password], - 'body' => $fileObject, // File content or stream - 'verify' => false // Disable SSL verification (only for testing purposes) + 'body' => $fileObject, + 'verify' => false // Disable SSL verification (only for testing purposes) ]); return [ diff --git a/composer.json b/composer.json index ea137cc..7f35a49 100644 --- a/composer.json +++ b/composer.json @@ -18,8 +18,8 @@ "nino/laravel-nextcloud-fs": "^2.0", "phpoffice/phpspreadsheet": "^3.5", "singlequote/laravel-webdav": "^1.1", + "spatie/image": "^3.7", "spatie/laravel-html": "^3.11", - "spatie/laravel-image-optimizer": "^1.8", "spatie/laravel-menu": "^4.2", "spatie/laravel-permission": "^6.10", "yajra/laravel-datatables-oracle": "11.0" diff --git a/composer.lock b/composer.lock index d2b7929..b58983c 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "21b0b8595f584053b4b3e6a9267a2a47", + "content-hash": "868009e8371e3394bb5e17f99038a6b8", "packages": [ { "name": "barryvdh/laravel-dompdf", @@ -4856,6 +4856,79 @@ }, "time": "2024-06-07T12:41:19+00:00" }, + { + "name": "spatie/image", + "version": "3.7.4", + "source": { + "type": "git", + "url": "https://github.com/spatie/image.git", + "reference": "d72d1ae07f91a3c1230e064acd4fd8c334ab237b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/image/zipball/d72d1ae07f91a3c1230e064acd4fd8c334ab237b", + "reference": "d72d1ae07f91a3c1230e064acd4fd8c334ab237b", + "shasum": "" + }, + "require": { + "ext-exif": "*", + "ext-json": "*", + "ext-mbstring": "*", + "php": "^8.2", + "spatie/image-optimizer": "^1.7.5", + "spatie/temporary-directory": "^2.2", + "symfony/process": "^6.4|^7.0" + }, + "require-dev": { + "ext-gd": "*", + "ext-imagick": "*", + "laravel/sail": "^1.34", + "pestphp/pest": "^2.28", + "phpstan/phpstan": "^1.10.50", + "spatie/pest-plugin-snapshots": "^2.1", + "spatie/pixelmatch-php": "^1.0", + "spatie/ray": "^1.40.1", + "symfony/var-dumper": "^6.4|7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Image\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Manipulate images with an expressive API", + "homepage": "https://github.com/spatie/image", + "keywords": [ + "image", + "spatie" + ], + "support": { + "source": "https://github.com/spatie/image/tree/3.7.4" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2024-10-07T09:03:34+00:00" + }, { "name": "spatie/image-optimizer", "version": "1.8.0", @@ -4989,74 +5062,6 @@ ], "time": "2024-10-18T14:37:21+00:00" }, - { - "name": "spatie/laravel-image-optimizer", - "version": "1.8.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/laravel-image-optimizer.git", - "reference": "024752cba691fee3cd1800000b6aa3da3b8b2474" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-image-optimizer/zipball/024752cba691fee3cd1800000b6aa3da3b8b2474", - "reference": "024752cba691fee3cd1800000b6aa3da3b8b2474", - "shasum": "" - }, - "require": { - "laravel/framework": "^8.0|^9.0|^10.0|^11.0", - "php": "^8.0", - "spatie/image-optimizer": "^1.2.0" - }, - "require-dev": { - "orchestra/testbench": "^6.23|^7.0|^8.0|^9.0", - "phpunit/phpunit": "^9.4|^10.5" - }, - "type": "library", - "extra": { - "laravel": { - "aliases": { - "ImageOptimizer": "Spatie\\LaravelImageOptimizer\\Facades\\ImageOptimizer" - }, - "providers": [ - "Spatie\\LaravelImageOptimizer\\ImageOptimizerServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Spatie\\LaravelImageOptimizer\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "Optimize images in your Laravel app", - "homepage": "https://github.com/spatie/laravel-image-optimizer", - "keywords": [ - "laravel-image-optimizer", - "spatie" - ], - "support": { - "source": "https://github.com/spatie/laravel-image-optimizer/tree/1.8.0" - }, - "funding": [ - { - "url": "https://spatie.be/open-source/support-us", - "type": "custom" - } - ], - "time": "2024-02-29T10:55:08+00:00" - }, { "name": "spatie/laravel-menu", "version": "4.2.0", @@ -5328,6 +5333,67 @@ ], "time": "2023-04-12T10:02:12+00:00" }, + { + "name": "spatie/temporary-directory", + "version": "2.2.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/temporary-directory.git", + "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a", + "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\TemporaryDirectory\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alex Vanderbist", + "email": "alex@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Easily create, use and destroy temporary directories", + "homepage": "https://github.com/spatie/temporary-directory", + "keywords": [ + "php", + "spatie", + "temporary-directory" + ], + "support": { + "issues": "https://github.com/spatie/temporary-directory/issues", + "source": "https://github.com/spatie/temporary-directory/tree/2.2.1" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2023-12-25T11:46:58+00:00" + }, { "name": "spatie/url", "version": "2.4.0", From fbcc841e80d33fe13dfa24eb7c99c9b49b912a46 Mon Sep 17 00:00:00 2001 From: Jagad R R Date: Tue, 31 Dec 2024 12:46:14 +0700 Subject: [PATCH 12/12] revert function to get image url --- app/Helpers/NextCloudHelper.php | 30 ++++--------------- .../pages/forms/upcountry/index.blade.php | 2 +- 2 files changed, 7 insertions(+), 25 deletions(-) diff --git a/app/Helpers/NextCloudHelper.php b/app/Helpers/NextCloudHelper.php index 55109fb..5e7f007 100644 --- a/app/Helpers/NextCloudHelper.php +++ b/app/Helpers/NextCloudHelper.php @@ -131,34 +131,16 @@ class NextCloudHelper public static function getFileUrl($filePath) { $baseUrl = env('NEXT_CLOUD_URL'); - $publicToken = '5ogLDbQEbEMsAbD'; // Replace with your actual token - $relativePath = "/mktia/public.php/webdav/" . ltrim($filePath, '/'); + $username = env('NEXT_CLOUD_USERNAME'); - // Build the full URL - $url = rtrim($baseUrl, '/') . $relativePath . "?token={$publicToken}"; + // Build the user-specific WebDAV file URL + $relativePath = "/mktia/remote.php/dav/files/{$username}/" . ltrim($filePath, '/'); - // Initialize cURL - $ch = curl_init($url); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_HTTPHEADER, [ - 'OCS-APIRequest: true', // Ensure Nextcloud recognizes the API request - ]); - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // Disable SSL host verification - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Disable SSL peer verification - - $response = curl_exec($ch); - - // Handle cURL errors - if ($response === false) { - $error = curl_error($ch); - curl_close($ch); - throw new \Exception("cURL error: {$error}"); - } - - curl_close($ch); - return $url; + // Return the full accessible URL + return rtrim($baseUrl, '/') . '/' . $relativePath; } + public static function getNextcloudFile($filePath) { // Check if the file exists diff --git a/resources/views/backend/pages/forms/upcountry/index.blade.php b/resources/views/backend/pages/forms/upcountry/index.blade.php index b69057e..a080d90 100644 --- a/resources/views/backend/pages/forms/upcountry/index.blade.php +++ b/resources/views/backend/pages/forms/upcountry/index.blade.php @@ -119,7 +119,7 @@ {{ number_format($item->total, 0, ',', '.') }} @if ($item->bukti1) - + Download @else