mirror of
				https://github.com/invoiceninja/invoiceninja.git
				synced 2025-11-03 20:47:33 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			336 lines
		
	
	
		
			8.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			336 lines
		
	
	
		
			8.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php namespace app\Listeners;
 | 
						|
 | 
						|
use App\Models\Invoice;
 | 
						|
use App\Events\ClientWasCreated;
 | 
						|
use App\Events\ClientWasDeleted;
 | 
						|
use App\Events\ClientWasArchived;
 | 
						|
use App\Events\ClientWasRestored;
 | 
						|
use App\Events\InvoiceWasCreated;
 | 
						|
use App\Events\InvoiceWasUpdated;
 | 
						|
use App\Events\InvoiceWasDeleted;
 | 
						|
use App\Events\InvoiceWasArchived;
 | 
						|
use App\Events\InvoiceWasRestored;
 | 
						|
use App\Events\InvoiceInvitationWasEmailed;
 | 
						|
use App\Events\InvoiceInvitationWasViewed;
 | 
						|
use App\Events\QuoteWasCreated;
 | 
						|
use App\Events\QuoteWasUpdated;
 | 
						|
use App\Events\QuoteWasDeleted;
 | 
						|
use App\Events\QuoteWasArchived;
 | 
						|
use App\Events\QuoteWasRestored;
 | 
						|
use App\Events\QuoteInvitationWasEmailed;
 | 
						|
use App\Events\QuoteInvitationWasViewed;
 | 
						|
use App\Events\QuoteInvitationWasApproved;
 | 
						|
use App\Events\PaymentWasCreated;
 | 
						|
use App\Events\PaymentWasDeleted;
 | 
						|
use App\Events\PaymentWasArchived;
 | 
						|
use App\Events\PaymentWasRestored;
 | 
						|
use App\Events\CreditWasCreated;
 | 
						|
use App\Events\CreditWasDeleted;
 | 
						|
use App\Events\CreditWasArchived;
 | 
						|
use App\Events\CreditWasRestored;
 | 
						|
use App\Ninja\Repositories\ActivityRepository;
 | 
						|
 | 
						|
