App\Ninja\Repositories\AccountRepository::associateAccounts PHP Méthode

associateAccounts() public méthode

public associateAccounts ( $userId1, $userId2 )
    public function associateAccounts($userId1, $userId2)
    {
        $record = self::findUserAccounts($userId1, $userId2);
        if ($record) {
            foreach ([$userId1, $userId2] as $userId) {
                if (!$record->hasUserId($userId)) {
                    $record->setUserId($userId);
                }
            }
        } else {
            $record = new UserAccount();
            $record->user_id1 = $userId1;
            $record->user_id2 = $userId2;
        }
        $record->save();
        $users = $this->getUserAccounts($record);
        // Pick the primary user
        foreach ($users as $user) {
            if (!$user->public_id) {
                $useAsPrimary = false;
                if (empty($primaryUser)) {
                    $useAsPrimary = true;
                }
                $planDetails = $user->account->getPlanDetails(false, false);
                $planLevel = 0;
                if ($planDetails) {
                    $planLevel = 1;
                    if ($planDetails['plan'] == PLAN_ENTERPRISE) {
                        $planLevel = 2;
                    }
                    if (!$useAsPrimary && ($planLevel > $primaryUserPlanLevel || $planLevel == $primaryUserPlanLevel && $planDetails['expires'] > $primaryUserPlanExpires)) {
                        $useAsPrimary = true;
                    }
                }
                if ($useAsPrimary) {
                    $primaryUser = $user;
                    $primaryUserPlanLevel = $planLevel;
                    if ($planDetails) {
                        $primaryUserPlanExpires = $planDetails['expires'];
                    }
                }
            }
        }
        // Merge other companies into the primary user's company
        if (!empty($primaryUser)) {
            foreach ($users as $user) {
                if ($user == $primaryUser || $user->public_id) {
                    continue;
                }
                if ($user->account->company_id != $primaryUser->account->company_id) {
                    foreach ($user->account->company->accounts as $account) {
                        $account->company_id = $primaryUser->account->company_id;
                        $account->save();
                    }
                    $user->account->company->forceDelete();
                }
            }
        }
        return $users;
    }

Usage Example

 /**
  * @return \Illuminate\Http\RedirectResponse
  */
 public function getStarted()
 {
     $user = false;
     $guestKey = Input::get('guest_key');
     // local storage key to login until registered
     $prevUserId = Session::pull(PREV_USER_ID);
     // last user id used to link to new account
     if (Auth::check()) {
         return Redirect::to('invoices/create');
     }
     if (!Utils::isNinja() && (Account::count() > 0 && !$prevUserId)) {
         return Redirect::to('/login');
     }
     if ($guestKey && !$prevUserId) {
         $user = User::where('password', '=', $guestKey)->first();
         if ($user && $user->registered) {
             return Redirect::to('/');
         }
     }
     if (!$user) {
         $account = $this->accountRepo->create();
         $user = $account->users()->first();
         if ($prevUserId) {
             $users = $this->accountRepo->associateAccounts($user->id, $prevUserId);
             Session::put(SESSION_USER_ACCOUNTS, $users);
         }
     }
     Auth::login($user, true);
     event(new UserSignedUp());
     $redirectTo = Input::get('redirect_to') ?: 'invoices/create';
     return Redirect::to($redirectTo)->with('sign_up', Input::get('sign_up'));
 }
All Usage Examples Of App\Ninja\Repositories\AccountRepository::associateAccounts