mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
Delete from history when deleted
This commit is contained in:
parent
2028932a94
commit
bb8c2f80f6
29
app/Events/ProjectWasDeleted.php
Normal file
29
app/Events/ProjectWasDeleted.php
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
|
use App\Models\Project;
|
||||||
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class ProjectWasDeleted.
|
||||||
|
*/
|
||||||
|
class ProjectWasDeleted extends Event
|
||||||
|
{
|
||||||
|
use SerializesModels;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Prooject
|
||||||
|
*/
|
||||||
|
public $project;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new event instance.
|
||||||
|
*
|
||||||
|
* @param Invoice $invoice
|
||||||
|
*/
|
||||||
|
public function __construct(Project $project)
|
||||||
|
{
|
||||||
|
$this->project = $project;
|
||||||
|
}
|
||||||
|
}
|
29
app/Events/ProposalWasDeleted.php
Normal file
29
app/Events/ProposalWasDeleted.php
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Events;
|
||||||
|
|
||||||
|
use App\Models\Proposal;
|
||||||
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class ProposalWasDeleted.
|
||||||
|
*/
|
||||||
|
class ProposalWasDeleted extends Event
|
||||||
|
{
|
||||||
|
use SerializesModels;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Proposal
|
||||||
|
*/
|
||||||
|
public $proposal;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new event instance.
|
||||||
|
*
|
||||||
|
* @param Invoice $invoice
|
||||||
|
*/
|
||||||
|
public function __construct(Proposal $proposal)
|
||||||
|
{
|
||||||
|
$this->proposal = $proposal;
|
||||||
|
}
|
||||||
|
}
|
@ -46,6 +46,10 @@ class HistoryUtils
|
|||||||
->get();
|
->get();
|
||||||
|
|
||||||
foreach ($activities->reverse() as $activity) {
|
foreach ($activities->reverse() as $activity) {
|
||||||
|
if ($activity->client && $activity->client->is_deleted) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ($activity->activity_type_id == ACTIVITY_TYPE_CREATE_CLIENT) {
|
if ($activity->activity_type_id == ACTIVITY_TYPE_CREATE_CLIENT) {
|
||||||
$entity = $activity->client;
|
$entity = $activity->client;
|
||||||
} elseif ($activity->activity_type_id == ACTIVITY_TYPE_CREATE_TASK || $activity->activity_type_id == ACTIVITY_TYPE_UPDATE_TASK) {
|
} elseif ($activity->activity_type_id == ACTIVITY_TYPE_CREATE_TASK || $activity->activity_type_id == ACTIVITY_TYPE_UPDATE_TASK) {
|
||||||
@ -78,6 +82,28 @@ class HistoryUtils
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function deleteHistory(EntityModel $entity)
|
||||||
|
{
|
||||||
|
$history = Session::get(RECENTLY_VIEWED) ?: [];
|
||||||
|
$accountHistory = isset($history[$entity->account_id]) ? $history[$entity->account_id] : [];
|
||||||
|
$remove = [];
|
||||||
|
|
||||||
|
for ($i=0; $i<count($accountHistory); $i++) {
|
||||||
|
$item = $accountHistory[$i];
|
||||||
|
if ($entity->equalTo($item)) {
|
||||||
|
$remove[] = $i;
|
||||||
|
} elseif ($entity->getEntityType() == ENTITY_CLIENT && $entity->public_id == $item->client_id) {
|
||||||
|
$remove[] = $i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for ($i=count($remove) - 1; $i>=0; $i--) {
|
||||||
|
array_splice($history[$entity->account_id], $remove[$i], 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
Session::put(RECENTLY_VIEWED, $history);
|
||||||
|
}
|
||||||
|
|
||||||
public static function trackViewed(EntityModel $entity)
|
public static function trackViewed(EntityModel $entity)
|
||||||
{
|
{
|
||||||
$entityType = $entity->getEntityType();
|
$entityType = $entity->getEntityType();
|
||||||
@ -136,6 +162,7 @@ class HistoryUtils
|
|||||||
private static function convertToObject($entity)
|
private static function convertToObject($entity)
|
||||||
{
|
{
|
||||||
$object = new stdClass();
|
$object = new stdClass();
|
||||||
|
$object->id = $entity->id;
|
||||||
$object->accountId = $entity->account_id;
|
$object->accountId = $entity->account_id;
|
||||||
$object->url = $entity->present()->url;
|
$object->url = $entity->present()->url;
|
||||||
$object->entityType = $entity->subEntityType();
|
$object->entityType = $entity->subEntityType();
|
||||||
|
74
app/Listeners/HistoryListener.php
Normal file
74
app/Listeners/HistoryListener.php
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Listeners;
|
||||||
|
|
||||||
|
use App\Events\InvoiceWasDeleted;
|
||||||
|
use App\Events\ClientWasDeleted;
|
||||||
|
use App\Events\QuoteWasDeleted;
|
||||||
|
use App\Events\TaskWasDeleted;
|
||||||
|
use App\Events\ExpenseWasDeleted;
|
||||||
|
use App\Events\ProjectWasDeleted;
|
||||||
|
use App\Events\ProposalWasDeleted;
|
||||||
|
use App\Libraries\HistoryUtils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class InvoiceListener.
|
||||||
|
*/
|
||||||
|
class HistoryListener
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @param ClientWasDeleted $event
|
||||||
|
*/
|
||||||
|
public function deletedClient(ClientWasDeleted $event)
|
||||||
|
{
|
||||||
|
HistoryUtils::deleteHistory($event->client);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param InvoiceWasDeleted $event
|
||||||
|
*/
|
||||||
|
public function deletedInvoice(InvoiceWasDeleted $event)
|
||||||
|
{
|
||||||
|
HistoryUtils::deleteHistory($event->invoice);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param QuoteWasDeleted $event
|
||||||
|
*/
|
||||||
|
public function deletedQuote(QuoteWasDeleted $event)
|
||||||
|
{
|
||||||
|
HistoryUtils::deleteHistory($event->quote);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param TaskWasDeleted $event
|
||||||
|
*/
|
||||||
|
public function deletedTask(TaskWasDeleted $event)
|
||||||
|
{
|
||||||
|
HistoryUtils::deleteHistory($event->task);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ExpenseWasDeleted $event
|
||||||
|
*/
|
||||||
|
public function deletedExpense(ExpenseWasDeleted $event)
|
||||||
|
{
|
||||||
|
HistoryUtils::deleteHistory($event->expense);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ProjectWasDeleted $event
|
||||||
|
*/
|
||||||
|
public function deletedProject(ProjectWasDeleted $event)
|
||||||
|
{
|
||||||
|
HistoryUtils::deleteHistory($event->project);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ProposalWasDeleted $event
|
||||||
|
*/
|
||||||
|
public function deletedProposal(ProposalWasDeleted $event)
|
||||||
|
{
|
||||||
|
HistoryUtils::deleteHistory($event->proposal);
|
||||||
|
}
|
||||||
|
}
|
@ -427,4 +427,13 @@ class EntityModel extends Eloquent
|
|||||||
throw $exception;
|
throw $exception;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function equalTo($obj)
|
||||||
|
{
|
||||||
|
if (empty($obj->id)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->id == $obj->id && $this->getEntityType() == $obj->entityType;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,7 @@ class EventServiceProvider extends ServiceProvider
|
|||||||
'App\Events\ClientWasDeleted' => [
|
'App\Events\ClientWasDeleted' => [
|
||||||
'App\Listeners\ActivityListener@deletedClient',
|
'App\Listeners\ActivityListener@deletedClient',
|
||||||
'App\Listeners\SubscriptionListener@deletedClient',
|
'App\Listeners\SubscriptionListener@deletedClient',
|
||||||
|
'App\Listeners\HistoryListener@deletedClient',
|
||||||
],
|
],
|
||||||
'App\Events\ClientWasRestored' => [
|
'App\Events\ClientWasRestored' => [
|
||||||
'App\Listeners\ActivityListener@restoredClient',
|
'App\Listeners\ActivityListener@restoredClient',
|
||||||
@ -54,6 +55,7 @@ class EventServiceProvider extends ServiceProvider
|
|||||||
'App\Listeners\ActivityListener@deletedInvoice',
|
'App\Listeners\ActivityListener@deletedInvoice',
|
||||||
'App\Listeners\TaskListener@deletedInvoice',
|
'App\Listeners\TaskListener@deletedInvoice',
|
||||||
'App\Listeners\ExpenseListener@deletedInvoice',
|
'App\Listeners\ExpenseListener@deletedInvoice',
|
||||||
|
'App\Listeners\HistoryListener@deletedInvoice',
|
||||||
],
|
],
|
||||||
'App\Events\InvoiceWasRestored' => [
|
'App\Events\InvoiceWasRestored' => [
|
||||||
'App\Listeners\ActivityListener@restoredInvoice',
|
'App\Listeners\ActivityListener@restoredInvoice',
|
||||||
@ -89,6 +91,7 @@ class EventServiceProvider extends ServiceProvider
|
|||||||
],
|
],
|
||||||
'App\Events\QuoteWasDeleted' => [
|
'App\Events\QuoteWasDeleted' => [
|
||||||
'App\Listeners\ActivityListener@deletedQuote',
|
'App\Listeners\ActivityListener@deletedQuote',
|
||||||
|
'App\Listeners\HistoryListener@deletedQuote',
|
||||||
],
|
],
|
||||||
'App\Events\QuoteWasRestored' => [
|
'App\Events\QuoteWasRestored' => [
|
||||||
'App\Listeners\ActivityListener@restoredQuote',
|
'App\Listeners\ActivityListener@restoredQuote',
|
||||||
@ -188,6 +191,7 @@ class EventServiceProvider extends ServiceProvider
|
|||||||
'App\Events\TaskWasDeleted' => [
|
'App\Events\TaskWasDeleted' => [
|
||||||
'App\Listeners\ActivityListener@deletedTask',
|
'App\Listeners\ActivityListener@deletedTask',
|
||||||
'App\Listeners\SubscriptionListener@deletedTask',
|
'App\Listeners\SubscriptionListener@deletedTask',
|
||||||
|
'App\Listeners\HistoryListener@deletedTask',
|
||||||
],
|
],
|
||||||
|
|
||||||
// Vendor events
|
// Vendor events
|
||||||
@ -219,6 +223,17 @@ class EventServiceProvider extends ServiceProvider
|
|||||||
'App\Events\ExpenseWasDeleted' => [
|
'App\Events\ExpenseWasDeleted' => [
|
||||||
'App\Listeners\ActivityListener@deletedExpense',
|
'App\Listeners\ActivityListener@deletedExpense',
|
||||||
'App\Listeners\SubscriptionListener@deletedExpense',
|
'App\Listeners\SubscriptionListener@deletedExpense',
|
||||||
|
'App\Listeners\HistoryListener@deletedExpense',
|
||||||
|
],
|
||||||
|
|
||||||
|
// Project events
|
||||||
|
'App\Events\ProjectWasDeleted' => [
|
||||||
|
'App\Listeners\HistoryListener@deletedProject',
|
||||||
|
],
|
||||||
|
|
||||||
|
// Proposal events
|
||||||
|
'App\Events\ProposalWasDeleted' => [
|
||||||
|
'App\Listeners\HistoryListener@deletedProposal',
|
||||||
],
|
],
|
||||||
|
|
||||||
'Illuminate\Queue\Events\JobExceptionOccurred' => [
|
'Illuminate\Queue\Events\JobExceptionOccurred' => [
|
||||||
|
Loading…
x
Reference in New Issue
Block a user