/** * @return CHelpdeskUser|bool */ public function RegisterHelpdeskAccount($iIdTenant, $sEmail, $sName, $sPassword, $bCreateFromFetcher = false) { $mResult = false; $oApiHelpdeskManager = CApi::Manager('helpdesk'); $oApiUsersManager = CApi::Manager('users'); $oApiCapabilityManager = CApi::Manager('capability'); if (!$oApiHelpdeskManager || !$oApiUsersManager || !$oApiCapabilityManager || !$oApiCapabilityManager->IsHelpdeskSupported()) { return $mResult; } $oUser = $oApiHelpdeskManager->GetUserByEmail($iIdTenant, $sEmail); if (!$oUser) { $oAccount = $oApiUsersManager->GetAccountOnLogin($sEmail); if ($oAccount && $oAccount->IdTenant === $iIdTenant && $oApiCapabilityManager->IsHelpdeskSupported($oAccount)) { throw new CApiManagerException(Errs::HelpdeskManager_UserAlreadyExists); } $oUser = new CHelpdeskUser(); $oUser->Activated = false; $oUser->Email = $sEmail; $oUser->Name = $sName; $oUser->IdTenant = $iIdTenant; $oUser->IsAgent = false; $oUser->SetPassword($sPassword, $bCreateFromFetcher); $oApiHelpdeskManager->CreateUser($oUser, $bCreateFromFetcher); if (!$oUser || 0 === $oUser->IdHelpdeskUser) { throw new CApiManagerException(Errs::HelpdeskManager_UserCreateFailed); } else { $mResult = $oUser; } } else { throw new CApiManagerException(Errs::HelpdeskManager_UserAlreadyExists); } return $mResult; }
/** * @param \CAccount $oAccount * * @return \CHelpdeskUser|null */ public function GetHelpdeskAccountFromMainAccount(&$oAccount) { $oResult = null; $oApiHelpdesk = $this->ApiHelpdesk(); if ($oAccount && $oAccount->IsDefaultAccount && $oApiHelpdesk && $this->oApiCapability->IsHelpdeskSupported($oAccount)) { if (0 < $oAccount->User->IdHelpdeskUser) { $oHelpdeskUser = $oApiHelpdesk->GetUserById($oAccount->IdTenant, $oAccount->User->IdHelpdeskUser); $oResult = $oHelpdeskUser instanceof \CHelpdeskUser ? $oHelpdeskUser : null; } if (!$oResult instanceof \CHelpdeskUser) { $oHelpdeskUser = $oApiHelpdesk->GetUserByEmail($oAccount->IdTenant, $oAccount->Email); $oResult = $oHelpdeskUser instanceof \CHelpdeskUser ? $oHelpdeskUser : null; if ($oResult instanceof \CHelpdeskUser) { $oAccount->User->IdHelpdeskUser = $oHelpdeskUser->IdHelpdeskUser; $this->oApiUsers->UpdateAccount($oAccount); } } if (!$oResult instanceof \CHelpdeskUser) { $oHelpdeskUser = new \CHelpdeskUser(); $oHelpdeskUser->Email = $oAccount->Email; $oHelpdeskUser->Name = $oAccount->FriendlyName; $oHelpdeskUser->IdSystemUser = $oAccount->IdUser; $oHelpdeskUser->IdTenant = $oAccount->IdTenant; $oHelpdeskUser->Activated = true; $oHelpdeskUser->IsAgent = true; $oHelpdeskUser->Language = $oAccount->User->DefaultLanguage; $oHelpdeskUser->DateFormat = $oAccount->User->DefaultDateFormat; $oHelpdeskUser->TimeFormat = $oAccount->User->DefaultTimeFormat; $oHelpdeskUser->SetPassword($oAccount->IncomingMailPassword); if ($oApiHelpdesk->CreateUser($oHelpdeskUser)) { $oAccount->User->IdHelpdeskUser = $oHelpdeskUser->IdHelpdeskUser; $this->oApiUsers->UpdateAccount($oAccount); $oResult = $oHelpdeskUser; } } } return $oResult; }