added eager loading to bulk actions

This commit is contained in:
Denis Duliçi 2021-06-27 22:08:02 +03:00
parent 77ab04db0c
commit fa4c2b2a5a
6 changed files with 42 additions and 17 deletions

View File

@ -9,6 +9,7 @@ use App\Traits\Jobs;
use App\Traits\Relationships;
use App\Utilities\Export;
use App\Utilities\Import;
use Illuminate\Support\Arr;
abstract class BulkAction
{
@ -39,9 +40,17 @@ abstract class BulkAction
],
];
public function getSelectedRecords($request)
public function getSelectedRecords($request, $relationships = null)
{
return $this->model::find($this->getSelectedInput($request));
if (empty($relationships)) {
$model = $this->model::query();
} else {
$relationships = Arr::wrap($relationships);
$model = $this->model::with($relationships);
}
return $model->find($this->getSelectedInput($request));
}
public function getSelectedInput($request)
@ -129,7 +138,7 @@ abstract class BulkAction
public function disableContacts($request)
{
$contacts = $this->getSelectedRecords($request);
$contacts = $this->getSelectedRecords($request, 'user');
foreach ($contacts as $contact) {
try {
@ -142,7 +151,7 @@ abstract class BulkAction
public function deleteContacts($request)
{
$contacts = $this->getSelectedRecords($request);
$contacts = $this->getSelectedRecords($request, 'user');
foreach ($contacts as $contact) {
try {
@ -155,7 +164,7 @@ abstract class BulkAction
public function deleteTransactions($request)
{
$transactions = $this->getSelectedRecords($request);
$transactions = $this->getSelectedRecords($request, 'category');
foreach ($transactions as $transaction) {
try {

View File

@ -31,7 +31,7 @@ class Users extends BulkAction
public function disable($request)
{
$users = $this->getSelectedRecords($request);
$users = $this->getSelectedRecords($request, 'contact');
foreach ($users as $user) {
try {

View File

@ -26,7 +26,9 @@ class Transfers extends BulkAction
public function destroy($request)
{
$transfers = $this->getSelectedRecords($request);
$transfers = $this->getSelectedRecords($request, [
'expense_transaction', 'income_transaction'
]);
foreach ($transfers as $transfer) {
try {

View File

@ -40,7 +40,7 @@ class Items extends BulkAction
public function destroy($request)
{
$items = $this->getSelectedRecords($request);
$items = $this->getSelectedRecords($request, 'taxes');
foreach ($items as $item) {
try {

View File

@ -47,7 +47,7 @@ class Bills extends BulkAction
{
$bills = $this->getSelectedRecords($request);
foreach ($bills as $bill) {// Already in transactions
foreach ($bills as $bill) {
if ($bill->status == 'paid') {
continue;
}
@ -61,6 +61,10 @@ class Bills extends BulkAction
$bills = $this->getSelectedRecords($request);
foreach ($bills as $bill) {
if ($bill->status == 'received') {
continue;
}
event(new DocumentReceived($bill));
}
}
@ -70,6 +74,10 @@ class Bills extends BulkAction
$bills = $this->getSelectedRecords($request);
foreach ($bills as $bill) {
if ($bill->status == 'cancelled') {
continue;
}
event(new DocumentCancelled($bill));
}
}
@ -89,7 +97,9 @@ class Bills extends BulkAction
public function destroy($request)
{
$bills = $this->getSelectedRecords($request);
$bills = $this->getSelectedRecords($request, [
'items', 'item_taxes', 'histories', 'transactions', 'recurring', 'totals'
]);
foreach ($bills as $bill) {
try {

View File

@ -48,7 +48,6 @@ class Invoices extends BulkAction
$invoices = $this->getSelectedRecords($request);
foreach ($invoices as $invoice) {
// Already in transactions
if ($invoice->status == 'paid') {
continue;
}
@ -62,6 +61,10 @@ class Invoices extends BulkAction
$invoices = $this->getSelectedRecords($request);
foreach ($invoices as $invoice) {
if ($invoice->status == 'sent') {
continue;
}
event(new DocumentSent($invoice));
}
}
@ -71,6 +74,10 @@ class Invoices extends BulkAction
$invoices = $this->getSelectedRecords($request);
foreach ($invoices as $invoice) {
if ($invoice->status == 'cancelled') {
continue;
}
event(new DocumentCancelled($invoice));
}
}
@ -86,14 +93,11 @@ class Invoices extends BulkAction
}
}
public function delete($request)
{
$this->destroy($request);
}
public function destroy($request)
{
$invoices = $this->getSelectedRecords($request);
$invoices = $this->getSelectedRecords($request, [
'items', 'item_taxes', 'histories', 'transactions', 'recurring', 'totals'
]);
foreach ($invoices as $invoice) {
try {