delete dashboard/report after module uninstall

This commit is contained in:
Denis Duliçi
2021-03-30 00:12:51 +03:00
parent 9a82779f99
commit 72bf03edb4
10 changed files with 189 additions and 22 deletions

View File

@@ -0,0 +1,62 @@
<?php
namespace App\Listeners\Module;
use App\Events\Module\Uninstalled as Event;
use App\Jobs\Common\DeleteDashboard;
use App\Jobs\Common\DeleteReport;
use App\Models\Common\Dashboard;
use App\Models\Common\Report;
use App\Traits\Jobs;
use App\Traits\Relationships;
class FinishUninstallation
{
use Jobs, Relationships;
/**
* Handle the event.
*
* @param Event $event
* @return void
*/
public function handle(Event $event)
{
$this->deleteDashboards($event->alias);
$this->deleteReports($event->alias);
}
/**
* Delete any dashboard created by the module.
*
* @param string $alias
* @return void
*/
protected function deleteDashboards($alias)
{
Dashboard::alias($alias)->get()->each(function ($dashboard) {
try {
$this->dispatch(new DeleteDashboard($dashboard));
} catch (\Exception | \Throwable $e) {
report($e);
}
});
}
/**
* Delete any report created by the module.
*
* @param string $alias
* @return void
*/
protected function deleteReports($alias)
{
Report::alias($alias)->get()->each(function ($report) {
try {
$this->dispatch(new DeleteReport($report));
} catch (\Exception | \Throwable $e) {
report($e);
}
});
}
}