akaunting/app/Abstracts/BulkAction.php

168 lines
3.8 KiB
PHP
Raw Normal View History

2019-11-16 10:21:14 +03:00
<?php
namespace App\Abstracts;
2019-12-23 12:46:00 +03:00
use App\Jobs\Common\DeleteContact;
use App\Jobs\Common\UpdateContact;
use App\Jobs\Banking\DeleteTransaction;
2019-12-22 15:58:48 +03:00
use App\Traits\Jobs;
use App\Traits\Relationships;
2019-11-16 10:21:14 +03:00
use Artisan;
2019-11-18 21:51:19 +03:00
abstract class BulkAction
2019-11-16 10:21:14 +03:00
{
2019-12-22 15:58:48 +03:00
use Jobs, Relationships;
2019-11-16 10:21:14 +03:00
public $model = false;
public $actions = [
'enable' => [
'name' => 'general.enable',
'message' => 'bulk_actions.message.enable',
2019-12-23 12:46:00 +03:00
'permission' => 'update-common-items',
2019-11-16 10:21:14 +03:00
],
'disable' => [
'name' => 'general.disable',
'message' => 'bulk_actions.message.disable',
2019-12-23 12:46:00 +03:00
'permission' => 'update-common-items',
],
'delete' => [
'name' => 'general.delete',
'message' => 'bulk_actions.message.delete',
'permission' => 'delete-common-items',
2019-11-16 10:21:14 +03:00
],
'export' => [
'name' => 'general.export',
2019-12-23 12:46:00 +03:00
'message' => 'bulk_actions.message.export',
'type' => 'download'
2019-11-16 10:21:14 +03:00
],
];
2019-12-23 12:46:00 +03:00
public function getSelectedRecords($request)
{
return $this->model::find($this->getSelectedInput($request));
}
public function getSelectedInput($request)
{
return $request->get('selected', []);
}
2019-11-16 10:21:14 +03:00
/**
* Duplicate the specified resource.
*
* @param $request
*
* @return Response
*/
public function duplicate($request)
{
2019-12-23 12:46:00 +03:00
$items = $this->getSelectedRecords($request);
2019-11-16 10:21:14 +03:00
foreach ($items as $item) {
$item->duplicate();
}
}
/**
* Enable the specified resource.
*
* @param $request
*
* @return Response
*/
public function enable($request)
{
2019-12-23 12:46:00 +03:00
$items = $this->getSelectedRecords($request);
2019-11-16 10:21:14 +03:00
foreach ($items as $item) {
$item->enabled = 1;
$item->save();
}
}
/**
* Disable the specified resource.
*
* @param $request
*
* @return Response
*/
public function disable($request)
{
2019-12-23 12:46:00 +03:00
$items = $this->getSelectedRecords($request);
2019-11-16 10:21:14 +03:00
foreach ($items as $item) {
$item->enabled = 0;
$item->save();
}
}
/**
* Remove the specified resource from storage.
*
* @param $request
*
* @return Response
*/
public function delete($request)
{
$this->destroy($request);
}
/**
* Remove the specified resource from storage.
*
* @param $request
*
* @return Response
*/
public function destroy($request)
{
2019-12-23 12:46:00 +03:00
$items = $this->getSelectedRecords($request);
2019-11-16 10:21:14 +03:00
foreach ($items as $item) {
$item->delete();
}
}
2019-12-23 12:46:00 +03:00
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();
}
}
}
2019-11-16 10:21:14 +03:00
}