Working on restoring deleted invoices

This commit is contained in:
Hillel Coren 2015-10-30 00:27:26 +02:00
parent fa105210bb
commit ea6cd9e012
4 changed files with 56 additions and 56 deletions

View File

@ -7,16 +7,19 @@ use Illuminate\Queue\SerializesModels;
class InvoiceWasRestored extends Event { class InvoiceWasRestored extends Event {
use SerializesModels; use SerializesModels;
public $invoice; public $invoice;
public $fromDeleted;
/** /**
* Create a new event instance. * Create a new event instance.
* *
* @return void * @return void
*/ */
public function __construct($invoice) public function __construct($invoice, $fromDeleted)
{ {
$this->invoice = $invoice; $this->invoice = $invoice;
$this->fromDeleted = $fromDeleted;
} }
} }

View File

@ -7,16 +7,19 @@ use Illuminate\Queue\SerializesModels;
class PaymentWasRestored extends Event { class PaymentWasRestored extends Event {
use SerializesModels; use SerializesModels;
public $payment; public $payment;
public $fromDeleted;
/** /**
* Create a new event instance. * Create a new event instance.
* *
* @return void * @return void
*/ */
public function __construct($payment) public function __construct($payment, $fromDeleted)
{ {
$this->payment = $payment; $this->payment = $payment;
$this->fromDeleted = $fromDeleted;
} }
} }

View File

