From 9578f7609bebc13f34a3af97db8f729e2781c091 Mon Sep 17 00:00:00 2001 From: Prashant Singh Date: Tue, 12 Mar 2019 12:13:48 +0530 Subject: [PATCH] export functionality refactored --- .../Admin/src/Exports/DataGridExport.php | 20 +++---- .../src/Http/Controllers/ExportController.php | 41 ++++++++----- .../Admin/src/Resources/lang/en/app.php | 4 +- .../Resources/views/customers/index.blade.php | 51 +---------------- .../Resources/views/export/export.blade.php | 57 +++++++++++++------ .../src/Resources/views/export/temp.blade.php | 18 ++++++ .../views/sales/invoices/index.blade.php | 47 +-------------- .../views/sales/orders/index.blade.php | 46 +-------------- .../views/sales/shipments/index.blade.php | 47 +-------------- .../views/tax/tax-rates/index.blade.php | 51 +---------------- 10 files changed, 104 insertions(+), 278 deletions(-) mode change 100755 => 100644 packages/Webkul/Admin/src/Resources/views/export/export.blade.php create mode 100755 packages/Webkul/Admin/src/Resources/views/export/temp.blade.php diff --git a/packages/Webkul/Admin/src/Exports/DataGridExport.php b/packages/Webkul/Admin/src/Exports/DataGridExport.php index c5b47fe70..9b6289b1e 100755 --- a/packages/Webkul/Admin/src/Exports/DataGridExport.php +++ b/packages/Webkul/Admin/src/Exports/DataGridExport.php @@ -21,7 +21,7 @@ class DataGridExport implements FromView, ShouldAutoSize * * @var mixed */ - public $gridData; + protected $gridData = array(); /** * Create a new instance. @@ -40,23 +40,17 @@ class DataGridExport implements FromView, ShouldAutoSize */ public function view(): View { - $pagination = false; - $results = []; - $columns = []; + $columns = array(); - foreach($this->gridData as $key => $data) { - if ($key == 'collection') { - $results = $data['data']; - } + foreach($this->gridData as $key => $gridData) { + $columns = array_keys((array) $gridData); - if ($key == 'columns') { - $columns = $data; - } + break; } - return view('admin::export.export', [ - 'results' => $results, + return view('admin::export.temp', [ 'columns' => $columns, + 'records' => $this->gridData, ]); } } \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Http/Controllers/ExportController.php b/packages/Webkul/Admin/src/Http/Controllers/ExportController.php index 0b59333a8..4b1cc6cab 100755 --- a/packages/Webkul/Admin/src/Http/Controllers/ExportController.php +++ b/packages/Webkul/Admin/src/Http/Controllers/ExportController.php @@ -37,28 +37,43 @@ class ExportController extends Controller public function export() { $criteria = request()->all(); + $format = $criteria['format']; $gridName = explode('\\', $criteria['gridName']); - $path = '\Webkul\Admin\DataGrids'.'\\'.last($gridName); - $gridInstance = new $path; + $proceed = false; - dd($gridInstance->export()); + foreach($this->exportableGrids as $exportableGrid) { + if(last($gridName) == $exportableGrid) { + $proceed = true; + } + } - die; - // $results = request()->input('gridData'); + if($proceed) { + $gridInstance = new $path; - // $data = json_decode($results, true); + $records = array(); + $records = $gridInstance->export(); - // $results = (object) $data; + if(count($records) == 0) { + session()->flash('warning', trans('admin::app.export.no-records')); - // $file_name = request()->all('file_name'); + return redirect()->back(); + } + + if ($format == 'csv') { + return Excel::download(new DataGridExport($records), last($gridName).'.csv'); + } else if($format == 'xls') { + return Excel::download(new DataGridExport($records), last($gridName).'.xlsx'); + } else { + session()->flash('warning', trans('admin::app.export.illegal-format')); + + return redirect()->back(); + } + } else { + return redirect()->back(); + } - // if (request()->all()['format'] == 'csv') { - // return Excel::download(new DataGridExport($results), $file_name.'.csv'); - // } else { - // return Excel::download(new DataGridExport($results), $file_name.'.xlsx'); - // } } } \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/lang/en/app.php b/packages/Webkul/Admin/src/Resources/lang/en/app.php index b9ba34a4d..b4aa40fd1 100755 --- a/packages/Webkul/Admin/src/Resources/lang/en/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php @@ -786,7 +786,9 @@ return [ 'duplicate-error' => 'Identifier must be unique, duplicate identifier :identifier at row :position.', 'enough-row-error' => 'file has not enough rows', 'allowed-type' => 'Allowed Type :', - 'file-type' => 'csv, xls, xlsx.' + 'file-type' => 'csv, xls, xlsx.', + 'no-records' => 'Nothing to export', + 'illegal-format' => 'Error! This type of format is either not supported or its illegal format' ], 'response' => [ diff --git a/packages/Webkul/Admin/src/Resources/views/customers/index.blade.php b/packages/Webkul/Admin/src/Resources/views/customers/index.blade.php index c8959ca85..9c3c6b8d2 100755 --- a/packages/Webkul/Admin/src/Resources/views/customers/index.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/customers/index.blade.php @@ -26,8 +26,8 @@
- @inject('customer','Webkul\Admin\DataGrids\CustomerDataGrid') - {!! $customer->render() !!} + @inject('customerGrid','Webkul\Admin\DataGrids\CustomerDataGrid') + {!! $customerGrid->render() !!}
@@ -41,51 +41,6 @@ @stop @push('scripts') - - - - - + @include('admin::export.export', ['gridName' => $customerGrid]) @endpush diff --git a/packages/Webkul/Admin/src/Resources/views/export/export.blade.php b/packages/Webkul/Admin/src/Resources/views/export/export.blade.php old mode 100755 new mode 100644 index 55e6e9628..0ef3cb25a --- a/packages/Webkul/Admin/src/Resources/views/export/export.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/export/export.blade.php @@ -1,18 +1,39 @@ - - - - @foreach ($columns as $column) - - @endforeach - - - - @foreach ($results as $result) - - @foreach ($columns as $column) - - @endforeach - - @endforeach - -
{{ $column['index'] }}
{{ $result[$column['index']] }}
\ No newline at end of file + + + \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/export/temp.blade.php b/packages/Webkul/Admin/src/Resources/views/export/temp.blade.php new file mode 100755 index 000000000..077aef980 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/export/temp.blade.php @@ -0,0 +1,18 @@ + + + + @foreach ($columns as $key => $value) + + @endforeach + + + + @foreach ($records as $record) + + @foreach($record as $column => $value) + + @endforeach + + @endforeach + +
{{ $value }}
{{ $value }}
\ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/sales/invoices/index.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/invoices/index.blade.php index 87b2ea8a7..42b871faf 100755 --- a/packages/Webkul/Admin/src/Resources/views/sales/invoices/index.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/sales/invoices/index.blade.php @@ -37,50 +37,5 @@ @stop @push('scripts') - - - - - + @include('admin::export.export', ['gridName' => $orderInvoicesGrid]) @endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/sales/orders/index.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/orders/index.blade.php index 317e1c907..62a4109db 100755 --- a/packages/Webkul/Admin/src/Resources/views/sales/orders/index.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/sales/orders/index.blade.php @@ -37,49 +37,5 @@ @stop @push('scripts') - - - - - + @include('admin::export.export', ['gridName' => $orderGrid]) @endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/sales/shipments/index.blade.php b/packages/Webkul/Admin/src/Resources/views/sales/shipments/index.blade.php index a1b586800..548dd65d3 100755 --- a/packages/Webkul/Admin/src/Resources/views/sales/shipments/index.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/sales/shipments/index.blade.php @@ -37,50 +37,5 @@ @stop @push('scripts') - - - - - + @include('admin::export.export', ['gridName' => $orderShipmentsGrid]) @endpush \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/views/tax/tax-rates/index.blade.php b/packages/Webkul/Admin/src/Resources/views/tax/tax-rates/index.blade.php index d079a38f6..b9933bede 100755 --- a/packages/Webkul/Admin/src/Resources/views/tax/tax-rates/index.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/tax/tax-rates/index.blade.php @@ -32,8 +32,8 @@
- @inject('taxrates', 'Webkul\Admin\DataGrids\TaxRateDataGrid') - {!! $taxrates->render() !!} + @inject('taxRateGrid', 'Webkul\Admin\DataGrids\TaxRateDataGrid') + {!! $taxRateGrid->render() !!}
@@ -69,50 +69,5 @@ @endsection @push('scripts') - - - - - + @include('admin::export.export', ['gridName' => $taxRateGrid]) @endpush \ No newline at end of file