Esempio n. 1
0
        public static string GetCustomMailTip(RecipientData recipientData, int traceId, int lcid)
        {
            MailTipsUtility.GetMailTipsTracer.TraceFunction((long)traceId, "Entering GetBestCustomMailTip");
            CultureInfo cultureInfo = null;

            try
            {
                cultureInfo = new CultureInfo(lcid);
            }
            catch (ArgumentException)
            {
                MailTipsUtility.GetMailTipsTracer.TraceDebug((long)traceId, "Exiting GetBestCustomMailTip - invalid culture, returning default");
                return(ADRecipient.DefaultMailTipGetter(recipientData.MailTipTranslations) as string);
            }
            object mailTipTranslations = recipientData.MailTipTranslations;

            if (mailTipTranslations == null)
            {
                return(null);
            }
            IList <string> list = (IList <string>)mailTipTranslations;

            if (list.Count == 0)
            {
                MailTipsUtility.GetMailTipsTracer.TraceDebug((long)traceId, "Exiting GetBestCustomMailTip - no values, returning null");
                return(null);
            }
            string result;

            if (list.Count != 1)
            {
                for (int i = 0; i < 10; i++)
                {
                    string name = cultureInfo.Name;
                    MailTipsUtility.GetMailTipsTracer.TraceDebug <string>((long)traceId, "Checking for custom MailTip for {0}", name);
                    if (MailTipsUtility.TryGetTranslation(list, name, out result))
                    {
                        MailTipsUtility.GetMailTipsTracer.TraceDebug((long)traceId, "Exiting GetBestCustomMailTip with match");
                        return(result);
                    }
                    if (cultureInfo == CultureInfo.InvariantCulture)
                    {
                        MailTipsUtility.GetMailTipsTracer.TraceDebug((long)traceId, "Exiting GetBestCustomMailTip with default");
                        return(ADRecipient.DefaultMailTipGetter(recipientData.MailTipTranslations) as string);
                    }
                    cultureInfo = cultureInfo.Parent;
                }
                return(ADRecipient.DefaultMailTipGetter(recipientData.MailTipTranslations) as string);
            }
            string text;

            if (ADRecipient.TryGetMailTipParts(list[0], out text, out result))
            {
                MailTipsUtility.GetMailTipsTracer.TraceDebug((long)traceId, "Exiting GetBestCustomMailTip - returning the sole value");
                return(result);
            }
            MailTipsUtility.GetMailTipsTracer.TraceDebug((long)traceId, "Exiting GetBestCustomMailTip - sole value corrupt, returning null");
            return(null);
        }