class ActivityListener
 | 
						|
{
 | 
						|
    protected $activityRepo;
 | 
						|
 | 
						|
    public function __construct(ActivityRepository $activityRepo)
 | 
						|
    {
 | 
						|
        $this->activityRepo = $activityRepo;
 | 
						|
    }
 | 
						|
 | 
						|
    // Clients
 | 
						|
    public function createdClient(ClientWasCreated $event)
 | 
						|
    {
 | 
						|
        $this->activityRepo->create(
 | 
						|
            $event->client,
 | 
						|
            ACTIVITY_TYPE_CREATE_CLIENT
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    public function deletedClient(ClientWasDeleted $event)
 | 
						|
    {
 | 
						|
        $this->activityRepo->create(
 | 
						|
            $event->client,
 | 
						|
            ACTIVITY_TYPE_DELETE_CLIENT
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    public function archivedClient(ClientWasArchived $event)
 | 
						|
    {
 | 
						|
        if ($event->client->is_deleted) {
 | 
						|
            return;
 | 
						|
        }
 | 
						|
 | 
						|
        $this->activityRepo->create(
 | 
						|
            $event->client,
 | 
						|
            ACTIVITY_TYPE_ARCHIVE_CLIENT
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    public function restoredClient(ClientWasRestored $event)
 | 
						|
    {
 | 
						|
        $this->activityRepo->create(
 | 
						|
            $event->client,
 | 
						|
            ACTIVITY_TYPE_RESTORE_CLIENT
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    // Invoices
 | 
						|
    public function createdInvoice(InvoiceWasCreated $event)
 | 
						|
    {
 | 
						|
        $this->activityRepo->create(
 | 
						|
            $event->invoice,
 | 
						|
            ACTIVITY_TYPE_CREATE_INVOICE,
 | 
						|
            $event->invoice->getAdjustment()
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    public function updatedInvoice(InvoiceWasUpdated $event)
 | 
						|
    {
 | 
						|
        if (! $event->invoice->isChanged()) {
 | 
						|
            return;
 | 
						|
        }
 | 
						|
 | 
						|
        $backupInvoice = Invoice::with('invoice_items', 'client.account', 'client.contacts')->find($event->invoice->id);
 | 
						|
 | 
						|
        $activity = $this->activityRepo->create(
 | 
						|
            $event->invoice,
 | 
						|
            ACTIVITY_TYPE_UPDATE_INVOICE,
 | 
						|
            $event->invoice->getAdjustment()
 | 
						|
        );
 | 
						|
 | 
						|
        $activity->json_backup = $backupInvoice->hidePrivateFields()->toJSON();
 | 
						|
        $activity->save();
 | 
						|
    }
 | 
						|
 | 
						|
    public function deletedInvoice(InvoiceWasDeleted $event)
 | 
						|
    {
 | 
						|
        $invoice = $event->invoice;
 | 
						|
 | 
						|
        $this->activityRepo->create(
 | 
						|
            $invoice,
 | 
						|
            ACTIVITY_TYPE_DELETE_INVOICE,
 | 
						|
            $invoice->affectsBalance() ? $invoice->balance * -1 : 0,
 | 
						|
            $invoice->affectsBalance() ? $invoice->getAmountPaid() * -1 : 0
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    public function archivedInvoice(InvoiceWasArchived $event)
 | 
						|
    {
 | 
						|
        if ($event->invoice->is_deleted) {
 | 
						|
            return;
 | 
						|
        }
 | 
						|
 | 
						|
        $this->activityRepo->create(
 | 
						|
            $event->invoice,
 | 
						|
            ACTIVITY_TYPE_ARCHIVE_INVOICE
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    public function restoredInvoice(InvoiceWasRestored $event)
 | 
						|
    {
 | 
						|
        $invoice = $event->invoice;
 | 
						|
 | 
						|
        $this->activityRepo->create(
 | 
						|
            $invoice,
 | 
						|
            ACTIVITY_TYPE_RESTORE_INVOICE,
 | 
						|
            $invoice->affectsBalance() && $event->fromDeleted ? $invoice->balance : 0,
 | 
						|
            $invoice->affectsBalance() && $event->fromDeleted ? $invoice->getAmountPaid() : 0
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    public function emailedInvoice(InvoiceInvitationWasEmailed $event)
 | 
						|
    {
 | 
						|
        $this->activityRepo->create(
 | 
						|
            $event->invitation->invoice,
 | 
						|
            ACTIVITY_TYPE_EMAIL_INVOICE,
 | 
						|
            false,
 | 
						|
            false,
 | 
						|
            $event->invitation
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    public function viewedInvoice(InvoiceInvitationWasViewed $event)
 | 
						|
    {
 | 
						|
        $this->activityRepo->create(
 | 
						|
            $event->invoice,
 | 
						|
            ACTIVITY_TYPE_VIEW_INVOICE,
 | 
						|
            false,
 | 
						|
            false,
 | 
						|
            $event->invitation
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    // Quotes
 | 
						|
    public function createdQuote(QuoteWasCreated $event)
 | 
						|
    {
 | 
						|
        $this->activityRepo->create(
 | 
						|
            $event->quote,
 | 
						|
            ACTIVITY_TYPE_CREATE_QUOTE
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    public function updatedQuote(QuoteWasUpdated $event)
 | 
						|
    {
 | 
						|
        if (! $event->quote->isChanged()) {
 | 
						|
            return;
 | 
						|
        }
 | 
						|
 | 
						|
        $backupQuote = Invoice::with('invoice_items', 'client.account', 'client.contacts')->find($event->quote->id);
 | 
						|
 | 
						|
        $activity = $this->activityRepo->create(
 | 
						|
            $event->quote,
 | 
						|
            ACTIVITY_TYPE_UPDATE_QUOTE
 | 
						|
        );
 | 
						|
 | 
						|
        $activity->json_backup = $backupQuote->hidePrivateFields()->toJSON();
 | 
						|
        $activity->save();
 | 
						|
    }
 | 
						|
 | 
						|
    public function deletedQuote(QuoteWasDeleted $event)
 | 
						|
    {
 | 
						|
        $this->activityRepo->create(
 | 
						|
            $event->quote,
 | 
						|
            ACTIVITY_TYPE_DELETE_QUOTE
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    public function archivedQuote(QuoteWasArchived $event)
 | 
						|
    {
 | 
						|
        if ($event->quote->is_deleted) {
 | 
						|
            return;
 | 
						|
        }
 | 
						|
 | 
						|
        $this->activityRepo->create(
 | 
						|
            $event->quote,
 | 
						|
            ACTIVITY_TYPE_ARCHIVE_QUOTE
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    public function restoredQuote(QuoteWasRestored $event)
 | 
						|
    {
 | 
						|
        $this->activityRepo->create(
 | 
						|
            $event->quote,
 | 
						|
            ACTIVITY_TYPE_RESTORE_QUOTE
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    public function emailedQuote(QuoteInvitationWasEmailed $event)
 | 
						|
    {
 | 
						|
        $this->activityRepo->create(
 | 
						|
            $event->invitation->invoice,
 | 
						|
            ACTIVITY_TYPE_EMAIL_QUOTE,
 | 
						|
            false,
 | 
						|
            false,
 | 
						|
            $event->invitation
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    public function viewedQuote(QuoteInvitationWasViewed $event)
 | 
						|
    {
 | 
						|
        $this->activityRepo->create(
 | 
						|
            $event->quote,
 | 
						|
            ACTIVITY_TYPE_VIEW_QUOTE,
 | 
						|
            false,
 | 
						|
            false,
 | 
						|
            $event->invitation
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    public function approvedQuote(QuoteInvitationWasApproved $event)
 | 
						|
    {
 | 
						|
        $this->activityRepo->create(
 | 
						|
            $event->quote,
 | 
						|
            ACTIVITY_TYPE_APPROVE_QUOTE,
 | 
						|
            false,
 | 
						|
            false,
 | 
						|
            $event->invitation
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    // Credits
 | 
						|
    public function createdCredit(CreditWasCreated $event)
 | 
						|
    {
 | 
						|
        $this->activityRepo->create(
 | 
						|
            $event->credit,
 | 
						|
            ACTIVITY_TYPE_CREATE_CREDIT
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    public function deletedCredit(CreditWasDeleted $event)
 | 
						|
    {
 | 
						|
        $this->activityRepo->create(
 | 
						|
            $event->credit,
 | 
						|
            ACTIVITY_TYPE_DELETE_CREDIT
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    public function archivedCredit(CreditWasArchived $event)
 | 
						|
    {
 | 
						|
        if ($event->credit->is_deleted) {
 | 
						|
            return;
 | 
						|
        }
 | 
						|
 | 
						|
        $this->activityRepo->create(
 | 
						|
            $event->credit,
 | 
						|
            ACTIVITY_TYPE_ARCHIVE_CREDIT
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    public function restoredCredit(CreditWasRestored $event)
 | 
						|
    {
 | 
						|
        $this->activityRepo->create(
 | 
						|
            $event->credit,
 | 
						|
            ACTIVITY_TYPE_RESTORE_CREDIT
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    // Payments
 | 
						|
    public function createdPayment(PaymentWasCreated $event)
 | 
						|
    {
 | 
						|
        $this->activityRepo->create(
 | 
						|
            $event->payment,
 | 
						|
            ACTIVITY_TYPE_CREATE_PAYMENT,
 | 
						|
            $event->payment->amount * -1,
 | 
						|
            $event->payment->amount
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    public function deletedPayment(PaymentWasDeleted $event)
 | 
						|
    {
 | 
						|
        $payment = $event->payment;
 | 
						|
 | 
						|
        $this->activityRepo->create(
 | 
						|
            $payment,
 | 
						|
            ACTIVITY_TYPE_DELETE_PAYMENT,
 | 
						|
            $payment->amount,
 | 
						|
            $payment->amount * -1
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    public function archivedPayment(PaymentWasArchived $event)
 | 
						|
    {
 | 
						|
        if ($event->payment->is_deleted) {
 | 
						|
            return;
 | 
						|
        }
 | 
						|
 | 
						|
        $this->activityRepo->create(
 | 
						|
            $event->payment,
 | 
						|
            ACTIVITY_TYPE_ARCHIVE_PAYMENT
 | 
						|
        );
 | 
						|
    }
 | 
						|
 | 
						|
    public function restoredPayment(PaymentWasRestored $event)
 | 
						|
    {
 | 
						|
        $payment = $event->payment;
 | 
						|
 | 
						|
        $this->activityRepo->create(
 | 
						|
            $payment,
 | 
						|
            ACTIVITY_TYPE_RESTORE_PAYMENT,
 | 
						|
            $event->fromDeleted ? $payment->amount * -1 : 0,
 | 
						|
            $event->fromDeleted ? $payment->amount : 0
 | 
						|
        );
 | 
						|
    }
 | 
						|
}
 |