diff --git a/app/Models/AccountToken.php b/app/Models/AccountToken.php
index dace5f00b91b..c68dde7148d2 100644
--- a/app/Models/AccountToken.php
+++ b/app/Models/AccountToken.php
@@ -3,6 +3,7 @@
namespace App\Models;
use Illuminate\Database\Eloquent\SoftDeletes;
+use App\Models\LookupToken;
/**
* Class AccountToken.
@@ -39,3 +40,10 @@ class AccountToken extends EntityModel
return $this->belongsTo('App\Models\User')->withTrashed();
}
}
+
+AccountToken::creating(function ($token)
+{
+ LookupToken::createNew($token->account->account_key, [
+ 'token' => $token->token,
+ ]);
+});
diff --git a/app/Models/Contact.php b/app/Models/Contact.php
index ef826e33792e..fe3547f99742 100644
--- a/app/Models/Contact.php
+++ b/app/Models/Contact.php
@@ -8,6 +8,7 @@ use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
use Illuminate\Database\Eloquent\SoftDeletes;
+use App\Models\LookupContact;
/**
* Class Contact.
@@ -165,3 +166,10 @@ class Contact extends EntityModel implements AuthenticatableContract, CanResetPa
return "{$url}/client/dashboard/{$this->contact_key}";
}
}
+
+Contact::creating(function ($contact)
+{
+ LookupContact::createNew($contact->account->account_key, [
+ 'contact_key' => $contact->contact_key,
+ ]);
+});
diff --git a/app/Models/Invitation.php b/app/Models/Invitation.php
index 7797eed651be..a33785af452d 100644
--- a/app/Models/Invitation.php
+++ b/app/Models/Invitation.php
@@ -5,6 +5,7 @@ namespace App\Models;
use Carbon;
use Illuminate\Database\Eloquent\SoftDeletes;
use Utils;
+use App\Models\LookupInvitation;
/**
* Class Invitation.
@@ -162,3 +163,10 @@ class Invitation extends EntityModel
return sprintf('
%s: %s', $this->signature_base64, trans('texts.signed'), Utils::fromSqlDateTime($this->signature_date));
}
}
+
+Invitation::creating(function ($invitation)
+{
+ LookupInvitation::createNew($invitation->account->account_key, [
+ 'invitation_key' => $invitation->invitation_key,
+ ]);
+});
diff --git a/app/Models/LookupAccount.php b/app/Models/LookupAccount.php
index cb9f3a672d76..935c3f6423df 100644
--- a/app/Models/LookupAccount.php
+++ b/app/Models/LookupAccount.php
@@ -7,13 +7,8 @@ use Eloquent;
/**
* Class ExpenseCategory.
*/
-class LookupAccount extends Eloquent
+class LookupAccount extends LookupModel
{
- /**
- * @var bool
- */
- public $timestamps = false;
-
/**
* @var array
*/
diff --git a/app/Models/LookupCompany.php b/app/Models/LookupCompany.php
index 0e8a32120262..dd07075247d2 100644
--- a/app/Models/LookupCompany.php
+++ b/app/Models/LookupCompany.php
@@ -7,13 +7,8 @@ use Eloquent;
/**
* Class ExpenseCategory.
*/
-class LookupCompany extends Eloquent
+class LookupCompany extends LookupModel
{
- /**
- * @var bool
- */
- public $timestamps = false;
-
/**
* @var array
*/
diff --git a/app/Models/LookupContact.php b/app/Models/LookupContact.php
index 025ba3e3ba55..2caf8c6ca6b1 100644
--- a/app/Models/LookupContact.php
+++ b/app/Models/LookupContact.php
@@ -7,13 +7,8 @@ use Eloquent;
/**
* Class ExpenseCategory.
*/
-class LookupContact extends Eloquent
+class LookupContact extends LookupModel
{
- /**
- * @var bool
- */
- public $timestamps = false;
-
/**
* @var array
*/
diff --git a/app/Models/LookupInvitation.php b/app/Models/LookupInvitation.php
index ebf9f1a4f6bd..7829a5c9a520 100644
--- a/app/Models/LookupInvitation.php
+++ b/app/Models/LookupInvitation.php
@@ -7,13 +7,8 @@ use Eloquent;
/**
* Class ExpenseCategory.
*/
-class LookupInvitation extends Eloquent
+class LookupInvitation extends LookupModel
{
- /**
- * @var bool
- */
- public $timestamps = false;
-
/**
* @var array
*/
diff --git a/app/Models/LookupModel.php b/app/Models/LookupModel.php
new file mode 100644
index 000000000000..914be6c1501d
--- /dev/null
+++ b/app/Models/LookupModel.php
@@ -0,0 +1,39 @@
+ DB_NINJA_LOOKUP]);
+
+ $lookupAccount = LookupAccount::whereAccountKey($accountKey)->first();
+
+ if ($lookupAccount) {
+ $data['lookup_account_id'] = $lookupAccount->id;
+ } else {
+ abort('Lookup account not found for ' . $accountKey);
+ }
+
+ static::create($data);
+
+ config(['database.default' => $current]);
+ }
+}
diff --git a/app/Models/LookupToken.php b/app/Models/LookupToken.php
index ed7294732204..a0b53514cbab 100644
--- a/app/Models/LookupToken.php
+++ b/app/Models/LookupToken.php
@@ -7,13 +7,8 @@ use Eloquent;
/**
* Class ExpenseCategory.
*/
-class LookupToken extends Eloquent
+class LookupToken extends LookupModel
{
- /**
- * @var bool
- */
- public $timestamps = false;
-
/**
* @var array
*/
diff --git a/app/Models/LookupUser.php b/app/Models/LookupUser.php
index e5820c57dd3b..33530bd2bddd 100644
--- a/app/Models/LookupUser.php
+++ b/app/Models/LookupUser.php
@@ -7,13 +7,8 @@ use Eloquent;
/**
* Class ExpenseCategory.
*/
-class LookupUser extends Eloquent
+class LookupUser extends LookupModel
{
- /**
- * @var bool
- */
- public $timestamps = false;
-
/**
* @var array
*/
diff --git a/app/Models/User.php b/app/Models/User.php
index 240234d878f5..2474ce2d42f5 100644
--- a/app/Models/User.php
+++ b/app/Models/User.php
@@ -10,6 +10,7 @@ use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Laracasts\Presenter\PresentableTrait;
use Session;
+use App\Models\LookupUser;
/**
* Class User.
@@ -412,6 +413,17 @@ class User extends Authenticatable
}
}
+User::creating(function ($user)
+{
+ if (! $user->registered) {
+ return;
+ }
+
+ LookupUser::createNew($user->account->account_key, [
+ 'email' => $user->email,
+ ]);
+});
+
User::updating(function ($user) {
User::onUpdatingUser($user);
});