diff --git a/app/Listeners/Invoice/CreateInvoiceInvitation.php b/app/Listeners/Invoice/CreateInvoiceInvitation.php new file mode 100644 index 000000000000..97794045941c --- /dev/null +++ b/app/Listeners/Invoice/CreateInvoiceInvitation.php @@ -0,0 +1,60 @@ +invoice; + + $contacts = $invoice->client->contacts; + + $contacts->each(function ($contact) use($invoice){ + + $invitation = InvoiceInvitation::whereCompanyId($invoice->company_id) + ->whereClientContactId($contact->id) + ->whereInvoiceId($invoice->id) + ->first(); + + if(!$invitation && $contact->send_invoice) { + $ii = InvoiceInvitationFactory::create($invoice->company_id, $invoice->user_id); + $ii->invoice_id = $invoice->id; + $ii->client_contact_id = $contact->id; + $ii->save(); + } + else if($invitation && !$contact->send_invoice) { + $invitation->delete(); + } + + }); + + } +} \ No newline at end of file diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 9197afb97e3d..024b25e7096e 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -23,7 +23,7 @@ use App\Listeners\Activity\CreatedClientActivity; use App\Listeners\Activity\PaymentCreatedActivity; use App\Listeners\Contact\UpdateContactLastLogin; use App\Listeners\Invoice\CreateInvoiceActivity; -use App\Listeners\Invoice\CreateInvoiceInvitations; +use App\Listeners\Invoice\CreateInvoiceInvitation; use App\Listeners\Invoice\CreateInvoicePdf; use App\Listeners\Invoice\UpdateInvoiceActivity; use App\Listeners\SendVerificationNotification; @@ -73,7 +73,7 @@ class EventServiceProvider extends ServiceProvider //Invoices InvoiceWasMarkedSent::class => [ - CreateInvoiceInvitations::class, + CreateInvoiceInvitation::class, ], InvoiceWasUpdated::class => [ UpdateInvoiceActivity::class, diff --git a/app/Repositories/InvoiceRepository.php b/app/Repositories/InvoiceRepository.php index 43edf3f982d3..4853bb52f4f0 100644 --- a/app/Repositories/InvoiceRepository.php +++ b/app/Repositories/InvoiceRepository.php @@ -57,8 +57,7 @@ class InvoiceRepository extends BaseRepository $invoice->save(); - if(array_key_exists('invitations', $data)) - $this->saveInvitations($data['invitations'], $invoice); + event(new CreateInvoiceInvitation($invoice)); $invoice_calc = new InvoiceCalc($invoice, $invoice->settings); @@ -106,48 +105,15 @@ class InvoiceRepository extends BaseRepository */ private function markInvitationsSent(Invoice $invoice) :void { - $invoice->invitations->each(function($invitation, $key) { + $invoice->invitations->each(function($invitation) { if(!isset($invitation->sent_date)) { - - $invitation->sent_date = Carbon::now()->format(config('ninja.date_time_format')); - + $invitation->sent_date = Carbon::now(); $invitation->save(); - } }); } - - /** - * Saves invitations. - * - * @param array $invitations The invitations - * @param \App\Models\Invoice $invoice The invoice - * - * @return Invoice|\App\Models\Invoice Return the invoice object - */ - private function saveInvitations(array $invitations, Invoice $invoice) :Invoice - { - - foreach($invitations as $invitation) - { - //only insert new invitations - if(! array_key_exists('id', $invitation) || strlen($invitation['id']) == 0) - { - - $invitation = InvoiceInvitationFactory::create($invoice->company_id, $invoice->user_id); - $invitation->client_contact_id = $invitation['client_contact_id']; - $invitation->invoice_id = $invoice->id; - $invitation->save(); - - } - - } - - return $invoice; - } - } \ No newline at end of file diff --git a/config/session.php b/config/session.php index 38829b77c92a..45f629a2e7d0 100644 --- a/config/session.php +++ b/config/session.php @@ -122,10 +122,7 @@ return [ | */ - 'cookie' => env( - 'SESSION_COOKIE', - str_slug(env('APP_NAME', 'laravel'), '_').'_session' - ), + 'cookie' => 'ninja_session', /* |-------------------------------------------------------------------------- diff --git a/database/migrations/2014_10_13_000000_create_users_table.php b/database/migrations/2014_10_13_000000_create_users_table.php index fdbea76079d2..e50770efea4a 100644 --- a/database/migrations/2014_10_13_000000_create_users_table.php +++ b/database/migrations/2014_10_13_000000_create_users_table.php @@ -333,6 +333,7 @@ class CreateUsersTable extends Migration $table->string('password'); $table->string('token')->nullable(); $table->boolean('is_locked')->default(false); + $table->boolean('send_invoice')->default(true); $table->rememberToken(); $table->timestamps(6); $table->softDeletes(); diff --git a/database/seeds/RandomDataSeeder.php b/database/seeds/RandomDataSeeder.php index 6b3f1b578d90..f6732d5f0b7f 100644 --- a/database/seeds/RandomDataSeeder.php +++ b/database/seeds/RandomDataSeeder.php @@ -3,6 +3,7 @@ use App\DataMapper\ClientSettings; use App\DataMapper\CompanySettings; use App\DataMapper\DefaultSettings; +use App\Events\Invoice\InvoiceWasMarkedSent; use App\Events\Invoice\InvoiceWasUpdated; use App\Helpers\Invoice\InvoiceCalc; use App\Models\Account; @@ -110,12 +111,14 @@ class RandomDataSeeder extends Seeder $invoices = Invoice::all(); $invoices->each(function ($invoice){ - + $invoice_calc = new InvoiceCalc($invoice, $invoice->settings); $invoice = $invoice_calc->build()->getInvoice(); $invoice->save(); + + event(new InvoiceWasMarkedSent($invoice)); }); /** Recurring Invoice Factory */ diff --git a/tests/Feature/RecurringInvoicesCronTest.php b/tests/Feature/RecurringInvoicesCronTest.php index 56509b2cdef3..75015d050886 100644 --- a/tests/Feature/RecurringInvoicesCronTest.php +++ b/tests/Feature/RecurringInvoicesCronTest.php @@ -44,14 +44,6 @@ class RecurringInvoicesCronTest extends TestCase //spin up 5 valid and 1 invalid recurring invoices $recurring_invoices = RecurringInvoice::where('next_send_date', '<=', Carbon::now()->addMinutes(30))->get(); - // Log::error(Carbon::now()->addMinutes(30)->format(config('ninja.date_time_format'))); - - $recurring_invoices->each(function ($inv, $key) { - - // Log::error(Carbon::parse($inv->next_send_date)->format(config('ninja.date_time_format'))); - - }); - $recurring_all = RecurringInvoice::all(); $this->assertEquals(5, $recurring_invoices->count());