public static UserInfo AddUser(UserInfo userInfo, string password, bool afterInvite = false, bool notify = true, bool isVisitor = false, bool fromInviteLink = false, bool makeUniqueName = true) { if (userInfo == null) { throw new ArgumentNullException("userInfo"); } CheckPasswordPolicy(password); if (!CheckUniqueEmail(userInfo.ID, userInfo.Email)) { throw new Exception(CustomNamingPeople.Substitute <Resources.Resource>("ErrorEmailAlreadyExists")); } if (makeUniqueName) { userInfo.UserName = MakeUniqueName(userInfo); } if (!userInfo.WorkFromDate.HasValue) { userInfo.WorkFromDate = TenantUtil.DateTimeNow(); } if (!CoreContext.Configuration.Personal && !fromInviteLink) { userInfo.ActivationStatus = !afterInvite ? EmployeeActivationStatus.Pending : EmployeeActivationStatus.Activated; } var newUserInfo = CoreContext.UserManager.SaveUserInfo(userInfo); CoreContext.Authentication.SetUserPassword(newUserInfo.ID, password); if (CoreContext.Configuration.Personal) { StudioNotifyService.Instance.SendUserWelcomePersonal(newUserInfo); return(newUserInfo); } if ((newUserInfo.Status & EmployeeStatus.Active) == EmployeeStatus.Active && notify) { //NOTE: Notify user only if it's active if (afterInvite) { if (isVisitor) { StudioNotifyService.Instance.GuestInfoAddedAfterInvite(newUserInfo, password); } else { StudioNotifyService.Instance.UserInfoAddedAfterInvite(newUserInfo, password); } if (fromInviteLink) { StudioNotifyService.Instance.SendEmailActivationInstructions(newUserInfo, newUserInfo.Email); } } else { //Send user invite if (isVisitor) { StudioNotifyService.Instance.GuestInfoActivation(newUserInfo); } else { StudioNotifyService.Instance.UserInfoActivation(newUserInfo); } } } if (isVisitor) { CoreContext.UserManager.AddUserIntoGroup(newUserInfo.ID, ASC.Core.Users.Constants.GroupVisitor.ID); } return(newUserInfo); }