Skip to content

Commit

Permalink
added scope for collection export
Browse files Browse the repository at this point in the history
  • Loading branch information
denisdulici committed Jun 27, 2021
1 parent 0c6dd49 commit 9b308e1
Show file tree
Hide file tree
Showing 23 changed files with 54 additions and 151 deletions.
31 changes: 31 additions & 0 deletions app/Abstracts/Model.php
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,37 @@ public function scopeCollect($query, $sort = 'name')
return $query->paginate($limit);
}

/**
* Scope to export the rows of the current page filtered and sorted.
*
* @param \Illuminate\Database\Eloquent\Builder $query
* @param $ids
* @param $sort
* @param $id_field
*
* @return \Illuminate\Support\LazyCollection
*/
public function scopeCollectForExport($query, $ids = [], $sort = 'name', $id_field = 'id')
{
$request = request();

if (!empty($ids)) {
$query->whereIn($id_field, (array) $ids);
}

$search = $request->get('search');

$query->usingSearchString($search)->sortable($sort);

$page = (int) $request->get('page');
$limit = (int) $request->get('limit', setting('default.list_limit', '25'));
$offset = $page ? ($page - 1) * $limit : 0;

$query->offset($offset)->limit($limit);

return $query->cursor();
}

/**
* Scope to only include active models.
*
Expand Down
8 changes: 1 addition & 7 deletions app/Exports/Banking/Transactions.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,7 @@ class Transactions extends Export implements WithColumnFormatting
{
public function collection()
{
$model = Model::with('account', 'category', 'contact', 'document')->usingSearchString(request('search'));

if (!empty($this->ids)) {
$model->whereIn('id', (array) $this->ids);
}

return $model->cursor();
return Model::with('account', 'category', 'contact', 'document')->collectForExport($this->ids, ['paid_at' => 'desc']);
}

public function map($model): array
Expand Down
10 changes: 2 additions & 8 deletions app/Exports/Banking/Transfers.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,12 @@ class Transfers extends Export implements WithColumnFormatting
{
public function collection()
{
$model = Model::with(
return Model::with(
'expense_transaction',
'expense_transaction.account',
'income_transaction',
'income_transaction.account'
)->usingSearchString(request('search'));

if (!empty($this->ids)) {
$model->whereIn('id', (array) $this->ids);
}

return $model->cursor();
)->collectForExport($this->ids);
}

public function map($model): array
Expand Down
8 changes: 1 addition & 7 deletions app/Exports/Common/Sheets/ItemTaxes.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,7 @@ class ItemTaxes extends Export
{
public function collection()
{
$model = Model::with('item', 'tax')->usingSearchString(request('search'));

if (!empty($this->ids)) {
$model->whereIn('item_id', (array) $this->ids);
}

return $model->cursor();
return Model::with('item', 'tax')->collectForExport($this->ids, null, 'item_id');
}

public function map($model): array
Expand Down
8 changes: 1 addition & 7 deletions app/Exports/Common/Sheets/Items.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,7 @@ class Items extends Export
{
public function collection()
{
$model = Model::with('category')->usingSearchString(request('search'));

if (!empty($this->ids)) {
$model->whereIn('id', (array) $this->ids);
}

return $model->cursor();
return Model::with('category')->collectForExport($this->ids);
}

public function map($model): array
Expand Down
8 changes: 1 addition & 7 deletions app/Exports/Purchases/Payments.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,7 @@ class Payments extends Export implements WithColumnFormatting
{
public function collection()
{
$model = Model::with('account', 'bill', 'category', 'contact')->expense()->usingSearchString(request('search'));

if (!empty($this->ids)) {
$model->whereIn('id', (array) $this->ids);
}

return $model->cursor();
return Model::with('account', 'bill', 'category', 'contact')->expense()->collectForExport($this->ids, ['paid_at' => 'desc']);
}

public function map($model): array
Expand Down
8 changes: 1 addition & 7 deletions app/Exports/Purchases/Sheets/BillHistories.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,7 @@ class BillHistories extends Export
{
public function collection()
{
$model = Model::bill()->with('document')->usingSearchString(request('search'));

if (!empty($this->ids)) {
$model->whereIn('document_id', (array) $this->ids);
}

return $model->cursor();
return Model::with('document')->bill()->collectForExport($this->ids, null, 'document_id');
}

public function map($model): array
Expand Down
8 changes: 1 addition & 7 deletions app/Exports/Purchases/Sheets/BillItemTaxes.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,7 @@ class BillItemTaxes extends Export
{
public function collection()
{
$model = Model::bill()->with('document', 'item', 'tax')->usingSearchString(request('search'));

if (!empty($this->ids)) {
$model->whereIn('document_id', (array) $this->ids);
}

return $model->cursor();
return Model::with('document', 'item', 'tax')->bill()->collectForExport($this->ids, null, 'document_id');
}

public function map($model): array
Expand Down
8 changes: 1 addition & 7 deletions app/Exports/Purchases/Sheets/BillItems.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,7 @@ class BillItems extends Export
{
public function collection()
{
$model = Model::bill()->with('document', 'item')->usingSearchString(request('search'));

if (!empty($this->ids)) {
$model->whereIn('document_id', (array) $this->ids);
}

return $model->cursor();
return Model::with('document', 'item')->bill()->collectForExport($this->ids, null, 'document_id');
}

public function map($model): array
Expand Down
8 changes: 1 addition & 7 deletions app/Exports/Purchases/Sheets/BillTotals.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,7 @@ class BillTotals extends Export
{
public function collection()
{
$model = Model::bill()->with('document')->usingSearchString(request('search'));

if (!empty($this->ids)) {
$model->whereIn('document_id', (array) $this->ids);
}

return $model->cursor();
return Model::with('document')->bill()->collectForExport($this->ids, null, 'document_id');
}

public function map($model): array
Expand Down
8 changes: 1 addition & 7 deletions app/Exports/Purchases/Sheets/BillTransactions.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,7 @@ class BillTransactions extends Export implements WithColumnFormatting
{
public function collection()
{
$model = Model::with('account', 'category', 'contact', 'document')->expense()->isDocument()->usingSearchString(request('search'));

if (!empty($this->ids)) {
$model->whereIn('document_id', (array) $this->ids);
}

return $model->cursor();
return Model::with('account', 'category', 'contact', 'document')->expense()->isDocument()->collectForExport($this->ids, ['paid_at' => 'desc'], 'document_id');
}

public function map($model): array
Expand Down
8 changes: 1 addition & 7 deletions app/Exports/Purchases/Sheets/Bills.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,7 @@ class Bills extends Export implements WithColumnFormatting
{
public function collection()
{
$model = Model::bill()->with('category')->usingSearchString(request('search'));

if (!empty($this->ids)) {
$model->whereIn('id', (array) $this->ids);
}

return $model->cursor();
return Model::with('category')->bill()->collectForExport($this->ids, ['document_number' => 'desc']);
}

public function map($model): array
Expand Down
8 changes: 1 addition & 7 deletions app/Exports/Purchases/Vendors.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,7 @@ class Vendors extends Export
{
public function collection()
{
$model = Model::type('vendor')->usingSearchString(request('search'));

if (!empty($this->ids)) {
$model->whereIn('id', (array) $this->ids);
}

return $model->cursor();
return Model::vendor()->collectForExport($this->ids);
}

public function fields(): array
Expand Down
8 changes: 1 addition & 7 deletions app/Exports/Sales/Customers.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,7 @@ class Customers extends Export
{
public function collection()
{
$model = Model::type('customer')->usingSearchString(request('search'));

if (!empty($this->ids)) {
$model->whereIn('id', (array) $this->ids);
}

return $model->cursor();
return Model::customer()->collectForExport($this->ids);
}

public function fields(): array
Expand Down
8 changes: 1 addition & 7 deletions app/Exports/Sales/Revenues.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,7 @@ class Revenues extends Export implements WithColumnFormatting
{
public function collection()
{
$model = Model::with('account', 'category', 'contact', 'invoice')->income()->usingSearchString(request('search'));

if (!empty($this->ids)) {
$model->whereIn('id', (array) $this->ids);
}

return $model->cursor();
return Model::with('account', 'category', 'contact', 'invoice')->income()->collectForExport($this->ids, ['paid_at' => 'desc']);
}

public function map($model): array
Expand Down
8 changes: 1 addition & 7 deletions app/Exports/Sales/Sheets/InvoiceHistories.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,7 @@ class InvoiceHistories extends Export
{
public function collection()
{
$model = Model::invoice()->with('document')->usingSearchString(request('search'));

if (!empty($this->ids)) {
$model->whereIn('document_id', (array) $this->ids);
}

return $model->cursor();
return Model::with('document')->invoice()->collectForExport($this->ids, null, 'document_id');
}

public function map($model): array
Expand Down
8 changes: 1 addition & 7 deletions app/Exports/Sales/Sheets/InvoiceItemTaxes.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,7 @@ class InvoiceItemTaxes extends Export
{
public function collection()
{
$model = Model::invoice()->with('document', 'item', 'tax')->usingSearchString(request('search'));

if (!empty($this->ids)) {
$model->whereIn('document_id', (array) $this->ids);
}

return $model->cursor();
return Model::with('document', 'item', 'tax')->invoice()->collectForExport($this->ids, null, 'document_id');
}

public function map($model): array
Expand Down
8 changes: 1 addition & 7 deletions app/Exports/Sales/Sheets/InvoiceItems.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,7 @@ class InvoiceItems extends Export
{
public function collection()
{
$model = Model::invoice()->with('document', 'item')->usingSearchString(request('search'));

if (!empty($this->ids)) {
$model->whereIn('document_id', (array) $this->ids);
}

return $model->cursor();
return Model::with('document', 'item')->invoice()->collectForExport($this->ids, null, 'document_id');
}

public function map($model): array
Expand Down
8 changes: 1 addition & 7 deletions app/Exports/Sales/Sheets/InvoiceTotals.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,7 @@ class InvoiceTotals extends Export
{
public function collection()
{
$model = Model::invoice()->with('document')->usingSearchString(request('search'));

if (!empty($this->ids)) {
$model->whereIn('document_id', (array) $this->ids);
}

return $model->cursor();
return Model::with('document')->invoice()->collectForExport($this->ids, null, 'document_id');
}

public function map($model): array
Expand Down
10 changes: 1 addition & 9 deletions app/Exports/Sales/Sheets/InvoiceTransactions.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,14 @@

use App\Abstracts\Export;
use App\Models\Banking\Transaction as Model;
use App\Models\Document\Document;
use Illuminate\Support\Str;
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;

class InvoiceTransactions extends Export implements WithColumnFormatting
{
public function collection()
{
$model = Model::with('account', 'category', 'contact', 'document')->income()->isDocument()->usingSearchString(request('search'));

if (!empty($this->ids)) {
$model->whereIn('document_id', (array) $this->ids);
}

return $model->cursor();
return Model::with('account', 'category', 'contact', 'document')->income()->isDocument()->collectForExport($this->ids, ['paid_at' => 'desc'], 'document_id');
}

public function map($model): array
Expand Down
8 changes: 1 addition & 7 deletions app/Exports/Sales/Sheets/Invoices.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,7 @@ class Invoices extends Export implements WithColumnFormatting
{
public function collection()
{
$model = Model::invoice()->with('category')->usingSearchString(request('search'));

if (!empty($this->ids)) {
$model->whereIn('id', (array) $this->ids);
}

return $model->cursor();
return Model::with('category')->invoice()->collectForExport($this->ids, ['document_number' => 'desc']);
}

public function map($model): array
Expand Down
8 changes: 1 addition & 7 deletions app/Exports/Settings/Categories.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,7 @@ class Categories extends Export
{
public function collection()
{
$model = Model::usingSearchString(request('search'));

if (!empty($this->ids)) {
$model->whereIn('id', (array) $this->ids);
}

return $model->cursor();
return Model::collectForExport($this->ids);
}

public function fields(): array
Expand Down
2 changes: 1 addition & 1 deletion resources/lang/en-GB/messages.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
'imported' => ':type imported!',
'import_queued' => ':type import has been scheduled! You will receive an email when it is finished.',
'exported' => ':type exported!',
'export_queued' => ':type export has been scheduled! You will receive an email when it is ready to download.',
'export_queued' => ':type export of the current page has been scheduled! You will receive an email when it is ready to download.',
'enabled' => ':type enabled!',
'disabled' => ':type disabled!',
],
Expand Down

0 comments on commit 9b308e1

Please sign in to comment.