예제 #1
0
파일: Reminder.cs 프로젝트: 0anion0/IBN
        public static Alerts2.Message GetMessage(ReminderTemplate template, int? objectId, Guid? objectUid, ObjectTypes objectType, int userId, VariableInfo[] vars)
        {
            StringBuilder sbSubject = new StringBuilder();
            StringBuilder sbBody = new StringBuilder();

            IFormatProvider prov = new CultureInfo(template.Locale, true);

            sbSubject.Append(template.Subject);
            sbBody.Append(template.Body);

            bool IsExternalUser = User.IsExternal(userId);

            string gateGuid = "";

            if (IsExternalUser && objectId.HasValue)
            {
                if (userId > 0)
                    gateGuid = DBCommon.GetGateGuid((int)objectType, objectId.Value, userId);
                //				else
                //					gateGuid = DBCommon.GetGateGuid(eInfo.ObjectTypeId, eInfo.ObjectId, User);
            }

            // Replace variables with values
            foreach (VariableInfo var in vars)
            {
                string nameBegin = string.Format("[={0}=]", var.name);
                string nameEnd = string.Format("[=/{0}=]", var.name);

                string linkStartValue = string.Empty;
                string linkEndValue = string.Empty;

                if (var.IsLink) // Modify link
                {
                    if (IsExternalUser && !var.External)
                        var.value = string.Empty;

                    if (var.value.Length == 0)
                        linkStartValue = linkEndValue = string.Empty;
                    else
                    {
                        if (IsExternalUser)
                        {
                            if (userId > 0)
                                var.value = Alerts2.MakeExternalLink(var.value, User.GetUserLogin(userId), gateGuid);
                            //							else
                            //								var.value = Alert2.MakeClientLink(var.value, gateGuid);
                        }

                        // Add NoMenu parameter to the end of link
                        if (!var.DisableNoMenu && !User.GetMenuInAlerts(userId) && var.name != "PortalLink" && var.name != "ServerLink")
                        {
                            if (var.value.IndexOf('?') != -1)
                                var.value += '&';
                            else
                                var.value += '?';
                            var.value += "nomenu=1";
                        }

                        linkStartValue = string.Format("<a href='{0}'>", var.value);
                        linkEndValue = "</a>";
                    }
                }

                if (var.type == VariableType.Date.ToString())
                    var.value = Alerts2.DateReformat(var.value, prov);
                else if (var.type == VariableType.DateTime.ToString())
                    var.value = Alerts2.DateTimeReformat(var.value, prov, User.GetUserTimeZoneId(userId));

                sbSubject.Replace(nameBegin, var.value);

                if (var.IsLink)
                {
                    sbBody.Replace(nameBegin, linkStartValue);
                    sbBody.Replace(nameEnd, linkEndValue);
                }
                else
                {
                    var.value = HttpUtility.HtmlEncode(var.value).Replace("\r\n", "<BR>");
                    sbBody.Replace(nameBegin, var.value);
                }
            }

            return new Alerts2.Message(sbSubject.ToString(), sbBody.ToString());
        }
예제 #2
0
파일: Reminder.cs 프로젝트: 0anion0/IBN
        /// <summary>
        /// Gets the message template.
        /// </summary>
        /// <param name="dateType">Type of the date.</param>
        /// <param name="objecTypeId">The objec type id.</param>
        /// <param name="languageId">The language id.</param>
        /// <returns></returns>
        public static ReminderTemplate GetMessageTemplate(DateTypes dateType, int languageId)
        {
            ReminderTemplate retVal = null;

            retVal = new ReminderTemplate(dateType, languageId);
            retVal.Load();

            return retVal;
        }