diff --git a/app/Events/Credit/CreditWasViewed.php b/app/Events/Credit/CreditWasViewed.php new file mode 100644 index 000000000000..ea5f1653909d --- /dev/null +++ b/app/Events/Credit/CreditWasViewed.php @@ -0,0 +1,37 @@ +invitation = $invitation; + $this->company = $company; + $this->event_vars = $event_vars; + } +} diff --git a/app/Http/Controllers/ClientPortal/InvitationController.php b/app/Http/Controllers/ClientPortal/InvitationController.php index 533c419e067a..8a25ccc32005 100644 --- a/app/Http/Controllers/ClientPortal/InvitationController.php +++ b/app/Http/Controllers/ClientPortal/InvitationController.php @@ -11,8 +11,10 @@ namespace App\Http\Controllers\ClientPortal; +use App\Events\Credit\CreditWasViewed; use App\Events\Invoice\InvoiceWasViewed; use App\Events\Misc\InvitationWasViewed; +use App\Events\Quote\QuoteWasViewed; use App\Http\Controllers\Controller; use App\Models\InvoiceInvitation; use App\Utils\Ninja; @@ -70,7 +72,12 @@ class InvitationController extends Controller case 'invoice': event(new InvoiceWasViewed($invitation, $invitation->company, Ninja::eventVars())); break; - + case 'quote': + event(new QuoteWasViewed($invitation, $invitation->company, Ninja::eventVars())); + break; + case 'credit': + event(new CreditWasViewed($invitation, $invitation->company, Ninja::eventVars())); + break; default: # code... break; diff --git a/app/Listeners/Credit/CreditViewedActivity.php b/app/Listeners/Credit/CreditViewedActivity.php new file mode 100644 index 000000000000..19701155873a --- /dev/null +++ b/app/Listeners/Credit/CreditViewedActivity.php @@ -0,0 +1,59 @@ +activity_repo = $activity_repo; + } + + /** + * Handle the event. + * + * @param object $event + * @return void + */ + public function handle($event) + { + MultiDB::setDb($event->company->db); + + $fields = new \stdClass; + + $fields->user_id = $event->invitation->user_id; + $fields->company_id = $event->invitation->company_id; + $fields->activity_type_id = Activity::VIEW_CREDIT; + $fields->client_id = $event->invitation->credit->client_id; + $fields->client_contact_id = $event->invitation->client_contact_id; + $fields->invitation_id = $event->invitation->id; + $fields->credit_id = $event->invitation->credit_id; + + $this->activity_repo->save($fields, $event->invitation->credit, $event->event_vars); + } +} diff --git a/app/Models/Activity.php b/app/Models/Activity.php index d79f10fd4513..32846b01b84b 100644 --- a/app/Models/Activity.php +++ b/app/Models/Activity.php @@ -73,11 +73,12 @@ class Activity extends StaticModel const DELETE_USER=51; // not needed? const RESTORE_USER=52; // not needed? const MARK_SENT_INVOICE=53; // not needed? - const PAID_INVOICE=54; + const PAID_INVOICE=54; // const EMAIL_INVOICE_FAILED=57; - const REVERSED_INVOICE=58; + const REVERSED_INVOICE=58; // const CANCELLED_INVOICE=59; - + const VIEW_CREDIT=60; // + protected $casts = [ 'is_system' => 'boolean', 'updated_at' => 'timestamp', diff --git a/app/PaymentDrivers/BaseDriver.php b/app/PaymentDrivers/BaseDriver.php index 3663280ea5e9..a3747d3306ac 100644 --- a/app/PaymentDrivers/BaseDriver.php +++ b/app/PaymentDrivers/BaseDriver.php @@ -12,12 +12,14 @@ namespace App\PaymentDrivers; +use App\Events\Invoice\InvoiceWasPaid; use App\Models\Client; use App\Models\ClientGatewayToken; use App\Models\CompanyGateway; use App\Models\Invoice; use App\Models\Payment; use App\PaymentDrivers\AbstractPaymentDriver; +use App\Utils\Ninja; use App\Utils\Traits\MakesHash; use App\Utils\Traits\SystemLogTrait; @@ -119,6 +121,10 @@ class BaseDriver extends AbstractPaymentDriver $payment->service()->applyNumber()->save(); + $invoices->each(function ($invoice) use($payment){ + event(new InvoiceWasPaid($invoice, $payment->company, Ninja::eventVars())); + }); + return $payment; } diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 103963a7d669..a2892147e5e6 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -28,6 +28,7 @@ use App\Events\Credit\CreditWasEmailedAndFailed; use App\Events\Credit\CreditWasMarkedSent; use App\Events\Credit\CreditWasRestored; use App\Events\Credit\CreditWasUpdated; +use App\Events\Credit\CreditWasViewed; use App\Events\Design\DesignWasArchived; use App\Events\Invoice\InvoiceWasArchived; use App\Events\Invoice\InvoiceWasCancelled; @@ -76,18 +77,21 @@ use App\Listeners\Activity\RestoreClientActivity; use App\Listeners\Activity\UpdatedCreditActivity; use App\Listeners\Contact\UpdateContactLastLogin; use App\Listeners\Credit\CreditRestoredActivity; +use App\Listeners\Credit\CreditViewedActivity; use App\Listeners\Document\DeleteCompanyDocuments; use App\Listeners\Invoice\CreateInvoiceActivity; use App\Listeners\Invoice\CreateInvoiceHtmlBackup; use App\Listeners\Invoice\CreateInvoiceInvitation; use App\Listeners\Invoice\CreateInvoicePdf; use App\Listeners\Invoice\InvoiceArchivedActivity; +use App\Listeners\Invoice\InvoiceCancelledActivity; use App\Listeners\Invoice\InvoiceDeletedActivity; use App\Listeners\Invoice\InvoiceEmailActivity; use App\Listeners\Invoice\InvoiceEmailFailedActivity; use App\Listeners\Invoice\InvoiceEmailedNotification; use App\Listeners\Invoice\InvoicePaidActivity; use App\Listeners\Invoice\InvoiceRestoredActivity; +use App\Listeners\Invoice\InvoiceReversedActivity; use App\Listeners\Invoice\InvoiceViewedActivity; use App\Listeners\Invoice\UpdateInvoiceActivity; use App\Listeners\Invoice\UpdateInvoiceInvitations; @@ -195,6 +199,9 @@ class EventServiceProvider extends ServiceProvider CreditWasRestored::class => [ CreditRestoredActivity::class, ], + CreditWasViewed::class => [ + CreditViewedActivity::class + ], //Designs DesignWasArchived::class => [ ], @@ -239,8 +246,10 @@ class EventServiceProvider extends ServiceProvider InvoiceRestoredActivity::class, ], InvoiceWasReversed::class => [ + InvoiceReversedActivity::class, ], InvoiceWasCancelled::class => [ + InvoiceCancelledActivity::class, ], InvitationWasViewed::class => [ InvitationViewedListener::class