invoice and bill reminding is moved console command to listeners

This commit is contained in:
Sevan Nerse 2020-04-15 11:27:58 +03:00
parent 981c825213
commit 4c988cb373
7 changed files with 120 additions and 27 deletions

View File

@ -4,7 +4,6 @@ namespace App\Console\Commands;
use App\Models\Common\Company;
use App\Models\Purchase\Bill;
use App\Notifications\Purchase\Bill as Notification;
use App\Utilities\Overrider;
use Date;
use Illuminate\Console\Command;
@ -60,7 +59,7 @@ class BillReminder extends Command
foreach ($days as $day) {
$day = (int) trim($day);
$this->remind($day, $company);
$this->remind($day);
}
}
@ -69,7 +68,7 @@ class BillReminder extends Command
setting()->forgetAll();
}
protected function remind($day, $company)
protected function remind($day)
{
// Get due date
$date = Date::today()->addDays($day)->toDateString();
@ -78,14 +77,8 @@ class BillReminder extends Command
$bills = Bill::with('contact')->accrued()->notPaid()->due($date)->cursor();
foreach ($bills as $bill) {
// Notify all users assigned to this company
foreach ($company->users as $user) {
if (!$user->can('read-notifications')) {
continue;
}
$user->notify(new Notification($bill, 'bill_remind_admin'));
}
event(new \App\Events\Purchase\BillReminding($bill));
}
}
}

View File

@ -4,7 +4,6 @@ namespace App\Console\Commands;
use App\Models\Common\Company;
use App\Models\Sale\Invoice;
use App\Notifications\Sale\Invoice as Notification;
use App\Utilities\Overrider;
use Date;
use Illuminate\Console\Command;
@ -60,7 +59,7 @@ class InvoiceReminder extends Command
foreach ($days as $day) {
$day = (int) trim($day);
$this->remind($day, $company);
$this->remind($day);
}
}
@ -69,7 +68,7 @@ class InvoiceReminder extends Command
setting()->forgetAll();
}
protected function remind($day, $company)
protected function remind($day)
{
// Get due date
$date = Date::today()->subDays($day)->toDateString();
@ -78,19 +77,7 @@ class InvoiceReminder extends Command
$invoices = Invoice::with('contact')->accrued()->notPaid()->due($date)->cursor();
foreach ($invoices as $invoice) {
// Notify the customer
if ($invoice->contact && !empty($invoice->contact_email)) {
$invoice->contact->notify(new Notification($invoice, 'invoice_remind_customer'));
}
// Notify all users assigned to this company
foreach ($company->users as $user) {
if (!$user->can('read-notifications')) {
continue;
}
$user->notify(new Notification($invoice, 'invoice_remind_admin'));
}
event(new \App\Events\Sale\InvoiceReminding($invoice));
}
}
}

View File

@ -0,0 +1,22 @@
<?php
namespace App\Events\Purchase;
use Illuminate\Queue\SerializesModels;
class BillReminding
{
use SerializesModels;
public $bill;
/**
* Create a new event instance.
*
* @param $bill
*/
public function __construct($bill)
{
$this->bill = $bill;
}
}

View File

@ -0,0 +1,22 @@
<?php
namespace App\Events\Sale;
use Illuminate\Queue\SerializesModels;
class InvoiceReminding
{
use SerializesModels;
public $invoice;
/**
* Create a new event instance.
*
* @param $invoice
*/
public function __construct($invoice)
{
$this->invoice = $invoice;
}
}

View File

@ -0,0 +1,29 @@
<?php
namespace App\Listeners\Purchase;
use App\Events\Purchase\BillReminding as Event;
use App\Notifications\Purchase\Bill as Notification;
class SendBillRemindingNotification
{
/**
* Handle the event.
*
* @param $event
* @return array
*/
public function handle(Event $event)
{
$bill = $event->bill;
// Notify all users assigned to this company
foreach ($bill->company->users as $user) {
if (!$user->can('read-notifications')) {
continue;
}
$user->notify(new Notification($bill, 'bill_remind_admin'));
}
}
}

View File

@ -0,0 +1,34 @@
<?php
namespace App\Listeners\Sale;
use App\Events\Sale\InvoiceReminding as Event;
use App\Notifications\Sale\Invoice as Notification;
class SendInvoiceRemindingNotification
{
/**
* Handle the event.
*
* @param $event
* @return array
*/
public function handle(Event $event)
{
$invoice = $event->invoice;
// Notify the customer
if ($invoice->contact && !empty($invoice->contact_email)) {
$invoice->contact->notify(new Notification($invoice, 'invoice_remind_customer'));
}
// Notify all users assigned to this company
foreach ($invoice->company->users as $user) {
if (!$user->can('read-notifications')) {
continue;
}
$user->notify(new Notification($invoice, 'invoice_remind_admin'));
}
}
}

View File

@ -39,6 +39,9 @@ class Event extends Provider
'App\Events\Purchase\BillRecurring' => [
'App\Listeners\Purchase\SendBillRecurringNotification',
],
'App\Events\Purchase\BillReminding' => [
'App\Listeners\Purchase\SendBillRemindingNotification',
],
'App\Events\Sale\PaymentReceived' => [
'App\Listeners\Sale\CreateInvoiceTransaction',
'App\Listeners\Sale\SendInvoicePaymentNotification',
@ -59,6 +62,9 @@ class Event extends Provider
'App\Events\Sale\InvoiceRecurring' => [
'App\Listeners\Sale\SendInvoiceRecurringNotification',
],
'App\Events\Sale\InvoiceReminding' => [
'App\Listeners\Sale\SendInvoiceRemindingNotification',
],
'App\Events\Menu\AdminCreated' => [
'App\Listeners\Menu\AddAdminItems',
],