diff --git a/app/Http/Controllers/Exports/ExportAnalyticToExcelController.php b/app/Http/Controllers/Exports/ExportAnalyticToExcelController.php index 2a93a991..af90dbb5 100644 --- a/app/Http/Controllers/Exports/ExportAnalyticToExcelController.php +++ b/app/Http/Controllers/Exports/ExportAnalyticToExcelController.php @@ -9,6 +9,8 @@ use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Maatwebsite\Excel\Excel; +use Illuminate\Support\Facades\Storage; +use Carbon\Carbon; class ExportAnalyticToExcelController { @@ -24,14 +26,42 @@ class ExportAnalyticToExcelController } public function bookingData(ExportsAnalyticBookingTransactions $exportsAnalyticBookingTransactions, Request $request){ - $response = $exportsAnalyticBookingTransactions->download('bookingData.csv', Excel::CSV, ['Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']); - ob_end_clean(); - return $response; + $exportFileName = 'bookingData.csv'; + $filesystemDriver = Storage::getDefaultDriver(); + if($filesystemDriver === 's3'){ + return response([ 'src' => $this->S3($exportFileName, $exportsAnalyticBookingTransactions) ]); + } + else{ + $response = $exportsAnalyticBookingTransactions->download($exportFileName, Excel::CSV, ['Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']); + ob_end_clean(); + return $response; + } } public function billingData(ExportsAnalyticBillingTransactions $exportsAnalyticBillingTransactions, Request $request){ - $response = $exportsAnalyticBillingTransactions->download('billingData.csv', Excel::CSV, ['Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']); - ob_end_clean(); - return $response; + $exportFileName = 'billingData.csv'; + $filesystemDriver = Storage::getDefaultDriver(); + if($filesystemDriver === 's3'){ + return response([ 'src' => $this->S3($exportFileName, $exportsAnalyticBillingTransactions) ]); + } + else{ + $response = $exportsAnalyticBillingTransactions->download($exportFileName, Excel::CSV, ['Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']); + ob_end_clean(); + return $response; + } } -} \ No newline at end of file + + private function S3($exportFileName, $exportableObject){ + //Step 1: Upload to S3 + $filePathForS3 = 'temp/' . $exportFileName; + $exportableObject->store($filePathForS3, 's3'); + + //Step 2: Return temporary URL from S3 + $temporaryUrl = Storage::disk('s3')->temporaryUrl( + $filePathForS3, + Carbon::now()->addMinutes(10) + ); + + return $temporaryUrl; + } +} diff --git a/app/Http/Controllers/Exports/ExportCustomersWalletTransactionToExcelController.php b/app/Http/Controllers/Exports/ExportCustomersWalletTransactionToExcelController.php index c4457565..d19cf8e8 100644 --- a/app/Http/Controllers/Exports/ExportCustomersWalletTransactionToExcelController.php +++ b/app/Http/Controllers/Exports/ExportCustomersWalletTransactionToExcelController.php @@ -7,6 +7,8 @@ use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Maatwebsite\Excel\Excel; +use Illuminate\Support\Facades\Storage; +use Carbon\Carbon; class ExportCustomersWalletTransactionToExcelController { @@ -24,9 +26,29 @@ class ExportCustomersWalletTransactionToExcelController public function export(Request $request) { $exportsTransactions = new ExportsCustomersWalletTransactionHistory($request); - $filename = $request->route('marking') . '-wallet-' . ($request->route('is_precise') == 'true' ? 'precise-' : '') . 'transaction-history.xls'; - $response = $exportsTransactions->download($filename, Excel::XLS, ['Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']); - ob_end_clean(); - return $response; + $exportFileName = $request->route('marking') . '-wallet-' . ($request->route('is_precise') == 'true' ? 'precise-' : '') . 'transaction-history.xls'; + $filesystemDriver = Storage::getDefaultDriver(); + if($filesystemDriver === 's3'){ + return response([ 'src' => $this->S3($exportFileName, $exportsTransactions) ]); + } + else{ + $response = $exportsTransactions->download($exportFileName, Excel::XLS, ['Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']); + ob_end_clean(); + return $response; + } + } + + private function S3($exportFileName, $exportableObject){ + //Step 1: Upload to S3 + $filePathForS3 = 'temp/' . $exportFileName; + $exportableObject->store($filePathForS3, 's3'); + + //Step 2: Return temporary URL from S3 + $temporaryUrl = Storage::disk('s3')->temporaryUrl( + $filePathForS3, + Carbon::now()->addMinutes(10) + ); + + return $temporaryUrl; } } diff --git a/resources/assets/vue/components/accounting/elements/HistoryImportedInvoices.vue b/resources/assets/vue/components/accounting/elements/HistoryImportedInvoices.vue index d3d68cfb..d0dd1e93 100644 --- a/resources/assets/vue/components/accounting/elements/HistoryImportedInvoices.vue +++ b/resources/assets/vue/components/accounting/elements/HistoryImportedInvoices.vue @@ -3,7 +3,7 @@
{{ item.imported_date }}
-
+
@@ -30,8 +30,20 @@ downloadInvoiceMapped(importedDate) { var arrDateTime = importedDate.split(" "); const fileName = 'InvoiceMapped'; - - window.open(this.route('importedInvoiceMapped.export')+'?date='+arrDateTime[0]+'&time='+arrDateTime[1]+'&fileName='+fileName, '_blank'); + const url = this.route('importedInvoiceMapped.export')+'?date='+arrDateTime[0]+'&time='+arrDateTime[1]+'&fileName='+fileName; + if(window.LARAVEL_VAPOR_ENABLED){ + this.submit(url, 'get', this.section, false, false); + } + else{ + window.open(url, '_blank'); + } + }, + successHandler(response) { + if(window.LARAVEL_VAPOR_ENABLED){ + if (response.src) { + window.location.href = response.src; + } + } }, }, mixins: [componentHandler] diff --git a/resources/assets/vue/components/accounting/elements/HistoryImportedReceipts.vue b/resources/assets/vue/components/accounting/elements/HistoryImportedReceipts.vue index 00138fa5..385e37b9 100644 --- a/resources/assets/vue/components/accounting/elements/HistoryImportedReceipts.vue +++ b/resources/assets/vue/components/accounting/elements/HistoryImportedReceipts.vue @@ -3,7 +3,7 @@
{{ item.imported_date }}
-
+
@@ -30,8 +30,20 @@ downloadInvoiceMapped(importedDate) { var arrDateTime = importedDate.split(" "); const fileName = 'ReceiptMapped'; - - window.open(this.route('importedReceiptMapped.export')+'?date='+arrDateTime[0]+'&time='+arrDateTime[1]+'&fileName='+fileName, '_blank'); + const url = this.route('importedReceiptMapped.export')+'?date='+arrDateTime[0]+'&time='+arrDateTime[1]+'&fileName='+fileName; + if(window.LARAVEL_VAPOR_ENABLED){ + this.submit(url, 'get', this.section, false, false); + } + else{ + window.open(url, '_blank'); + } + }, + successHandler(response) { + if(window.LARAVEL_VAPOR_ENABLED){ + if (response.src) { + window.location.href = response.src; + } + } }, }, mixins: [componentHandler] diff --git a/resources/assets/vue/components/accounting/sections/ImportedInvoiceMappedComponent.vue b/resources/assets/vue/components/accounting/sections/ImportedInvoiceMappedComponent.vue index 185da370..d861558d 100644 --- a/resources/assets/vue/components/accounting/sections/ImportedInvoiceMappedComponent.vue +++ b/resources/assets/vue/components/accounting/sections/ImportedInvoiceMappedComponent.vue @@ -125,10 +125,23 @@ downloadInvoiceMapped() { var arrDateTime = this.importedDate.split(" "); const fileName = 'importInvoiceMapping'; + const url = this.route('importedInvoiceMapped.export')+'?date='+arrDateTime[0]+'&time='+arrDateTime[1]+'&fileName='+fileName; - window.open(this.route('importedInvoiceMapped.export')+'?date='+arrDateTime[0]+'&time='+arrDateTime[1]+'&fileName='+fileName, '_blank'); + if(window.LARAVEL_VAPOR_ENABLED){ + return fetch(url, { + method: 'GET', + responseType: 'json', + }).then(response => { + if (response.src) { + window.location.href = response.src; + } + }); + } + else{ + window.open(url, '_blank'); + } }, } } - \ No newline at end of file + diff --git a/resources/assets/vue/components/accounting/sections/ImportedReceiptMappedComponent.vue b/resources/assets/vue/components/accounting/sections/ImportedReceiptMappedComponent.vue index 25db762e..12c38893 100644 --- a/resources/assets/vue/components/accounting/sections/ImportedReceiptMappedComponent.vue +++ b/resources/assets/vue/components/accounting/sections/ImportedReceiptMappedComponent.vue @@ -129,10 +129,23 @@ downloadInvoiceMapped() { var arrDateTime = this.importedDate.split(" "); const fileName = 'ReceiptMapped'; + const url = this.route('importedReceiptMapped.export')+'?date='+arrDateTime[0]+'&time='+arrDateTime[1]+'&fileName='+fileName; - window.open(this.route('importedReceiptMapped.export')+'?date='+arrDateTime[0]+'&time='+arrDateTime[1]+'&fileName='+fileName, '_blank'); + if(window.LARAVEL_VAPOR_ENABLED){ + return fetch(url, { + method: 'GET', + responseType: 'json', + }).then(response => { + if (response.src) { + window.location.href = response.src; + } + }); + } + else{ + window.open(url, '_blank'); + } }, } } - \ No newline at end of file + diff --git a/resources/assets/vue/components/accounting/sections/TransactionsMappingComponent.vue b/resources/assets/vue/components/accounting/sections/TransactionsMappingComponent.vue index f7073783..69acc77c 100644 --- a/resources/assets/vue/components/accounting/sections/TransactionsMappingComponent.vue +++ b/resources/assets/vue/components/accounting/sections/TransactionsMappingComponent.vue @@ -113,7 +113,7 @@
Amount
-
+
Select
@@ -273,7 +273,19 @@ export default { route += '&bankStatementTransactionId='+checkedStatementTransactions; } - window.open(route, '_blank'); + if(window.LARAVEL_VAPOR_ENABLED){ + return fetch(route, { + method: 'GET', + responseType: 'json', + }).then(response => { + if (response.src) { + window.location.href = response.src; + } + }); + } + else{ + window.open(route, '_blank'); + } }, exportReceiptToAutoCount(){ const checkedStatementTransactions = this.getCheckedStatementOwners(); @@ -285,7 +297,19 @@ export default { route += '&bankStatementTransactionId='+checkedStatementTransactions; } - window.open(route, '_blank'); + if(window.LARAVEL_VAPOR_ENABLED){ + return fetch(route, { + method: 'GET', + responseType: 'json', + }).then(response => { + if (response.src) { + window.location.href = response.src; + } + }); + } + else{ + window.open(route, '_blank'); + } }, getCheckedStatementOwners() { let bankStatementTransactionId = []; diff --git a/resources/assets/vue/components/bookings/elements/UploadDebtorExcelComponent.vue b/resources/assets/vue/components/bookings/elements/UploadDebtorExcelComponent.vue index a956a07c..5177cf38 100644 --- a/resources/assets/vue/components/bookings/elements/UploadDebtorExcelComponent.vue +++ b/resources/assets/vue/components/bookings/elements/UploadDebtorExcelComponent.vue @@ -72,10 +72,23 @@ this.submit(this.route('api.debtor.import'), 'post', this.section, true, false) }, downloadReport(){ - window.open(route('newDebtor.export'), '_blank'); + let route = route('newDebtor.export'); + if(window.LARAVEL_VAPOR_ENABLED){ + return fetch(route, { + method: 'GET', + responseType: 'json', + }).then(response => { + if (response.src) { + window.location.href = response.src; + } + }); + } + else{ + window.open(route, '_blank'); + } }, }, mixins: [ModalFromHandler] } - \ No newline at end of file + diff --git a/resources/assets/vue/components/bookings/forms/ExportBookingTransactionFormComponent.vue b/resources/assets/vue/components/bookings/forms/ExportBookingTransactionFormComponent.vue index 889ea3e7..eeb6bf62 100644 --- a/resources/assets/vue/components/bookings/forms/ExportBookingTransactionFormComponent.vue +++ b/resources/assets/vue/components/bookings/forms/ExportBookingTransactionFormComponent.vue @@ -77,8 +77,14 @@ export default { if(!this.validate()){ return; } var supplierIds = JSON.stringify(this.parameters.supplierIds); + let url = route('export.transactions.booking')+'?startDate='+this.parameters.startDate+'&endDate='+this.parameters.endDate+'&supplierIds='+supplierIds; - window.open(route('export.transactions.booking')+'?startDate='+this.parameters.startDate+'&endDate='+this.parameters.endDate+'&supplierIds='+supplierIds, '_blank'); + if(window.LARAVEL_VAPOR_ENABLED){ + this.submit(url, 'get', this.section, false, false); + } + else{ + window.open(url, '_blank'); + } }, updateList(supplierList){ let supplierIds = []; @@ -90,6 +96,13 @@ export default { this.parameters.supplierIds = supplierIds; this.parameters.supplierNames = supplierNames; }, + successHandler(response) { + if(window.LARAVEL_VAPOR_ENABLED){ + if (response.src) { + window.location.href = response.src; + } + } + }, }, mixins: [componentHandler] };