/// <summary>
        /// Processes the template.
        /// </summary>
        /// <param name="templateName">Name of the template.</param>
        /// <param name="context">The context.</param>
        /// <param name="culture">The culture.</param>
        /// <returns>IProcessedTemplate.</returns>
        public IProcessedTemplate ProcessTemplate(string templateName, IDictionary <string, object> context,
                                                  CultureInfo culture)
        {
            IProcessedTemplate returnMessage = new ProcessedTemplate();
            var template = LoadTemplateFromRepository(templateName);

            if (template == null)
            {
                // TODO: write log that template was not found
                return(null);
            }

            var templateBody = template.Body;

            returnMessage.Subject = template.Subject;

            // get an appropriate language
            if (template.EmailTemplateLanguages.Any())
            {
                var langTemplate = template.EmailTemplateLanguages.Where(t => t.LanguageCode == culture.Name)
                                   .OrderBy(t => t.Priority).FirstOrDefault();

                if (langTemplate != null)
                {
                    templateBody          = langTemplate.Body;
                    returnMessage.Subject = langTemplate.Subject;
                }
            }
            try
            {
                returnMessage.Type = (EmailTemplateTypes)Enum.Parse(typeof(EmailTemplateTypes), template.Type);

                switch (returnMessage.Type)
                {
                case EmailTemplateTypes.Xsl:
                    returnMessage.Body = ProcessXslTemplate(templateBody, context);
                    break;

                case EmailTemplateTypes.Html:
                    returnMessage.Body = ProcessHtmlTemplate(templateBody, context);
                    break;

                case EmailTemplateTypes.Razor:
                    returnMessage.Body = ProcessRazorTemplate(templateBody, context);
                    break;

                case EmailTemplateTypes.Text:
                    returnMessage.Body = ProcessTextTemplate(templateBody, context);
                    break;
                }
            }
            catch (Exception ex)
            {
                Trace.TraceError(ex.ToString());
            }

            return(returnMessage);
        }
示例#2
0
        /// <summary>
        /// Processes the template.
        /// </summary>
        /// <param name="templateName">Name of the template.</param>
        /// <param name="context">The context.</param>
        /// <param name="culture">The culture.</param>
        /// <returns>IProcessedTemplate.</returns>
		public IProcessedTemplate ProcessTemplate(string templateName, IDictionary<string, object> context,
		                                          CultureInfo culture)
		{
			IProcessedTemplate returnMessage = new ProcessedTemplate();
			var template = LoadTemplateFromRepository(templateName);

			if (template == null)
			{
				// TODO: write log that template was not found
				return null;
			}

			var templateBody = template.Body;
			returnMessage.Subject = template.Subject;

			// get an appropriate language
			if (template.EmailTemplateLanguages.Any())
			{
				var langTemplate = template.EmailTemplateLanguages.Where(t => t.LanguageCode == culture.Name)
				                           .OrderBy(t => t.Priority).FirstOrDefault();

				if (langTemplate != null)
				{
					templateBody = langTemplate.Body;
					returnMessage.Subject = langTemplate.Subject;
				}
			}
			try
			{
				returnMessage.Type = (EmailTemplateTypes)Enum.Parse(typeof(EmailTemplateTypes), template.Type);

				switch (returnMessage.Type)
				{
					case EmailTemplateTypes.Xsl:
						returnMessage.Body = ProcessXslTemplate(templateBody, context);
						break;
					case EmailTemplateTypes.Html:
						returnMessage.Body = ProcessHtmlTemplate(templateBody, context);
						break;
					case EmailTemplateTypes.Text:
						returnMessage.Body = ProcessTextTemplate(templateBody, context);
						break;
				}
			}
			catch(Exception ex)
			{
				Trace.TraceError(ex.ToString());
			}

			return returnMessage;
		}