diff --git a/app/Abstracts/BulkAction.php b/app/Abstracts/BulkAction.php index 9e31f8348..c89c91264 100644 --- a/app/Abstracts/BulkAction.php +++ b/app/Abstracts/BulkAction.php @@ -2,6 +2,9 @@ namespace App\Abstracts; +use App\Jobs\Common\DeleteContact; +use App\Jobs\Common\UpdateContact; +use App\Jobs\Banking\DeleteTransaction; use App\Traits\Jobs; use App\Traits\Relationships; use Artisan; @@ -16,24 +19,34 @@ abstract class BulkAction 'enable' => [ 'name' => 'general.enable', 'message' => 'bulk_actions.message.enable', - 'permission' => 'update-common-items' + 'permission' => 'update-common-items', ], 'disable' => [ 'name' => 'general.disable', 'message' => 'bulk_actions.message.disable', - 'permission' => 'update-common-items' - ], - 'export' => [ - 'name' => 'general.export', - 'message' => 'bulk_actions.message.exports', + 'permission' => 'update-common-items', ], 'delete' => [ 'name' => 'general.delete', - 'message' => 'bulk_actions.message.deletes', - 'permission' => 'delete-common-items' - ] + 'message' => 'bulk_actions.message.delete', + 'permission' => 'delete-common-items', + ], + 'export' => [ + 'name' => 'general.export', + 'message' => 'bulk_actions.message.export', + ], ]; + public function getSelectedRecords($request) + { + return $this->model::find($this->getSelectedInput($request)); + } + + public function getSelectedInput($request) + { + return $request->get('selected', []); + } + /** * Duplicate the specified resource. * @@ -43,9 +56,7 @@ abstract class BulkAction */ public function duplicate($request) { - $selected = $request->get('selected', []); - - $items = $this->model::find($selected); + $items = $this->getSelectedRecords($request); foreach ($items as $item) { $item->duplicate(); @@ -61,9 +72,7 @@ abstract class BulkAction */ public function enable($request) { - $selected = $request->get('selected', []); - - $items = $this->model::find($selected); + $items = $this->getSelectedRecords($request); foreach ($items as $item) { $item->enabled = 1; @@ -80,9 +89,7 @@ abstract class BulkAction */ public function disable($request) { - $selected = $request->get('selected', []); - - $items = $this->model::find($selected); + $items = $this->getSelectedRecords($request); foreach ($items as $item) { $item->enabled = 0; @@ -111,9 +118,7 @@ abstract class BulkAction */ public function destroy($request) { - $selected = $request->get('selected', []); - - $items = $this->model::find($selected); + $items = $this->getSelectedRecords($request); foreach ($items as $item) { $item->delete(); @@ -121,4 +126,43 @@ abstract class BulkAction Artisan::call('cache:clear'); } + + public function disableContacts($request) + { + $contacts = $this->getSelectedRecords($request); + + foreach ($contacts as $contact) { + try { + $this->dispatch(new UpdateContact($contact, request()->merge(['enabled' => 0]))); + } catch (\Exception $e) { + flash($e->getMessage())->error(); + } + } + } + + public function deleteContacts($request) + { + $contacts = $this->getSelectedRecords($request); + + foreach ($contacts as $contact) { + try { + $this->dispatch(new DeleteContact($contact)); + } catch (\Exception $e) { + flash($e->getMessage())->error(); + } + } + } + + public function deleteTransactions($request) + { + $transactions = $this->getSelectedRecords($request); + + foreach ($transactions as $transaction) { + try { + $this->dispatch(new DeleteTransaction($transaction)); + } catch (\Exception $e) { + flash($e->getMessage())->error(); + } + } + } } diff --git a/app/BulkActions/Auth/Permissions.php b/app/BulkActions/Auth/Permissions.php index a026b38a7..26c2b7bc6 100644 --- a/app/BulkActions/Auth/Permissions.php +++ b/app/BulkActions/Auth/Permissions.php @@ -12,8 +12,8 @@ class Permissions extends BulkAction public $actions = [ 'delete' => [ 'name' => 'general.delete', - 'message' => 'bulk_actions.message.deletes', - 'permission' => 'delete-auth-permissions' - ] + 'message' => 'bulk_actions.message.delete', + 'permission' => 'delete-auth-permissions', + ], ]; } diff --git a/app/BulkActions/Auth/Roles.php b/app/BulkActions/Auth/Roles.php index 01b95f6b4..6ece570de 100644 --- a/app/BulkActions/Auth/Roles.php +++ b/app/BulkActions/Auth/Roles.php @@ -12,8 +12,8 @@ class Roles extends BulkAction public $actions = [ 'delete' => [ 'name' => 'general.delete', - 'message' => 'bulk_actions.message.deletes', - 'permission' => 'delete-auth-roles' - ] + 'message' => 'bulk_actions.message.delete', + 'permission' => 'delete-auth-roles', + ], ]; } diff --git a/app/BulkActions/Auth/Users.php b/app/BulkActions/Auth/Users.php index 82aa101ff..9476e2c98 100644 --- a/app/BulkActions/Auth/Users.php +++ b/app/BulkActions/Auth/Users.php @@ -4,6 +4,7 @@ namespace App\BulkActions\Auth; use App\Abstracts\BulkAction; use App\Jobs\Auth\DeleteUser; +use App\Jobs\Auth\UpdateUser; use App\Models\Auth\User; class Users extends BulkAction @@ -14,54 +15,42 @@ class Users extends BulkAction 'enable' => [ 'name' => 'general.enable', 'message' => 'bulk_actions.message.enable', - 'permission' => 'update-auth-users' + 'permission' => 'update-auth-users', ], 'disable' => [ 'name' => 'general.disable', 'message' => 'bulk_actions.message.disable', - 'permission' => 'update-auth-users' + 'permission' => 'update-auth-users', ], 'delete' => [ 'name' => 'general.delete', - 'message' => 'bulk_actions.message.deletes', - 'permission' => 'delete-auth-users' - ] + 'message' => 'bulk_actions.message.delete', + 'permission' => 'delete-auth-users', + ], ]; public function disable($request) { - $selected = $request->get('selected', []); - - $users = $this->model::find($selected); + $users = $this->getSelectedRecords($request); foreach ($users as $user) { - // Can't disable yourself - if ($user->id == user()->id) { - continue; - //$this->response->errorMethodNotAllowed(trans('auth.error.self_delete')); + try { + $this->dispatch(new UpdateUser($user, $request->merge(['enabled' => 0]))); + } catch (\Exception $e) { + flash($e->getMessage())->error(); } - - $user->enabled = 0; - $user->save(); } } - public function delete($request) - { - $this->destroy($request); - } - public function destroy($request) { - $selected = $request->get('selected', []); - - $users = $this->model::find($selected); + $users = $this->getSelectedRecords($request); foreach ($users as $user) { try { $this->dispatch(new DeleteUser($user)); } catch (\Exception $e) { - return $e->getMessage(); + flash($e->getMessage())->error(); } } } diff --git a/app/BulkActions/Banking/Accounts.php b/app/BulkActions/Banking/Accounts.php index 935a96057..96bc53dbf 100644 --- a/app/BulkActions/Banking/Accounts.php +++ b/app/BulkActions/Banking/Accounts.php @@ -15,51 +15,42 @@ class Accounts extends BulkAction 'enable' => [ 'name' => 'general.enable', 'message' => 'bulk_actions.message.enable', - 'permission' => 'update-banking-accounts' + 'permission' => 'update-banking-accounts', ], 'disable' => [ 'name' => 'general.disable', 'message' => 'bulk_actions.message.disable', - 'permission' => 'update-banking-accounts' + 'permission' => 'update-banking-accounts', ], 'delete' => [ 'name' => 'general.delete', - 'message' => 'bulk_actions.message.deletes', - 'permission' => 'delete-banking-accounts' - ] + 'message' => 'bulk_actions.message.delete', + 'permission' => 'delete-banking-accounts', + ], ]; public function disable($request) { - $selected = $request->get('selected', []); - - $accounts = $this->model::find($selected); + $accounts = $this->getSelectedRecords($request); foreach ($accounts as $account) { try { - $this->dispatch(new UpdateAccount($account, request()->merge(['enabled' => 1]))); + $this->dispatch(new UpdateAccount($account, $request->merge(['enabled' => 0]))); } catch (\Exception $e) { - return $e->getMessage(); + flash($e->getMessage())->error(); } } } - public function delete($request) - { - $this->destroy($request); - } - public function destroy($request) { - $selected = $request->get('selected', []); - - $accounts = $this->model::find($selected); + $accounts = $this->getSelectedRecords($request); foreach ($accounts as $account) { try { $this->dispatch(new DeleteAccount($account)); } catch (\Exception $e) { - return $e->getMessage(); + flash($e->getMessage())->error(); } } } diff --git a/app/BulkActions/Banking/Reconciliations.php b/app/BulkActions/Banking/Reconciliations.php index 2fe8555fd..024614715 100644 --- a/app/BulkActions/Banking/Reconciliations.php +++ b/app/BulkActions/Banking/Reconciliations.php @@ -14,25 +14,23 @@ class Reconciliations extends BulkAction 'enable' => [ 'name' => 'general.enable', 'message' => 'bulk_actions.message.enable', - 'permission' => 'update-banking-reconciliations' + 'permission' => 'update-banking-reconciliations', ], 'disable' => [ 'name' => 'general.disable', 'message' => 'bulk_actions.message.disable', - 'permission' => 'update-banking-reconciliations' + 'permission' => 'update-banking-reconciliations', ], 'delete' => [ 'name' => 'general.delete', - 'message' => 'bulk_actions.message.deletes', - 'permission' => 'delete-banking-reconciliations' - ] + 'message' => 'bulk_actions.message.delete', + 'permission' => 'delete-banking-reconciliations', + ], ]; public function enable($request) { - $selected = $request->get('selected', []); - - $reconciliations = $this->model::find($selected); + $reconciliations = $this->getSelectedRecords($request); foreach ($reconciliations as $reconciliation) { $reconciliation->enabled = 1; @@ -49,9 +47,7 @@ class Reconciliations extends BulkAction public function disable($request) { - $selected = $request->get('selected', []); - - $reconciliations = $this->model::find($selected); + $reconciliations = $this->getSelectedRecords($request); foreach ($reconciliations as $reconciliation) { $reconciliation->enabled = 0; @@ -66,16 +62,9 @@ class Reconciliations extends BulkAction } } - public function delete($request) - { - $this->destroy($request); - } - public function destroy($request) { - $selected = $request->get('selected', []); - - $reconciliations = $this->model::find($selected); + $reconciliations = $this->getSelectedRecords($request); foreach ($reconciliations as $reconciliation) { $reconciliation->delete(); diff --git a/app/BulkActions/Banking/Transfers.php b/app/BulkActions/Banking/Transfers.php index 09efa0fbd..bc59b4714 100644 --- a/app/BulkActions/Banking/Transfers.php +++ b/app/BulkActions/Banking/Transfers.php @@ -14,23 +14,20 @@ class Transfers extends BulkAction 'delete' => [ 'name' => 'general.delete', 'message' => 'bulk_action.message.deletes', - 'permission' => 'delete-banking-transfers' - ] + 'permission' => 'delete-banking-transfers', + ], ]; - public function delete($request) - { - $this->destroy($request); - } - public function destroy($request) { - $selected = $request->get('selected', []); - - $transfers = $this->model::find($selected); + $transfers = $this->getSelectedRecords($request); foreach ($transfers as $transfer) { - $this->dispatch(new DeleteTransfer($transfer)); + try { + $this->dispatch(new DeleteTransfer($transfer)); + } catch (\Exception $e) { + flash($e->getMessage())->error(); + } } } } diff --git a/app/BulkActions/Common/Companies.php b/app/BulkActions/Common/Companies.php index c1f5e43c8..1a385ec37 100644 --- a/app/BulkActions/Common/Companies.php +++ b/app/BulkActions/Common/Companies.php @@ -3,6 +3,8 @@ namespace App\BulkActions\Common; use App\Abstracts\BulkAction; +use App\Jobs\Common\DeleteCompany; +use App\Jobs\Common\UpdateCompany; use App\Models\Common\Company; class Companies extends BulkAction @@ -13,104 +15,56 @@ class Companies extends BulkAction 'enable' => [ 'name' => 'general.enable', 'message' => 'bulk_actions.message.enable', - 'permission' => 'update-common-companies' + 'permission' => 'update-common-companies', ], 'disable' => [ 'name' => 'general.disable', 'message' => 'bulk_actions.message.disable', - 'permission' => 'update-common-companies' + 'permission' => 'update-common-companies', ], 'delete' => [ 'name' => 'general.delete', - 'message' => 'bulk_actions.message.deletes', - 'permission' => 'delete-common-companies' - ] + 'message' => 'bulk_actions.message.delete', + 'permission' => 'delete-common-companies', + ], ]; public function enable($request) { - try { - $selected = $request->get('selected', []); + $companies = $this->getSelectedRecords($request); - $companies = $this->model::find($selected); - - foreach ($companies as $company) { - // Check if user can access company - $this->owner($company); - - $company->enabled = 1; - $company->save(); + foreach ($companies as $company) { + try { + $this->dispatch(new UpdateCompany($company, $request->merge(['enabled' => 1]))); + } catch (\Exception $e) { + flash($e->getMessage())->error(); } - - $message = trans('messages.success.enabled', ['type' => $company->name]); - - return $this->itemResponse($company->fresh(), new Transformer(), $message); - } catch (\HttpException $e) { - $this->response->errorUnauthorized(trans('companies.error.not_user_company')); } } public function disable($request) { - try { - $selected = $request->get('selected', []); + $companies = $this->getSelectedRecords($request); - $companies = $this->model::find($selected); - - foreach ($companies as $company) { - // Check if user can access company - $this->owner($company); - - $company->enabled = 0; - $company->save(); + foreach ($companies as $company) { + try { + $this->dispatch(new UpdateCompany($company, $request->merge(['enabled' => 0]))); + } catch (\Exception $e) { + flash($e->getMessage())->error(); } - } catch (\HttpException $e) { - $this->response->errorUnauthorized(trans('companies.error.not_user_company')); } } - public function delete($request) - { - $this->destroy($request); - } - public function destroy($request) { - $selected = $request->get('selected', []); - - $companies = $this->model::find($selected); + $companies = $this->getSelectedRecords($request); foreach ($companies as $company) { - // Can't delete active company - if ($company->id == session('company_id')) { - $content = trans('companies.error.delete_active'); - - return new Response($content, 422); - } - try { - // Check if user can access company - $this->owner($company); - - $company->delete(); - - $message = trans('messages.success.deleted', ['type' => $company->name]); - - flash($message)->success(); - } catch (\HttpException $e) { - $this->response->errorUnauthorized(trans('companies.error.not_user_company')); + $this->dispatch(new DeleteCompany($company)); + } catch (\Exception $e) { + flash($e->getMessage())->error(); } } } - - public function owner(Company $company) - { - $companies = user()->companies()->pluck('id')->toArray(); - - if (in_array($company->id, $companies)) { - return new Response(''); - } - - $this->response->errorUnauthorized(trans('companies.error.not_user_company')); - } } diff --git a/app/BulkActions/Common/Items.php b/app/BulkActions/Common/Items.php index fbdaa0926..010357706 100644 --- a/app/BulkActions/Common/Items.php +++ b/app/BulkActions/Common/Items.php @@ -4,6 +4,8 @@ namespace App\BulkActions\Common; use App\Abstracts\BulkAction; use App\Exports\Common\Items as Export; +use App\Jobs\Common\DeleteItem; +use App\Jobs\Common\UpdateItem; use App\Models\Common\Item; class Items extends BulkAction @@ -14,76 +16,46 @@ class Items extends BulkAction 'enable' => [ 'name' => 'general.enable', 'message' => 'bulk_actions.message.enable', - 'permission' => 'update-common-items' + 'permission' => 'update-common-items', ], 'disable' => [ 'name' => 'general.disable', 'message' => 'bulk_actions.message.disable', - 'permission' => 'update-common-items' + 'permission' => 'update-common-items', ], 'duplicate' => [ 'name' => 'general.duplicate', 'message' => 'bulk_actions.message.duplicate', 'permission' => 'create-common-items', - 'multiple' => true - ], - 'export' => [ - 'name' => 'general.export', - 'message' => 'bulk_actions.message.exports', + 'multiple' => true, ], 'delete' => [ 'name' => 'general.delete', - 'message' => 'bulk_actions.message.deletes', - 'permission' => 'delete-common-items' - ] + 'message' => 'bulk_actions.message.delete', + 'permission' => 'delete-common-items', + ], + 'export' => [ + 'name' => 'general.export', + 'message' => 'bulk_actions.message.export', + ], ]; - /** - * Remove the specified resource from storage. - * - * @param $id - * - * @return Response - */ - public function delete($request) - { - $this->destroy($request); - } - public function destroy($request) { - $selected = $request->get('selected', []); - - $items = $this->model::find($selected); + $items = $this->getSelectedRecords($request); foreach ($items as $item) { - $relationships = $this->countRelationships($item, [ - 'invoice_items' => 'invoices', - 'bill_items' => 'bills', - ]); - - if (empty($relationships)) { - $item->delete(); - - $message = trans('messages.success.deleted', ['type' => $item->name]); - - flash($message)->success(); - } else { - $message = trans('messages.warning.deleted', ['name' => $item->name, 'text' => implode(', ', $relationships)]); - - $this->response->errorUnauthorized($message); + try { + $this->dispatch(new DeleteItem($item)); + } catch (\Exception $e) { + flash($e->getMessage())->error(); } } } - /** - * Export the specified resource. - * - * @return Response - */ public function export($request) { - $selected = $request->get('selected', []); + $selected = $this->getSelectedInput($request); return \Excel::download(new Export($selected), trans_choice('general.items', 2) . '.xlsx'); } diff --git a/app/BulkActions/Expenses/Bills.php b/app/BulkActions/Expenses/Bills.php index 370ada7c1..042c56bdf 100644 --- a/app/BulkActions/Expenses/Bills.php +++ b/app/BulkActions/Expenses/Bills.php @@ -4,9 +4,9 @@ namespace App\BulkActions\Expenses; use App\Abstracts\BulkAction; use App\Exports\Expenses\Bills as Export; +use App\Jobs\Expense\CreateBillHistory; use App\Jobs\Expense\DeleteBill; use App\Models\Expense\Bill; -use App\Models\Expense\BillHistory; class Bills extends BulkAction { @@ -14,88 +14,71 @@ class Bills extends BulkAction public $actions = [ 'received' => [ - 'name' => 'general.received', - 'message' => '', - 'permission' => 'update-expenses-bills' + 'name' => 'bills.mark_received', + 'message' => 'bulk_actions.message.received', + 'permission' => 'update-expenses-bills', ], 'duplicate' => [ 'name' => 'general.duplicate', 'message' => 'bulk_actions.message.duplicate', 'permission' => 'create-expenses-bills', - 'multiple' => true - ], - 'export' => [ - 'name' => 'general.export', - 'message' => 'bulk_actions.message.exports', + 'multiple' => true, ], 'delete' => [ 'name' => 'general.delete', - 'message' => 'bulk_actions.message.deletes', - 'permission' => 'delete-expenses-bills' - ] + 'message' => 'bulk_actions.message.delete', + 'permission' => 'delete-expenses-bills', + ], + 'export' => [ + 'name' => 'general.export', + 'message' => 'bulk_actions.message.export', + ], ]; - public function duplicate($request) - { - $selected = $request->get('selected', []); - - $bills = $this->model::find($selected); - - foreach ($bills as $bill) { - $clone = $bill->duplicate(); - - // Add bill history - BillHistory::create([ - 'company_id' => session('company_id'), - 'bill_id' => $clone->id, - 'status_code' => 'draft', - 'notify' => 0, - 'description' => trans('messages.success.added', ['type' => $clone->bill_number]), - ]); - } - } - - public function delete($request) - { - $this->destroy($request); - } - - public function destroy($request) - { - $selected = $request->get('selected', []); - - $bills = $this->model::find($selected); - - foreach ($bills as $bill) { - $this->dispatch(new DeleteBill($bill)); - } - } - - public function export($request) - { - $selected = $request->get('selected', []); - - return \Excel::download(new Export($selected), trans_choice('general.bills', 2) . '.xlsx'); - } - public function received($request) { - $selected = $request->get('selected', []); - - $bills = $this->model::find($selected); + $bills = $this->getSelectedRecords($request); foreach ($bills as $bill) { $bill->bill_status_code = 'received'; $bill->save(); - // Add bill history - BillHistory::create([ - 'company_id' => $bill->company_id, - 'bill_id' => $bill->id, - 'status_code' => 'received', - 'notify' => 0, - 'description' => trans('bills.mark_recevied'), - ]); + $description = trans('bills.mark_recevied'); + + $this->dispatch(new CreateBillHistory($bill, 0, $description)); } } + + public function duplicate($request) + { + $bills = $this->getSelectedRecords($request); + + foreach ($bills as $bill) { + $clone = $bill->duplicate(); + + $description = trans('messages.success.added', ['type' => $clone->bill_number]); + + $this->dispatch(new CreateBillHistory($clone, 0, $description)); + } + } + + public function destroy($request) + { + $bills = $this->getSelectedRecords($request); + + foreach ($bills as $bill) { + try { + $this->dispatch(new DeleteBill($bill)); + } catch (\Exception $e) { + flash($e->getMessage())->error(); + } + } + } + + public function export($request) + { + $selected = $this->getSelectedInput($request); + + return \Excel::download(new Export($selected), trans_choice('general.bills', 2) . '.xlsx'); + } } diff --git a/app/BulkActions/Expenses/Payments.php b/app/BulkActions/Expenses/Payments.php index 986c1d7dd..55ed8e0b5 100644 --- a/app/BulkActions/Expenses/Payments.php +++ b/app/BulkActions/Expenses/Payments.php @@ -5,7 +5,6 @@ namespace App\BulkActions\Expenses; use App\Abstracts\BulkAction; use App\Exports\Expenses\Payments as Export; use App\Models\Banking\Transaction; -use App\Models\Setting\Category; class Payments extends BulkAction { @@ -16,60 +15,27 @@ class Payments extends BulkAction 'name' => 'general.duplicate', 'message' => 'bulk_actions.message.duplicate', 'permission' => 'create-expenses-payments', - 'multiple' => true + 'multiple' => true, ], 'export' => [ 'name' => 'general.export', - 'message' => 'bulk_actions.message.exports', + 'message' => 'bulk_actions.message.export', ], 'delete' => [ 'name' => 'general.delete', - 'message' => 'bulk_actions.message.deletes', - 'permission' => 'delete-expenses-payments' - ] + 'message' => 'bulk_actions.message.delete', + 'permission' => 'delete-expenses-payments', + ], ]; - public function duplicate($request) - { - $selected = $request->get('selected', []); - - $transactions = $this->model::find($selected); - - foreach ($transactions as $transaction) { - $clone = $transaction->duplicate(); - } - } - - public function delete($request) - { - $this->destroy($request); - } - public function destroy($request) { - $selected = $request->get('selected', []); - - $transactions = $this->model::find($selected); - - foreach ($transactions as $transaction) { - if ($transaction->category->id != Category::transfer()) { - $type = $transaction->type; - - $transaction->recurring()->delete(); - $transaction->delete(); - - $message = trans('messages.success.deleted', ['type' => trans_choice('general.' . \Str::plural($type), 1)]); - - flash($message)->success(); - } else { - $this->response->errorUnauthorized(); - } - } + $this->deleteTransactions($request); } public function export($request) { - $selected = $request->get('selected', []); + $selected = $this->getSelectedInput($request); return \Excel::download(new Export($selected), trans_choice('general.payments', 2) . '.xlsx'); } diff --git a/app/BulkActions/Expenses/Vendors.php b/app/BulkActions/Expenses/Vendors.php index eccfa667e..290468e1d 100644 --- a/app/BulkActions/Expenses/Vendors.php +++ b/app/BulkActions/Expenses/Vendors.php @@ -4,6 +4,7 @@ namespace App\BulkActions\Expenses; use App\Abstracts\BulkAction; use App\Exports\Expenses\Vendors as Export; +use App\Jobs\Common\UpdateContact; use App\Models\Common\Contact; class Vendors extends BulkAction @@ -14,12 +15,12 @@ class Vendors extends BulkAction 'enable' => [ 'name' => 'general.enable', 'message' => 'bulk_actions.message.enable', - 'permission' => 'update-expenses-vendors' + 'permission' => 'update-expenses-vendors', ], 'disable' => [ 'name' => 'general.disable', 'message' => 'bulk_actions.message.disable', - 'permission' => 'update-expenses-vendors' + 'permission' => 'update-expenses-vendors', ], 'duplicate' => [ 'name' => 'general.duplicate', @@ -27,70 +28,31 @@ class Vendors extends BulkAction 'permission' => 'create-expenses-vendors', 'multiple' => true ], - 'export' => [ - 'name' => 'general.export', - 'message' => 'bulk_actions.message.exports', - ], 'delete' => [ 'name' => 'general.delete', - 'message' => 'bulk_actions.message.deletes', - 'permission' => 'delete-expenses-vendors' - ] + 'message' => 'bulk_actions.message.delete', + 'permission' => 'delete-expenses-vendors', + ], + 'export' => [ + 'name' => 'general.export', + 'message' => 'bulk_actions.message.export', + ], ]; - public function duplicate($request) + public function disable($request) { - $selected = $request->get('selected', []); - - $contacts = $this->model::find($selected); - - foreach ($contacts as $contact) { - $clone = $contact->duplicate(); - } - } - - public function delete($request) - { - $this->destroy($request); + $this->disableContacts($request); } public function destroy($request) { - $selected = $request->get('selected', []); - - $contacts = $this->model::find($selected); - - foreach ($contacts as $contact) { - if (!$relationships = $this->getRelationships($contact)) { - $contact->delete(); - - $message = trans('messages.success.deleted', ['type' => $contact->name]); - - flash($message)->success(); - } else { - $message = trans('messages.warning.deleted', ['name' => $contact->name, 'text' => implode(', ', $relationships)]); - - $this->response->errorUnauthorized($message); - } - } + $this->deleteContacts($request); } public function export($request) { - $selected = $request->get('selected', []); + $selected = $this->getSelectedInput($request); return \Excel::download(new Export($selected), trans_choice('general.vendors', 2) . '.xlsx'); } - - protected function getRelationships($contact) - { - $rels = [ - 'bills' => 'bills', - 'payments' => 'payments', - ]; - - $relationships = $this->countRelationships($contact, $rels); - - return $relationships; - } } diff --git a/app/BulkActions/Incomes/Customers.php b/app/BulkActions/Incomes/Customers.php index b43879444..4ff0a45df 100644 --- a/app/BulkActions/Incomes/Customers.php +++ b/app/BulkActions/Incomes/Customers.php @@ -14,12 +14,12 @@ class Customers extends BulkAction 'enable' => [ 'name' => 'general.enable', 'message' => 'bulk_actions.message.enable', - 'permission' => 'update-incomes-customers' + 'permission' => 'update-incomes-customers', ], 'disable' => [ 'name' => 'general.disable', 'message' => 'bulk_actions.message.disable', - 'permission' => 'update-incomes-customers' + 'permission' => 'update-incomes-customers', ], 'duplicate' => [ 'name' => 'general.duplicate', @@ -27,70 +27,31 @@ class Customers extends BulkAction 'permission' => 'create-incomes-customers', 'multiple' => true ], + 'delete' => [ + 'name' => 'general.delete', + 'message' => 'bulk_actions.message.delete', + 'permission' => 'delete-incomes-customers', + ], 'export' => [ 'name' => 'general.export', 'message' => 'bulk_actions.message.export', ], - 'delete' => [ - 'name' => 'general.delete', - 'message' => 'bulk_actions.message.deletes', - 'permission' => 'delete-incomes-customers' - ] ]; - public function duplicate($request) + public function disable($request) { - $selected = $request->get('selected', []); - - $contacts = $this->model::find($selected); - - foreach ($contacts as $contact) { - $clone = $contact->duplicate(); - } - } - - public function delete($request) - { - $this->destroy($request); + $this->disableContacts($request); } public function destroy($request) { - $selected = $request->get('selected', []); - - $contacts = $this->model::find($selected); - - foreach ($contacts as $contact) { - if (!$relationships = $this->getRelationships($contact)) { - $contact->delete(); - - $message = trans('messages.success.deleted', ['type' => $contact->name]); - - flash($message)->success(); - } else { - $message = trans('messages.warning.deleted', ['name' => $contact->name, 'text' => implode(', ', $relationships)]); - - $this->response->errorUnauthorized($message); - } - } + $this->deleteContacts($request); } public function export($request) { - $selected = $request->get('selected', []); + $selected = $this->getSelectedInput($request); return \Excel::download(new Export($selected), trans_choice('general.customers', 2) . '.xlsx'); } - - protected function getRelationships($contact) - { - $rels = [ - 'invoices' => 'invoices', - 'income_transactions' => 'transactions', - ]; - - $relationships = $this->countRelationships($contact, $rels); - - return $relationships; - } } diff --git a/app/BulkActions/Incomes/Invoices.php b/app/BulkActions/Incomes/Invoices.php index b10d51260..efef361ae 100644 --- a/app/BulkActions/Incomes/Invoices.php +++ b/app/BulkActions/Incomes/Invoices.php @@ -9,7 +9,6 @@ use App\Events\Income\PaymentReceived; use App\Exports\Incomes\Invoices as Export; use App\Jobs\Income\DeleteInvoice; use App\Models\Income\Invoice; -use Date; class Invoices extends BulkAction { @@ -17,37 +16,53 @@ class Invoices extends BulkAction public $actions = [ 'paid' => [ - 'name' => 'general.disable', - 'message' => 'bulk_actions.message.disable', - 'permission' => 'update-incomes-invoices' + 'name' => 'invoices.mark_paid', + 'message' => 'bulk_actions.message.paid', + 'permission' => 'update-incomes-invoices', ], 'sent' => [ - 'name' => 'general.enable', - 'message' => 'bulk_actions.message.enable', - 'permission' => 'update-incomes-invoices' + 'name' => 'invoice.mark_sent', + 'message' => 'bulk_actions.message.sent', + 'permission' => 'update-incomes-invoices', ], 'duplicate' => [ 'name' => 'general.duplicate', 'message' => 'bulk_actions.message.duplicate', 'permission' => 'create-incomes-invoices', - 'multiple' => true - ], - 'export' => [ - 'name' => 'general.export', - 'message' => 'bulk_actions.message.exports', + 'multiple' => true, ], 'delete' => [ 'name' => 'general.delete', - 'message' => 'bulk_actions.message.deletes', - 'permission' => 'delete-incomes-invoices' - ] + 'message' => 'bulk_actions.message.delete', + 'permission' => 'delete-incomes-invoices', + ], + 'export' => [ + 'name' => 'general.export', + 'message' => 'bulk_actions.message.export', + ], ]; + public function paid($request) + { + $invoices = $this->getSelectedRecords($request); + + foreach ($invoices as $invoice) { + event(new PaymentReceived($invoice, [])); + } + } + + public function sent($request) + { + $invoices = $this->getSelectedRecords($request); + + foreach ($invoices as $invoice) { + event(new InvoiceSent($invoice)); + } + } + public function duplicate($request) { - $selected = $request->get('selected', []); - - $invoices = $this->model::find($selected); + $invoices = $this->getSelectedRecords($request); foreach ($invoices as $invoice) { $clone = $invoice->duplicate(); @@ -63,43 +78,21 @@ class Invoices extends BulkAction public function destroy($request) { - $selected = $request->get('selected', []); - - $invoices = $this->model::find($selected); + $invoices = $this->getSelectedRecords($request); foreach ($invoices as $invoice) { - $this->dispatch(new DeleteInvoice($invoice)); + try { + $this->dispatch(new DeleteInvoice($invoice)); + } catch (\Exception $e) { + flash($e->getMessage())->error(); + } } } public function export($request) { - $selected = $request->get('selected', []); + $selected = $this->getSelectedInput($request); return \Excel::download(new Export($selected), trans_choice('general.invoices', 2) . '.xlsx'); } - - public function sent($request) - { - $selected = $request->get('selected', []); - - $invoices = $this->model::find($selected); - - foreach ($invoices as $invoice) { - event(new InvoiceSent($invoice)); - - $message = trans('invoices.messages.marked_sent'); - } - } - - public function paid($request) - { - $selected = $request->get('selected', []); - - $invoices = $this->model::find($selected); - - foreach ($invoices as $invoice) { - event(new PaymentReceived($invoice, [])); - } - } } diff --git a/app/BulkActions/Incomes/Revenues.php b/app/BulkActions/Incomes/Revenues.php index b5969d472..94c48b687 100644 --- a/app/BulkActions/Incomes/Revenues.php +++ b/app/BulkActions/Incomes/Revenues.php @@ -5,7 +5,6 @@ namespace App\BulkActions\Incomes; use App\Abstracts\BulkAction; use App\Exports\Incomes\Revenues as Export; use App\Models\Banking\Transaction; -use App\Models\Setting\Category; class Revenues extends BulkAction { @@ -14,62 +13,29 @@ class Revenues extends BulkAction public $actions = [ 'export' => [ 'name' => 'general.export', - 'message' => 'bulk_actions.message.exports', + 'message' => 'bulk_actions.message.export', ], 'duplicate' => [ 'name' => 'general.duplicate', 'message' => 'bulk_actions.message.duplicate', 'permission' => 'create-incomes-revenues', - 'multiple' => true + 'multiple' => true, ], 'delete' => [ 'name' => 'general.delete', - 'message' => 'bulk_actions.message.deletes', - 'permission' => 'delete-incomes-revenues' - ] + 'message' => 'bulk_actions.message.delete', + 'permission' => 'delete-incomes-revenues', + ], ]; - public function duplicate($request) - { - $selected = $request->get('selected', []); - - $transactions = $this->model::find($selected); - - foreach ($transactions as $transaction) { - $clone = $transaction->duplicate(); - } - } - - public function delete($request) - { - $this->destroy($request); - } - public function destroy($request) { - $selected = $request->get('selected', []); - - $transactions = $this->model::find($selected); - - foreach ($transactions as $transaction) { - if ($transaction->category->id != Category::transfer()) { - $type = $transaction->type; - - $transaction->recurring()->delete(); - $transaction->delete(); - - $message = trans('messages.success.deleted', ['type' => trans_choice('general.' . \Str::plural($type), 1)]); - - flash($message)->success(); - } else { - $this->response->errorUnauthorized(); - } - } + $this->deleteTransactions($request); } public function export($request) { - $selected = $request->get('selected', []); + $selected = $this->getSelectedInput($request); return \Excel::download(new Export($selected), trans_choice('general.revenues', 2) . '.xlsx'); } diff --git a/app/BulkActions/Settings/Categories.php b/app/BulkActions/Settings/Categories.php index 51c68a93f..d9b665f98 100644 --- a/app/BulkActions/Settings/Categories.php +++ b/app/BulkActions/Settings/Categories.php @@ -3,6 +3,8 @@ namespace App\BulkActions\Settings; use App\Abstracts\BulkAction; +use App\Jobs\Setting\DeleteCategory; +use App\Jobs\Setting\UpdateCategory; use App\Models\Setting\Category; class Categories extends BulkAction @@ -13,85 +15,43 @@ class Categories extends BulkAction 'enable' => [ 'name' => 'general.enable', 'message' => 'bulk_actions.message.enable', - 'permission' => 'update-settings-categories' + 'permission' => 'update-settings-categories', ], 'disable' => [ 'name' => 'general.disable', 'message' => 'bulk_actions.message.disable', - 'permission' => 'update-settings-categories' + 'permission' => 'update-settings-categories', ], 'delete' => [ 'name' => 'general.delete', - 'message' => 'bulk_actions.message.deletes', - 'permission' => 'delete-settings-categories' - ] + 'message' => 'bulk_actions.message.delete', + 'permission' => 'delete-settings-categories', + ], ]; public function disable($request) { - $selected = $request->get('selected', []); - - $categories = $this->model::find($selected); + $categories = $this->getSelectedRecords($request); foreach ($categories as $category) { - if ($relationships = $this->getRelationships($category)) { - $category->enabled = 0; - $category->save(); - - $message = trans('messages.success.disabled', ['type' => $category->name]); - - flash($message)->success(); - } else { - $message = trans('messages.warning.disabled', ['name' => $category->name, 'text' => implode(', ', $relationships)]); - - $this->response->errorUnauthorized($message); + try { + $this->dispatch(new UpdateCategory($category, $request->merge(['enabled' => 0]))); + } catch (\Exception $e) { + flash($e->getMessage())->error(); } } } - public function delete($request) - { - $this->destroy($request); - } - public function destroy($request) { - $selected = $request->get('selected', []); - - $categories = $this->model::find($selected); + $categories = $this->getSelectedRecords($request); foreach ($categories as $category) { - // Can not delete the last category by type - if (Category::where('type', $category->type)->count() == 1) { - $message = trans('messages.error.last_category', ['type' => strtolower(trans_choice('general.' . $category->type . 's', 1))]); - - $this->response->errorUnauthorized($message); - } - - if (!$relationships = $this->getRelationships($category)) { - $category->delete(); - - $message = trans('messages.success.deleted', ['type' => $category->name]); - - return new Response($message); - } else { - $message = trans('messages.warning.deleted', ['name' => $category->name, 'text' => implode(', ', $relationships)]); - - $this->response->errorUnauthorized($message); + try { + $this->dispatch(new DeleteCategory($category)); + } catch (\Exception $e) { + flash($e->getMessage())->error(); } } } - - protected function getRelationships($category) - { - $relationships = $this->countRelationships($category, [ - 'items' => 'items', - 'invoices' => 'invoices', - 'income_transacions' => 'transactions', - 'bills' => 'bills', - 'expense_transactions' => 'transactions', - ]); - - return $relationships; - } } diff --git a/app/BulkActions/Settings/Currencies.php b/app/BulkActions/Settings/Currencies.php index 7ad7e5e22..581878290 100644 --- a/app/BulkActions/Settings/Currencies.php +++ b/app/BulkActions/Settings/Currencies.php @@ -3,6 +3,8 @@ namespace App\BulkActions\Settings; use App\Abstracts\BulkAction; +use App\Jobs\Setting\DeleteCurrency; +use App\Jobs\Setting\UpdateCurrency; use App\Models\Setting\Currency; class Currencies extends BulkAction @@ -13,83 +15,43 @@ class Currencies extends BulkAction 'enable' => [ 'name' => 'general.enable', 'message' => 'bulk_actions.message.enable', - 'permission' => 'update-settings-currencies' + 'permission' => 'update-settings-currencies', ], 'disable' => [ 'name' => 'general.disable', 'message' => 'bulk_actions.message.disable', - 'permission' => 'update-settings-currencies' + 'permission' => 'update-settings-currencies', ], 'delete' => [ 'name' => 'general.delete', - 'message' => 'bulk_actions.message.deletes', - 'permission' => 'delete-settings-currencies' - ] + 'message' => 'bulk_actions.message.delete', + 'permission' => 'delete-settings-currencies', + ], ]; public function disable($request) { - $selected = $request->get('selected', []); - - $currencies = $this->model::find($selected); + $currencies = $this->getSelectedRecords($request); foreach ($currencies as $currency) { - if (!$relationships = $this->getRelationships($currency)) { - $currency->enabled = 0; - $currency->save(); - - $message = trans('messages.success.disabled', ['type' => $currency->name]); - - return $this->itemResponse($currency->fresh(), new Transformer(), $message); - } else { - $message = trans('messages.warning.disabled', ['name' => $currency->name, 'text' => implode(', ', $relationships)]); - - $this->response->errorUnauthorized($message); + try { + $this->dispatch(new UpdateCurrency($currency, $request->merge(['enabled' => 0]))); + } catch (\Exception $e) { + flash($e->getMessage())->error(); } } } - public function delete($request) - { - $this->destroy($request); - } - public function destroy($request) { - $selected = $request->get('selected', []); - - $currencies = $this->model::find($selected); + $currencies = $this->getSelectedRecords($request); foreach ($currencies as $currency) { - if (!$relationships = $this->getRelationships($currency)) { - $currency->delete(); - - $message = trans('messages.success.deleted', ['type' => $currency->name]); - - flash($message)->success(); - } else { - $message = trans('messages.warning.deleted', ['name' => $currency->name, 'text' => implode(', ', $relationships)]); - - $this->response->errorUnauthorized($message); + try { + $this->dispatch(new DeleteCurrency($currency)); + } catch (\Exception $e) { + flash($e->getMessage())->error(); } } } - - protected function getRelationships($currency) - { - $relationships = $this->countRelationships($currency, [ - 'accounts' => 'accounts', - 'customers' => 'customers', - 'invoices' => 'invoices', - 'income_transactions' => 'transactions', - 'bills' => 'bills', - 'expense_transactions' => 'transactions', - ]); - - if ($currency->code == setting('default.currency')) { - $relationships[] = strtolower(trans_choice('general.companies', 1)); - } - - return $relationships; - } } diff --git a/app/BulkActions/Settings/Taxes.php b/app/BulkActions/Settings/Taxes.php index 5cdbe072c..3d1d7182e 100644 --- a/app/BulkActions/Settings/Taxes.php +++ b/app/BulkActions/Settings/Taxes.php @@ -3,6 +3,8 @@ namespace App\BulkActions\Settings; use App\Abstracts\BulkAction; +use App\Jobs\Setting\DeleteTax; +use App\Jobs\Setting\UpdateTax; use App\Models\Setting\Tax; class Taxes extends BulkAction @@ -13,76 +15,43 @@ class Taxes extends BulkAction 'enable' => [ 'name' => 'general.enable', 'message' => 'bulk_actions.message.enable', - 'permission' => 'update-settings-taxes' + 'permission' => 'update-settings-taxes', ], 'disable' => [ 'name' => 'general.disable', 'message' => 'bulk_actions.message.disable', - 'permission' => 'update-settings-taxes' + 'permission' => 'update-settings-taxes', ], 'delete' => [ 'name' => 'general.delete', - 'message' => 'bulk_actions.message.deletes', - 'permission' => 'delete-settings-taxes' - ] + 'message' => 'bulk_actions.message.delete', + 'permission' => 'delete-settings-taxes', + ], ]; public function disable($request) { - $selected = $request->get('selected', []); - - $taxes = $this->model::find($selected); + $taxes = $this->getSelectedRecords($request); foreach ($taxes as $tax) { - if (!$relationships = $this->getRelationships($tax)) { - $tax->enabled = 0; - $tax->save(); - - $message = trans('messages.success.disabled', ['type' => $tax->name]); - - return $this->itemResponse($tax->fresh(), new Transformer(), $message); - } else { - $message = trans('messages.warning.disabled', ['name' => $tax->name, 'text' => implode(', ', $relationships)]); - - $this->response->errorUnauthorized($message); + try { + $this->dispatch(new UpdateTax($tax, $request->merge(['enabled' => 0]))); + } catch (\Exception $e) { + flash($e->getMessage())->error(); } } } - public function delete($request) - { - $this->destroy($request); - } - public function destroy($request) { - $selected = $request->get('selected', []); - - $taxes = $this->model::find($selected); + $taxes = $this->getSelectedRecords($request); foreach ($taxes as $tax) { - if (!$relationships = $this->getRelationships($tax)) { - $tax->delete(); - - $message = trans('messages.success.deleted', ['type' => $tax->name]); - - flash($message)->success(); - } else { - $message = trans('messages.warning.deleted', ['name' => $tax->name, 'text' => implode(', ', $relationships)]); - - $this->response->errorUnauthorized($message); + try { + $this->dispatch(new DeleteTax($tax)); + } catch (\Exception $e) { + flash($e->getMessage())->error(); } } } - - protected function getRelationships($tax) - { - $relationships = $this->countRelationships($tax, [ - 'items' => 'items', - 'invoice_items' => 'invoices', - 'bill_items' => 'bills', - ]); - - return $relationships; - } } diff --git a/app/Jobs/Common/UpdateContact.php b/app/Jobs/Common/UpdateContact.php index 0601312bd..be513a71a 100644 --- a/app/Jobs/Common/UpdateContact.php +++ b/app/Jobs/Common/UpdateContact.php @@ -3,6 +3,7 @@ namespace App\Jobs\Common; use App\Abstracts\Job; +use App\Models\Auth\User; use App\Models\Common\Contact; class UpdateContact extends Job diff --git a/resources/lang/en-GB/bulk_actions.php b/resources/lang/en-GB/bulk_actions.php index 5113c5ac8..12c22af65 100644 --- a/resources/lang/en-GB/bulk_actions.php +++ b/resources/lang/en-GB/bulk_actions.php @@ -2,9 +2,8 @@ return [ - 'select_to_action' => 'Select To Action', - 'selected' => 'selected', 'bulk_actions' => 'Bulk Action|Bulk Actions', + 'selected' => 'selected', 'delete' => 'Delete', 'duplicate' => 'Duplicate', 'export' => 'Export', @@ -40,12 +39,15 @@ return [ ], 'message' => [ - 'sure' => 'Are you sure?', - 'duplicate' => 'Do you really want to duplicate these record?', - 'deletes' => 'Do you really want to delete these record?|Do you really want to delete these records?', - 'exports' => 'Do you really want to export these record?|Do you really want to export these records?', - 'enable' => 'Do you really want to enable these record?|Do you really want to enable these records?', - 'disable' => 'Do your really want to disable these record?|Do your really want to disable these records?', - ] + 'sure' => 'Are you sure?', + 'duplicate' => 'Do you really want to duplicate these record?', + 'delete' => 'Do you really want to delete this record?|Do you really want to delete these records?', + 'export' => 'Do you really want to export this record?|Do you really want to export these records?', + 'enable' => 'Do you really want to enable this record?|Do you really want to enable these records?', + 'disable' => 'Do you really want to disable this record?|Do you really want to disable these records?', + 'paid' => 'Do you really want to mark this invoice as paid?|Do you really want to mark these invoices as paid?', + 'sent' => 'Do you really want to mark this invoice as sent?|Do you really want to mark these invoices as sent?', + 'received' => 'Do you really want to mark this bill as received?|Do you really want to mark these bills as received?', + ], ];