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->getCompletedAmount(), $payment->getCompletedAmount() * -1 ); } public function refundedPayment(PaymentWasRefunded $event) { $payment = $event->payment; $this->activityRepo->create( $payment, ACTIVITY_TYPE_REFUNDED_PAYMENT, $event->refundAmount, $event->refundAmount * -1 ); } public function voidedPayment(PaymentWasVoided $event) { $payment = $event->payment; $this->activityRepo->create( $payment, ACTIVITY_TYPE_VOIDED_PAYMENT, $payment->amount, $payment->amount * -1 ); } public function failedPayment(PaymentFailed $event) { $payment = $event->payment; $this->activityRepo->create( $payment, ACTIVITY_TYPE_FAILED_PAYMENT, $payment->getCompletedAmount(), $payment->getCompletedAmount() * -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->getCompletedAmount() * -1 : 0, $event->fromDeleted ? $payment->getCompletedAmount() : 0 ); } }