/// <summary> /// See https://our.umbraco.org/documentation/Reference/Events/ for event handling documentation. /// </summary> /// <param name="umbracoApplication"></param> /// <param name="applicationContext"></param> protected override void ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext) { queueConnection = new SqlConnection(applicationContext.DatabaseContext.ConnectionString); /* ContentService MediaService ContentTypeService MemberService FileService LocalizationService DataTypeService */ var contentQueue = new ContentQueue(queueConnection); ContentService.Saved += contentQueue.ContentService_Saved; var mediaQueue = new MediaQueue(queueConnection); MediaService.Saved += mediaQueue.MediaService_Saved; MediaService.Deleted += mediaQueue.MediaService_Deleted; var memberQueue = new MemberQueue(queueConnection); MemberService.Created += memberQueue.MemberService_Created; base.ApplicationStarted(umbracoApplication, applicationContext); }
/// <summary> /// /// </summary> /// <param name="conn"></param> private static void ProcessMemberQueue(SqlConnection conn) { Console.WriteLine("Checking Member Queue..."); SqlTransaction tran = conn.BeginTransaction(); var queue = new MemberQueue(conn); SqlCommand command = queue.CreateReadCommand(tran); int rows = command.ExecuteNonQuery(); if (rows > 0) { var bodyXml = (System.Data.SqlTypes.SqlXml)command.Parameters["@message_body"].SqlValue; if (!bodyXml.IsNull) { string messageType = (string)command.Parameters["@message_type"].Value; Console.WriteLine(" -> Message: [" + messageType + "]"); switch (messageType) { case "//Member/Email/WelcomePackMessage": XElement messageBodyXml = XElement.Parse(bodyXml.Value); string name = messageBodyXml.Elements().Where(p => p.Name == "name").First().Value; string email = messageBodyXml.Elements().Where(p => p.Name == "email").First().Value; /* Invoke CRM API using name & email to request enrolemant in welcome pack workflow. */ Console.WriteLine(" -> Name: {0}, Email: {1}", name, email); tran.Commit(); break; default: tran.Rollback(); throw new InvalidOperationException("Unknown message type " + messageType); } } } else { tran.Rollback(); } }