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); });