diff --git a/app/DataProviders/Domains.php b/app/DataProviders/Domains.php new file mode 100644 index 000000000000..814baeebad0f --- /dev/null +++ b/app/DataProviders/Domains.php @@ -0,0 +1,59398 @@ +request = $sp660339; @@ -77,7 +80,7 @@ class CreateAccount $sp794f3f->hosted_company_count = config('ninja.quotas.free.max_companies'); $sp794f3f->account_sms_verified = true; - if (in_array($this->getDomain($this->request['email']), ['mailto.plus', 'givmail.com','yopmail.com','gmail.com', 'hotmail.com', 'outlook.com', 'yahoo.com', 'aol.com', 'mail.ru','brand-app.biz','proton.me','ema-sofia.eu', 'mail.com', 'fastmail.com'])) { + if (in_array($this->getDomain($this->request['email']), Domains::getDomains())) { $sp794f3f->account_sms_verified = false; } @@ -166,4 +169,8 @@ class CreateAccount return 'gmail.com'; } + + + + } diff --git a/app/Listeners/Mail/MailSentListener.php b/app/Listeners/Mail/MailSentListener.php index 34bd8a5300e2..3ad8c7a70c68 100644 --- a/app/Listeners/Mail/MailSentListener.php +++ b/app/Listeners/Mail/MailSentListener.php @@ -11,15 +11,16 @@ namespace App\Listeners\Mail; +use App\Utils\Ninja; +use App\Models\Webhook; use App\Libraries\MultiDB; +use App\Models\QuoteInvitation; use App\Models\CreditInvitation; use App\Models\InvoiceInvitation; use App\Models\PurchaseOrderInvitation; -use App\Models\QuoteInvitation; -use App\Models\RecurringInvoiceInvitation; -use App\Utils\Ninja; -use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Events\MessageSent; +use App\Models\RecurringInvoiceInvitation; +use Illuminate\Contracts\Queue\ShouldQueue; use Symfony\Component\Mime\MessageConverter; class MailSentListener implements ShouldQueue @@ -41,30 +42,31 @@ class MailSentListener implements ShouldQueue */ public function handle(MessageSent $event) { - - if (!Ninja::isHosted()) { - return; - } - - $message_id = $event->sent->getMessageId(); + + try { + $message_id = $event->sent->getMessageId(); - $message = MessageConverter::toEmail($event->sent->getOriginalMessage()); + $message = MessageConverter::toEmail($event->sent->getOriginalMessage()); - if (!$message->getHeaders()->get('x-invitation')) { - return; - } - - $invitation_key = $message->getHeaders()->get('x-invitation')->getValue(); - - if ($message_id && $invitation_key) { - $invitation = $this->discoverInvitation($invitation_key); - - if (!$invitation) { + if (!$message->getHeaders()->get('x-invitation')) { return; } - $invitation->message_id = $message_id; - $invitation->save(); + $invitation_key = $message->getHeaders()->get('x-invitation')->getValue(); + + if ($message_id && $invitation_key) { + $invitation = $this->discoverInvitation($invitation_key); + + if (!$invitation) { + return; + } + + $invitation->message_id = $message_id; + $invitation->save(); + } + } catch (\Exception $e) { + nlog("Mail Sent Listener Exception"); + nlog($e->getMessage()); } } @@ -74,14 +76,18 @@ class MailSentListener implements ShouldQueue foreach (MultiDB::$dbs as $db) { if ($invitation = InvoiceInvitation::on($db)->where('key', $key)->first()) { + $invitation->invoice->sendEvent(Webhook::EVENT_SENT_INVOICE, "client"); return $invitation; } elseif ($invitation = QuoteInvitation::on($db)->where('key', $key)->first()) { + $invitation->quote->sendEvent(Webhook::EVENT_SENT_QUOTE, "client"); return $invitation; } elseif ($invitation = RecurringInvoiceInvitation::on($db)->where('key', $key)->first()) { return $invitation; } elseif ($invitation = CreditInvitation::on($db)->where('key', $key)->first()) { + $invitation->credit->sendEvent(Webhook::EVENT_SENT_CREDIT, "client"); return $invitation; } elseif ($invitation = PurchaseOrderInvitation::on($db)->where('key', $key)->first()) { + $invitation->purchase_order->sendEvent(Webhook::EVENT_SENT_PURCHASE_ORDER, "vendor"); return $invitation; } } diff --git a/tests/Integration/CompanyLedgerTest.php b/tests/Integration/CompanyLedgerTest.php index b64d8e33e184..6ee1bce7f5e9 100644 --- a/tests/Integration/CompanyLedgerTest.php +++ b/tests/Integration/CompanyLedgerTest.php @@ -11,31 +11,33 @@ namespace Tests\Integration; -use App\DataMapper\CompanySettings; -use App\DataMapper\InvoiceItem; -use App\Factory\CompanyUserFactory; -use App\Jobs\Ledger\UpdateLedger; -use App\Models\Account; +use Tests\TestCase; +use App\Models\User; use App\Models\Client; -use App\Models\ClientContact; +use App\Models\Account; use App\Models\Company; -use App\Models\CompanyLedger; -use App\Models\CompanyToken; use App\Models\Invoice; use App\Models\Payment; -use App\Models\User; +use App\Models\CompanyToken; +use App\Models\ClientContact; +use App\Models\CompanyLedger; +use App\Utils\Traits\AppSetup; +use App\DataMapper\InvoiceItem; use App\Utils\Traits\MakesHash; -use Illuminate\Foundation\Testing\DatabaseTransactions; +use App\Jobs\Ledger\UpdateLedger; +use App\DataMapper\CompanySettings; +use App\Factory\CompanyUserFactory; use Illuminate\Support\Facades\Hash; use Illuminate\Validation\ValidationException; -use Tests\TestCase; +use Illuminate\Foundation\Testing\DatabaseTransactions; /** @test*/ class CompanyLedgerTest extends TestCase { use DatabaseTransactions; use MakesHash; - + use AppSetup; + public $company; public $client; @@ -55,7 +57,8 @@ class CompanyLedgerTest extends TestCase $this->withoutExceptionHandling(); $this->artisan('db:seed --force'); - + $this->buildCache(true); + $this->faker = \Faker\Factory::create(); $fake_email = $this->faker->email(); diff --git a/tests/Unit/DomainCheckTest.php b/tests/Unit/DomainCheckTest.php new file mode 100644 index 000000000000..81bf7fd07757 --- /dev/null +++ b/tests/Unit/DomainCheckTest.php @@ -0,0 +1,35 @@ +assertTrue(in_array('yopmail.com', Domains::getDomains())); + $this->assertFalse(in_array('invoiceninja.com', Domains::getDomains())); + + } +}