NOS.Registration.AutoRegistrationPlugin.Host_UserAccountActivity C# (CSharp) Method

Host_UserAccountActivity() private method

private Host_UserAccountActivity ( object sender, UserAccountActivityEventArgs e ) : void
sender object
e ScrewTurn.Wiki.PluginFramework.UserAccountActivityEventArgs
return void
		void Host_UserAccountActivity(object sender, UserAccountActivityEventArgs e)
		{
			if (e.Activity != UserAccountActivity.AccountActivated)
			{
				return;
			}

			_synchronizer.Lock(() =>
				{
					var failed = false;
					User user = null;
					try
					{
						user = _registrationRepository.FindByUserName(e.User.Username);
						if (user == null)
						{
							return;
						}

						var pageInfo = _pageRepository.FindPage(_configuration.PageName);
						if (pageInfo == null)
						{
							_logger.Error(String.Format("The attendee page '{0}' does not exist.", _configuration.PageName), "SYSTEM");
							throw new Exception("Attendee page does not exist.");
						}

						PageContent pageContent;
						try
						{
							pageContent = _host.GetPageContent(pageInfo);
						}
						catch (Exception ex)
						{
							_logger.Error(String.Format("The attendee page's content ('{0}') could not be loaded: {1}", _configuration.PageName, ex),
								          "SYSTEM");
							throw;
						}

						try
						{
							string entry = _entryFormatter.FormatUserEntry(user, _settings, _configuration.EntryTemplate);
							string newContent = _pageFormatter.AddEntry(pageContent.Content, entry, user, _configuration);

							_pageRepository.Save(pageInfo, pageContent.Title, user.UserName, _configuration.Comment, newContent);

							_logger.Info("User entry written successfully", user.UserName);
						}
						catch (Exception ex)
						{
							_logger.Error(String.Format("Could not add the user's entry to the attendee list: {0}", ex), "SYSTEM");
							throw;
						}
					}
					catch
					{
						failed = true;
					}
					finally
					{
						if (user != null)
						{
							string message = LoadEmailTemplate(failed);
							message = FillTemplate(message, user);

							_notificationSender.SendMessage(e.User.Email, _configuration.Comment, message);
							_notificationSender.SendMessage(_settings.ContactEmail, _configuration.Comment, message);
						}
					}
				});
		}