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;
|
2021-05-23 17:13:13 +03:00
|
|
|
use App\Utilities\Export;
|
|
|
|
use App\Utilities\Import;
|
2021-06-27 22:08:02 +03:00
|
|
|
use Illuminate\Support\Arr;
|
2019-11-16 10:21:14 +03:00
|
|
|
|
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 = [
|
2022-06-01 10:15:55 +03:00
|
|
|
'enable' => [
|
|
|
|
'name' => 'general.enable',
|
|
|
|
'message' => 'bulk_actions.message.enable',
|
|
|
|
'permission' => 'update-common-items',
|
2019-11-16 10:21:14 +03:00
|
|
|
],
|
2022-06-01 10:15:55 +03:00
|
|
|
'disable' => [
|
|
|
|
'name' => 'general.disable',
|
|
|
|
'message' => 'bulk_actions.message.disable',
|
|
|
|
'permission' => 'update-common-items',
|
2019-12-23 12:46:00 +03:00
|
|
|
],
|
2022-06-01 10:15:55 +03:00
|
|
|
'delete' => [
|
|
|
|
'name' => 'general.delete',
|
|
|
|
'message' => 'bulk_actions.message.delete',
|
|
|
|
'permission' => 'delete-common-items',
|
2019-11-16 10:21:14 +03:00
|
|
|
],
|
2022-06-01 10:15:55 +03:00
|
|
|
'export' => [
|
|
|
|
'name' => 'general.export',
|
|
|
|
'message' => 'bulk_actions.message.export',
|
|
|
|
'type' => 'download'
|
2019-11-16 10:21:14 +03:00
|
|
|
],
|
|
|
|
];
|
|
|
|
|
2022-06-01 10:15:55 +03:00
|
|
|
public $icons = [
|
|
|
|
'enable' => 'check_circle',
|
|
|
|
'disable' => 'hide_source',
|
|
|
|
'delete' => 'delete',
|
2022-09-19 17:01:09 +03:00
|
|
|
'duplicate' => 'file_copy',
|
2022-06-01 10:15:55 +03:00
|
|
|
'export' => 'file_download',
|
|
|
|
'reconcile' => 'published_with_changes',
|
|
|
|
'unreconcile' => 'layers_clear',
|
|
|
|
'received' => 'call_received',
|
|
|
|
'cancelled' => 'cancel',
|
|
|
|
'sent' => 'send',
|
|
|
|
'approved' => 'approval',
|
|
|
|
'refused' => 'do_not_disturb_on',
|
|
|
|
'issued' => 'mark_email_read',
|
|
|
|
'confirmed' => 'thumb_up_alt',
|
|
|
|
];
|
|
|
|
|
|
|
|
public $messages = [
|
|
|
|
'general' => 'bulk_actions.success.general',
|
|
|
|
'enable' => 'messages.success.enabled',
|
|
|
|
'disable' => 'messages.success.disabled',
|
|
|
|
'delete' => 'messages.success.deleted',
|
|
|
|
'duplicate' => 'messages.success.duplicated',
|
|
|
|
'invite' => 'messages.success.invited',
|
|
|
|
'end' => 'messages.success.ended',
|
|
|
|
];
|
|
|
|
|
2021-06-27 22:08:02 +03:00
|
|
|
public function getSelectedRecords($request, $relationships = null)
|
2019-12-23 12:46:00 +03:00
|
|
|
{
|
2021-06-27 22:08:02 +03:00
|
|
|
if (empty($relationships)) {
|
|
|
|
$model = $this->model::query();
|
|
|
|
} else {
|
|
|
|
$relationships = Arr::wrap($relationships);
|
|
|
|
|
|
|
|
$model = $this->model::with($relationships);
|
|
|
|
}
|
|
|
|
|
|
|
|
return $model->find($this->getSelectedInput($request));
|
2019-12-23 12:46:00 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
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) {
|
2020-11-13 15:37:46 +03:00
|
|
|
$item->enabled = true;
|
2019-11-16 10:21:14 +03:00
|
|
|
$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) {
|
2020-11-13 15:37:46 +03:00
|
|
|
$item->enabled = false;
|
2019-11-16 10:21:14 +03:00
|
|
|
$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)
|
|
|
|
{
|
2021-06-27 22:08:02 +03:00
|
|
|
$contacts = $this->getSelectedRecords($request, 'user');
|
2019-12-23 12:46:00 +03:00
|
|
|
|
|
|
|
foreach ($contacts as $contact) {
|
|
|
|
try {
|
|
|
|
$this->dispatch(new UpdateContact($contact, request()->merge(['enabled' => 0])));
|
|
|
|
} catch (\Exception $e) {
|
2021-02-12 19:26:38 +03:00
|
|
|
flash($e->getMessage())->error()->important();
|
2019-12-23 12:46:00 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public function deleteContacts($request)
|
|
|
|
{
|
2021-06-27 22:08:02 +03:00
|
|
|
$contacts = $this->getSelectedRecords($request, 'user');
|
2019-12-23 12:46:00 +03:00
|
|
|
|
|
|
|
foreach ($contacts as $contact) {
|
|
|
|
try {
|
|
|
|
$this->dispatch(new DeleteContact($contact));
|
|
|
|
} catch (\Exception $e) {
|
2021-02-12 19:26:38 +03:00
|
|
|
flash($e->getMessage())->error()->important();
|
2019-12-23 12:46:00 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public function deleteTransactions($request)
|
|
|
|
{
|
2021-06-27 22:08:02 +03:00
|
|
|
$transactions = $this->getSelectedRecords($request, 'category');
|
2019-12-23 12:46:00 +03:00
|
|
|
|
|
|
|
foreach ($transactions as $transaction) {
|
|
|
|
try {
|
|
|
|
$this->dispatch(new DeleteTransaction($transaction));
|
|
|
|
} catch (\Exception $e) {
|
2021-02-12 19:26:38 +03:00
|
|
|
flash($e->getMessage())->error()->important();
|
2019-12-23 12:46:00 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2021-05-23 17:13:13 +03:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Import the excel file or catch errors
|
|
|
|
*
|
|
|
|
* @param $class
|
|
|
|
* @param $request
|
|
|
|
* @param $translation
|
|
|
|
*
|
|
|
|
* @return array
|
|
|
|
*/
|
|
|
|
public function importExcel($class, $request, $translation)
|
|
|
|
{
|
|
|
|
return Import::fromExcel($class, $request, $translation);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Export the excel file or catch errors
|
|
|
|
*
|
|
|
|
* @param $class
|
|
|
|
* @param $translation
|
|
|
|
* @param $extension
|
|
|
|
*
|
|
|
|
* @return mixed
|
|
|
|
*/
|
|
|
|
public function exportExcel($class, $translation, $extension = 'xlsx')
|
|
|
|
{
|
|
|
|
return Export::toExcel($class, $translation, $extension);
|
|
|
|
}
|
2019-11-16 10:21:14 +03:00
|
|
|
}
|