@ -1,14 +1,10 @@
<?php namespace app\Listeners; <?php namespace app\Listeners;
use Auth;
use Utils;
use App\Models\Invoice; use App\Models\Invoice;
use App\Events\ClientWasCreated; use App\Events\ClientWasCreated;
use App\Events\ClientWasDeleted; use App\Events\ClientWasDeleted;
use App\Events\ClientWasArchived; use App\Events\ClientWasArchived;
use App\Events\ClientWasRestored; use App\Events\ClientWasRestored;
use App\Events\InvoiceWasCreated; use App\Events\InvoiceWasCreated;
use App\Events\InvoiceWasUpdated; use App\Events\InvoiceWasUpdated;
use App\Events\InvoiceWasDeleted; use App\Events\InvoiceWasDeleted;
@ -16,7 +12,6 @@ use App\Events\InvoiceWasArchived;
use App\Events\InvoiceWasRestored; use App\Events\InvoiceWasRestored;
use App\Events\InvoiceInvitationWasEmailed; use App\Events\InvoiceInvitationWasEmailed;
use App\Events\InvoiceInvitationWasViewed; use App\Events\InvoiceInvitationWasViewed;
use App\Events\QuoteWasCreated; use App\Events\QuoteWasCreated;
use App\Events\QuoteWasUpdated; use App\Events\QuoteWasUpdated;
use App\Events\QuoteWasDeleted; use App\Events\QuoteWasDeleted;
@ -25,17 +20,14 @@ use App\Events\QuoteWasRestored;
use App\Events\QuoteInvitationWasEmailed; use App\Events\QuoteInvitationWasEmailed;
use App\Events\QuoteInvitationWasViewed; use App\Events\QuoteInvitationWasViewed;
use App\Events\QuoteInvitationWasApproved; use App\Events\QuoteInvitationWasApproved;
use App\Events\PaymentWasCreated; use App\Events\PaymentWasCreated;
use App\Events\PaymentWasDeleted; use App\Events\PaymentWasDeleted;
use App\Events\PaymentWasArchived; use App\Events\PaymentWasArchived;
use App\Events\PaymentWasRestored; use App\Events\PaymentWasRestored;
use App\Events\CreditWasCreated; use App\Events\CreditWasCreated;
use App\Events\CreditWasDeleted; use App\Events\CreditWasDeleted;
use App\Events\CreditWasArchived; use App\Events\CreditWasArchived;
use App\Events\CreditWasRestored; use App\Events\CreditWasRestored;
use App\Ninja\Repositories\ActivityRepository; use App\Ninja\Repositories\ActivityRepository;
class ActivityListener class ActivityListener
@ -51,7 +43,7 @@ class ActivityListener
public function createdClient(ClientWasCreated $event) public function createdClient(ClientWasCreated $event)
{ {
$this->activityRepo->create( $this->activityRepo->create(
$event->client, $event->client,
ACTIVITY_TYPE_CREATE_CLIENT ACTIVITY_TYPE_CREATE_CLIENT
); );
} }
@ -59,7 +51,7 @@ class ActivityListener
public function deletedClient(ClientWasDeleted $event) public function deletedClient(ClientWasDeleted $event)
{ {
$this->activityRepo->create( $this->activityRepo->create(
$event->client, $event->client,
ACTIVITY_TYPE_DELETE_CLIENT ACTIVITY_TYPE_DELETE_CLIENT
); );
} }
@ -71,7 +63,7 @@ class ActivityListener
} }
$this->activityRepo->create( $this->activityRepo->create(
$event->client, $event->client,
ACTIVITY_TYPE_ARCHIVE_CLIENT ACTIVITY_TYPE_ARCHIVE_CLIENT
); );
} }
@ -79,17 +71,16 @@ class ActivityListener
public function restoredClient(ClientWasRestored $event) public function restoredClient(ClientWasRestored $event)
{ {
$this->activityRepo->create( $this->activityRepo->create(
$event->client, $event->client,
ACTIVITY_TYPE_RESTORE_CLIENT ACTIVITY_TYPE_RESTORE_CLIENT
); );
} }
// Invoices // Invoices
public function createdInvoice(InvoiceWasCreated $event) public function createdInvoice(InvoiceWasCreated $event)
{ {
$this->activityRepo->create( $this->activityRepo->create(
$event->invoice, $event->invoice,
ACTIVITY_TYPE_CREATE_INVOICE, ACTIVITY_TYPE_CREATE_INVOICE,
$event->invoice->getAdjustment() $event->invoice->getAdjustment()
); );
@ -97,14 +88,14 @@ class ActivityListener
public function updatedInvoice(InvoiceWasUpdated $event) public function updatedInvoice(InvoiceWasUpdated $event)
{ {
if ( ! $event->invoice->isChanged()) { if (! $event->invoice->isChanged()) {
return; return;
} }
$backupInvoice = Invoice::with('invoice_items', 'client.account', 'client.contacts')->find($event->invoice->id); $backupInvoice = Invoice::with('invoice_items', 'client.account', 'client.contacts')->find($event->invoice->id);
$activity = $this->activityRepo->create( $activity = $this->activityRepo->create(
$event->invoice, $event->invoice,
ACTIVITY_TYPE_UPDATE_INVOICE, ACTIVITY_TYPE_UPDATE_INVOICE,
$event->invoice->getAdjustment() $event->invoice->getAdjustment()
); );
@ -116,7 +107,7 @@ class ActivityListener
public function deletedInvoice(InvoiceWasDeleted $event) public function deletedInvoice(InvoiceWasDeleted $event)
{ {
$this->activityRepo->create( $this->activityRepo->create(
$event->invoice, $event->invoice,
ACTIVITY_TYPE_DELETE_INVOICE, ACTIVITY_TYPE_DELETE_INVOICE,
$event->invoice->balance * -1, $event->invoice->balance * -1,
$event->invoice->getAmountPaid() * -1 $event->invoice->getAmountPaid() * -1
@ -138,15 +129,17 @@ class ActivityListener
public function restoredInvoice(InvoiceWasRestored $event) public function restoredInvoice(InvoiceWasRestored $event)
{ {
$this->activityRepo->create( $this->activityRepo->create(
$event->invoice, $event->invoice,
ACTIVITY_TYPE_RESTORE_INVOICE ACTIVITY_TYPE_RESTORE_INVOICE,
$event->fromDeleted ? $event->invoice->balance : 0,
$event->fromDeleted ? $event->invoice->getAmountPaid() : 0
); );
} }
public function emailedInvoice(InvoiceInvitationWasEmailed $event) public function emailedInvoice(InvoiceInvitationWasEmailed $event)
{ {
$this->activityRepo->create( $this->activityRepo->create(
$event->invitation->invoice, $event->invitation->invoice,
ACTIVITY_TYPE_EMAIL_INVOICE, ACTIVITY_TYPE_EMAIL_INVOICE,
false, false,
false, false,
@ -157,7 +150,7 @@ class ActivityListener
public function viewedInvoice(InvoiceInvitationWasViewed $event) public function viewedInvoice(InvoiceInvitationWasViewed $event)
{ {
$this->activityRepo->create( $this->activityRepo->create(
$event->invoice, $event->invoice,
ACTIVITY_TYPE_VIEW_INVOICE, ACTIVITY_TYPE_VIEW_INVOICE,
false, false,
false, false,
@ -165,28 +158,26 @@ class ActivityListener
); );
} }
// Quotes // Quotes
public function createdQuote(QuoteWasCreated $event) public function createdQuote(QuoteWasCreated $event)
{ {
$this->activityRepo->create( $this->activityRepo->create(
$event->quote, $event->quote,
ACTIVITY_TYPE_CREATE_QUOTE ACTIVITY_TYPE_CREATE_QUOTE
); );
} }
public function updatedQuote(QuoteWasUpdated $event) public function updatedQuote(QuoteWasUpdated $event)
{ {
if ( ! $event->quote->isChanged()) { if (! $event->quote->isChanged()) {
return; return;
} }
$backupQuote = Invoice::with('invoice_items', 'client.account', 'client.contacts')->find($event->quote->id); $backupQuote = Invoice::with('invoice_items', 'client.account', 'client.contacts')->find($event->quote->id);
$activity = $this->activityRepo->create( $activity = $this->activityRepo->create(
$event->quote, $event->quote,
ACTIVITY_TYPE_UPDATE_QUOTE, ACTIVITY_TYPE_UPDATE_QUOTE
$event->quote->getAdjustment()
); );
$activity->json_backup = $backupQuote->hidePrivateFields()->toJSON(); $activity->json_backup = $backupQuote->hidePrivateFields()->toJSON();
@ -196,7 +187,7 @@ class ActivityListener
public function deletedQuote(QuoteWasDeleted $event) public function deletedQuote(QuoteWasDeleted $event)
{ {
$this->activityRepo->create( $this->activityRepo->create(
$event->quote, $event->quote,
ACTIVITY_TYPE_DELETE_QUOTE ACTIVITY_TYPE_DELETE_QUOTE
); );
} }
@ -208,7 +199,7 @@ class ActivityListener
} }
$this->activityRepo->create( $this->activityRepo->create(
$event->quote, $event->quote,
ACTIVITY_TYPE_ARCHIVE_QUOTE ACTIVITY_TYPE_ARCHIVE_QUOTE
); );
} }
@ -216,7 +207,7 @@ class ActivityListener
public function restoredQuote(QuoteWasRestored $event) public function restoredQuote(QuoteWasRestored $event)
{ {
$this->activityRepo->create( $this->activityRepo->create(
$event->quote, $event->quote,
ACTIVITY_TYPE_RESTORE_QUOTE ACTIVITY_TYPE_RESTORE_QUOTE
); );
} }
@ -224,7 +215,7 @@ class ActivityListener
public function emailedQuote(QuoteInvitationWasEmailed $event) public function emailedQuote(QuoteInvitationWasEmailed $event)
{ {
$this->activityRepo->create( $this->activityRepo->create(
$event->invitation->invoice, $event->invitation->invoice,
ACTIVITY_TYPE_EMAIL_QUOTE, ACTIVITY_TYPE_EMAIL_QUOTE,
false, false,
false, false,
@ -235,7 +226,7 @@ class ActivityListener
public function viewedQuote(QuoteInvitationWasViewed $event) public function viewedQuote(QuoteInvitationWasViewed $event)
{ {
$this->activityRepo->create( $this->activityRepo->create(
$event->quote, $event->quote,
ACTIVITY_TYPE_VIEW_QUOTE, ACTIVITY_TYPE_VIEW_QUOTE,
false, false,
false, false,
@ -246,7 +237,7 @@ class ActivityListener
public function approvedQuote(QuoteInvitationWasApproved $event) public function approvedQuote(QuoteInvitationWasApproved $event)
{ {
$this->activityRepo->create( $this->activityRepo->create(
$event->quote, $event->quote,
ACTIVITY_TYPE_APPROVE_QUOTE, ACTIVITY_TYPE_APPROVE_QUOTE,
false, false,
false, false,
@ -254,12 +245,11 @@ class ActivityListener
); );
} }
// Credits // Credits
public function createdCredit(CreditWasCreated $event) public function createdCredit(CreditWasCreated $event)
{ {
$this->activityRepo->create( $this->activityRepo->create(
$event->credit, $event->credit,
ACTIVITY_TYPE_CREATE_CREDIT ACTIVITY_TYPE_CREATE_CREDIT
); );
} }
@ -267,7 +257,7 @@ class ActivityListener
public function deletedCredit(CreditWasDeleted $event) public function deletedCredit(CreditWasDeleted $event)
{ {
$this->activityRepo->create( $this->activityRepo->create(
$event->credit, $event->credit,
ACTIVITY_TYPE_DELETE_CREDIT ACTIVITY_TYPE_DELETE_CREDIT
); );
} }
@ -279,7 +269,7 @@ class ActivityListener
} }
$this->activityRepo->create( $this->activityRepo->create(
$event->credit, $event->credit,
ACTIVITY_TYPE_ARCHIVE_CREDIT ACTIVITY_TYPE_ARCHIVE_CREDIT
); );
} }
@ -287,17 +277,16 @@ class ActivityListener
public function restoredCredit(CreditWasRestored $event) public function restoredCredit(CreditWasRestored $event)
{ {
$this->activityRepo->create( $this->activityRepo->create(
$event->credit, $event->credit,
ACTIVITY_TYPE_RESTORE_CREDIT ACTIVITY_TYPE_RESTORE_CREDIT
); );
} }
// Payments // Payments
public function createdPayment(PaymentWasCreated $event) public function createdPayment(PaymentWasCreated $event)
{ {
$this->activityRepo->create( $this->activityRepo->create(
$event->payment, $event->payment,
ACTIVITY_TYPE_CREATE_PAYMENT, ACTIVITY_TYPE_CREATE_PAYMENT,
$event->payment->amount * -1, $event->payment->amount * -1,
$event->payment->amount $event->payment->amount
@ -307,7 +296,7 @@ class ActivityListener
public function deletedPayment(PaymentWasDeleted $event) public function deletedPayment(PaymentWasDeleted $event)
{ {
$this->activityRepo->create( $this->activityRepo->create(
$event->payment, $event->payment,
ACTIVITY_TYPE_DELETE_PAYMENT, ACTIVITY_TYPE_DELETE_PAYMENT,
$event->payment->amount, $event->payment->amount,
$event->payment->amount * -1 $event->payment->amount * -1
@ -321,7 +310,7 @@ class ActivityListener
} }
$this->activityRepo->create( $this->activityRepo->create(
$event->payment, $event->payment,
ACTIVITY_TYPE_ARCHIVE_PAYMENT ACTIVITY_TYPE_ARCHIVE_PAYMENT
); );
} }
@ -329,9 +318,8 @@ class ActivityListener
public function restoredPayment(PaymentWasRestored $event) public function restoredPayment(PaymentWasRestored $event)
{ {
$this->activityRepo->create( $this->activityRepo->create(
$event->payment, $event->payment,
ACTIVITY_TYPE_RESTORE_PAYMENT ACTIVITY_TYPE_RESTORE_PAYMENT
); );
} }
} }

View File

@ -13,27 +13,32 @@ class BaseRepository
return new $className(); return new $className();
} }
private function dispatchEvent($entity, $type) private function getEventClass($entity, $type)
{ {
$className = 'App\Events\\' . ucfirst($entity->getEntityType()) . 'Was' . $type; return 'App\Events\\' . ucfirst($entity->getEntityType()) . 'Was' . $type;
event(new $className($entity));
} }
public function archive($entity) public function archive($entity)
{ {
$entity->delete(); $entity->delete();
$this->dispatchEvent($entity, 'Archived'); $className = $this->getEventClass($entity, 'Archived');
event(new $className($entity));
} }
public function restore($entity) public function restore($entity)
{ {
$fromDeleted = false;
$entity->restore(); $entity->restore();
$entity->is_deleted = false; if ($entity->is_deleted) {
$entity->save(); $fromDeleted = true;
$entity->is_deleted = false;
$entity->save();
}
$this->dispatchEvent($entity, 'Restored'); $className = $this->getEventClass($entity, 'Restored');
event(new $className($entity, $fromDeleted));
} }
public function delete($entity) public function delete($entity)
@ -43,7 +48,8 @@ class BaseRepository
$entity->delete(); $entity->delete();
$this->dispatchEvent($entity, 'Deleted'); $className = $this->getEventClass($entity, 'Deleted');
event(new $className($entity));
} }
public function findByPublicIds($ids) public function findByPublicIds($ids)