コード例 #1
0
        public MessageTemplate(MessageTemplateType type)
        {
            switch (type)
            {
            case MessageTemplateType.In:
                _Message = _DefaultMessageIn;
                break;

            case MessageTemplateType.Out:
                _Message = _DefaultMessageOut;
                break;

            case MessageTemplateType.Outgoing:
                _Message = _DefaultMessageOutgoing;
                break;

            case MessageTemplateType.Incoming:
                _Message = _DefaultMessageIncoming;
                break;

            default:
                _Message = _DefaultMessageNotification;
                break;
            }
        }
コード例 #2
0
        public async Task <string> GetTemplate(
            MessageTemplateName name,
            CultureInfo culture,
            MessageTemplateType type,
            int environmentId)
        {
            const string query = @"
select ""Id"", ""Description"", ""Type"", ""Locale"", ""Name"", ""Template"", ""EnvironmentId""
from dom.""Message""
where ""Name"" = @Name
  and ""Type"" = @Type
  and ""EnvironmentId"" = @EnvironmentId
order by ""Locale""
";

            using (var con = _connectionProvider.Connection)
            {
                var templates = await con.QueryAsync <MessageTemplate>(query,
                                                                       new
                {
                    Name          = name.ToString(),
                    Type          = type.ToString(),
                    EnvironmentId = environmentId,
                });

                return(culture.GetMatchedTemplate(templates.ToArray()));
            }
        }
コード例 #3
0
ファイル: TwilioController.cs プロジェクト: thethorne48/PPOK
        public ActionResult VoiceMessage(int eventCode, string toDial)
        {
            if (!String.IsNullOrWhiteSpace(toDial))
            {
                return(VoiceMessageDial("", toDial));
            }

            Event e;

            using (var service = new EventService())
            {
                e = service.Get(eventCode);
            }
            if (e == null)
            {
                throw new ArgumentException("Invalid event code: " + eventCode);
            }
            MessageTemplateType       templateType = EventProcessingService.GetTemplateType(e);
            List <TwilioGatherOption> options      = TwilioService.GetGatherOptions(templateType);

            if (options.Count > 0)
            {
                return(VoiceMessageGather(e.Message, options));
            }
            return(VoiceMessageSay(null, e.Message));
        }
コード例 #4
0
        public Error SendTask(MessageTemplateType msgId,
                              TaskType notificationType,
                              LOVItemModel businessArea,
                              UserModel recipient,
                              int?customerId,
                              Dictionary <string, string> dict)
        {
            var error = new Error();

            var messageTemplate = db.FindMessageTemplate(_company.Id, msgId);

            if (messageTemplate == null)
            {
                error.SetError(EvolutionResources.errEMailTemplateNotFound);
            }
            else
            {
                error = SendTask(messageTemplate.Subject,
                                 messageTemplate.Message,
                                 notificationType,
                                 businessArea,
                                 recipient,
                                 customerId,
                                 dict);
            }
            return(error);
        }
コード例 #5
0
        private Result GetMailResult
        (
            MessageTemplateType type,
            SystemMailEntity systemMail,
            object additionalData,
            out MailEntity mail
        )
        {
            mail = null;

            var result = new Result();

            var template = _factory.GetMessageTemplate(type, additionalData);

            if (template == null)
            {
                result.Message = "Wrong tepmlate type.";
                return(result);
            }

            try
            {
                mail = template.GetMail(systemMail, additionalData);
            }
            catch (ArgumentException)
            {
                result.Message = "Can'nt build template. " +
                                 "Additional data has wrong type.";
                return(result);
            }

            result.Success = true;

            return(result);
        }
コード例 #6
0
        public static async Task <bool> PostTemplatedMessage(MessageTemplateType type, Dictionary <string, string> dic, List <ulong> channelIds, string message)
        {
            var templateFile = GetTemplate(type);

            if (string.IsNullOrEmpty(templateFile))
            {
                return(false);
            }
            var embed = await CompileTemplate(type, templateFile, dic);

            if (embed == null)
            {
                return(false);
            }
            var guildID      = SettingsManager.Settings.Config.DiscordGuildId;
            var discordGuild = APIHelper.DiscordAPI.Client.Guilds.FirstOrDefault(x => x.Id == guildID);

            foreach (var id in channelIds)
            {
                var channel = discordGuild?.GetTextChannel(id);
                if (channel != null)
                {
                    await APIHelper.DiscordAPI.SendMessageAsync(channel, message, embed).ConfigureAwait(false);
                }
            }
            return(true);
        }
コード例 #7
0
ファイル: TaskBase.cs プロジェクト: dangialdini/Evolution
        protected Error SendMessage(CompanyModel company,
                                    UserModel sender,
                                    MessageTemplateType templateId,
                                    TaskType notificationType,
                                    List <UserModel> recipients,
                                    Dictionary <string, string> dict,
                                    List <string> attachments = null)
        {
            // Send as email
            var message = new EMailMessage(sender, templateId);

            message.AddRecipients(recipients);
            message.AddProperties(dict);
            message.AddAttachments(attachments);


            EMailService.EMailService es = new EMailService.EMailService(_db, company);
            var error = es.SendEMail(message);

            //if (!error.IsError) {
            // Now send as a notification
            //    TaskManagerService.TaskManagerService ts = new TaskManagerService.TaskManagerService(_db, company);
            //    error = ts.SendTask(templateId, notificationType, recipients, dict);
            //}
            return(error);
        }
コード例 #8
0
ファイル: EMailMessage.cs プロジェクト: dangialdini/Evolution
        private void initialiseMessage(UserModel sender,
                                       UserModel recipient            = null,
                                       List <UserModel> recipients    = null,
                                       MessageTemplateType templateId = MessageTemplateType.None,
                                       string subject = "",
                                       string message = "")
        {
            Sender = sender;

            if (recipient != null)
            {
                AddRecipient(recipient);
            }
            if (recipients != null)
            {
                AddRecipients(recipients);
            }

            if (templateId != MessageTemplateType.None)
            {
                TemplateId = templateId;
                Subject    = Message = "";
            }
            else
            {
                TemplateId = MessageTemplateType.None;
                Subject    = subject;
                Message    = message;
            }
        }
コード例 #9
0
ファイル: TemplateHelper.cs プロジェクト: MokeyII/ThunderED
        public static string GetTemplate(MessageTemplateType type)
        {
            string typeFile;

            switch (type)
            {
            case MessageTemplateType.KillMailBig:
                typeFile = Path.Combine(SettingsManager.DataDirectory, "Templates", "Messages", "Template.killMailBig.txt");
                break;

            case MessageTemplateType.KillMailGeneral:
                typeFile = Path.Combine(SettingsManager.DataDirectory, "Templates", "Messages", "Template.killMailGeneral.txt");
                break;

            case MessageTemplateType.KillMailRadius:
                typeFile = Path.Combine(SettingsManager.DataDirectory, "Templates", "Messages", "Template.killMailRadius.txt");
                break;

            default:
                return(null);
            }

            if (!string.IsNullOrEmpty(typeFile) && File.Exists(typeFile))
            {
                return(typeFile);
            }
            return(null);
        }
コード例 #10
0
 public MessageTemplate(Pharmacy pharmacy, MessageTemplateType type, MessageTemplateMedia media, string content)
 {
     Pharmacy = pharmacy;
     Type     = type;
     Media    = media;
     Content  = content;
 }
コード例 #11
0
        public async Task <string> GetTemplate(
            MessageTemplateName name,
            CultureInfo culture,
            MessageTemplateType type,
            int environmentId)
        {
            const string query = @"
SELECT [Id]
      ,[Description]
      ,[Type]
      ,[Locale]
      ,[Name]
      ,[Template]
      ,[EnvironmentId]
  FROM [dom].[Message]
where [Name] = @Name
  and [Type] = @Type
  and [EnvironmentId] = @EnvironmentId
order by [Locale]
";

            using (var con = _connectionProvider.Connection)
            {
                var templates = await con.QueryAsync <MessageTemplate>(query,
                                                                       new
                {
                    Name          = name.ToString(),
                    Type          = type.ToString(),
                    EnvironmentId = environmentId,
                });

                return(culture.GetMatchedTemplate(templates.ToArray()));
            }
        }
コード例 #12
0
 public ActionResult GetContent(MessageTemplateType type, MessageTemplateMedia media)
 {
     using (var service = new MessageTemplateService())
     {
         var template = service.Get(User.Pharmacy, type, media);
         return(Content(template.Content));
     }
 }
コード例 #13
0
 public MessageResponseOption(MessageTemplateType type, string callbackFunc, string longDescription, string shortDescription, string verb)
 {
     Type             = type;
     CallbackFunction = callbackFunc;
     LongDescription  = longDescription;
     ShortDescription = shortDescription;
     Verb             = verb;
 }
コード例 #14
0
        public void loadArchiveSelectedUserDate(string selectedUser, string search, string date)
        {
            String HTMLResult = "<p></p>";

            if (this.InvokeRequired)
            {
                BeginInvoke(new loadArchiveSelectedUserDateDelegate(loadArchiveSelectedUserDate), new object[] { selectedUser, search });
                return;
            }
            ResetHTML();

            Emoticons myEmoticons = new Emoticons(Directory.GetCurrentDirectory() + "\\Emoticons\\");

            List <Remwave.Client.Storage.StorageMessage> list = mStorage.GetMessageFromArchiveByDate(selectedUser, search, 2048, date);

            for (int i = list.Count - 1; i >= 0; i--)
            {
                JabberUser jabberUser = null;

                MessageStyle        incomingStyle = new MessageStyle(Color.White, new System.Drawing.Font("Trebuchet MS", 8.5F, System.Drawing.FontStyle.Regular), Color.Black, Color.Red);
                MessageStyle        outgoingStyle = new MessageStyle(Color.White, new System.Drawing.Font("Trebuchet MS", 8.5F, System.Drawing.FontStyle.Regular), Color.Black, Color.Blue);
                MessageTemplateType template      = MessageTemplateType.Notification;
                MessageStyle        style         = new MessageStyle(Color.White, new System.Drawing.Font("Trebuchet MS", 8.5F, System.Drawing.FontStyle.Regular), Color.Gray, Color.Gray);

                String messageHTML = "";


                if (list[i].ContentHTML != "")
                {
                    messageHTML = list[i].ContentHTML;
                }
                else
                {
                    messageHTML = list[i].ContentText;
                }



                //Compatibility with legacy text only messages
                if (list[i].Direction == StorageItemDirection.In)
                {
                    style      = incomingStyle;
                    template   = MessageTemplateType.In;
                    jabberUser = new JabberUser(list[i].JID);
                }
                else
                {
                    style      = outgoingStyle;
                    template   = MessageTemplateType.Out;
                    jabberUser = new JabberUser(mStorage.Username);
                }
                IMMessage message = new IMMessage(jabberUser.Nick, messageHTML, list[i].GUID, list[i].Created, style, template, myEmoticons);
                HTMLResult += message.HTML;
            }
            wbConversation.Document.Body.InnerHtml += HTMLResult;
        }
コード例 #15
0
ファイル: TemplateHelper.cs プロジェクト: MokeyII/ThunderED
        public static async Task <Embed> GetTemplatedMessage(MessageTemplateType type, Dictionary <string, string> dic)
        {
            var templateFile = GetTemplate(type);

            if (string.IsNullOrEmpty(templateFile))
            {
                return(null);
            }
            return(await CompileTemplate(type, templateFile, dic));
        }
コード例 #16
0
        public static List <MessageResponseOption> GetResponseOptions(MessageTemplateType templateType)
        {
            List <MessageResponseOption> opts;

            using (var service = new MessageResponseOptionService())
            {
                opts = service.GetWhere(MessageResponseOptionService.MessageTemplateTypeCol == templateType);
            }
            return(opts);
        }
コード例 #17
0
 public ActionResult SaveTemplate(MessageTemplateType type, MessageTemplateMedia media, string content)
 {
     using (var service = new MessageTemplateService())
     {
         var template = service.Get(User.Pharmacy, type, media);
         template.Content = content;
         service.Update(template);
     }
     return(null);
 }
コード例 #18
0
        public static void HandleSMSResponse(string fromNumber, string fromBody, string messageSid)
        {
            string responseString = "";

            //unsubscribe
            if (twilioUnsubscribeVerbs.Find(v => v.ToLower().Equals(fromBody)) != null)
            {
                Patient p = GetPatientFromPhone(fromNumber);
                if (p != null)
                {
                    responseString = EventProcessingService.UnsubscribePatient(p);
                }
            }

            //subscribe
            if (twilioSubscribeVerbs.Find(v => v.ToLower().Equals(fromBody)) != null)
            {
                Patient p = GetPatientFromPhone(fromNumber);
                if (p != null && p.ContactPreference == ContactPreference.NONE)
                {
                    responseString = EventProcessingService.Subscribe(p);
                }
            }

            //system-specific responses
            if (responseString.Length == 0)
            {
                List <Event> openEvents = GetOpenSMSEventsFor(fromNumber);

                foreach (Event e in openEvents)
                {
                    MessageTemplateType          templateType = EventProcessingService.GetTemplateType(e);
                    List <MessageResponseOption> opts         = CommunicationsService.GetResponseOptions(templateType);
                    MessageResponseOption        opt          = opts.Find(o => { return(o.Verb.ToLower().Equals(fromBody)); });

                    var response = EventProcessingService.HandleResponse(opt, e);
                    if (response.GetType() == typeof(string))
                    {
                        responseString = (string)response;
                    }
                }
            }

            if (responseString.Length > 0)
            {
                SendSMSMessage(fromNumber, responseString);
            }
            else
            {
                throw new ArgumentException("Unexpected response: " + fromBody + " from message: " + messageSid);
            }
        }
コード例 #19
0
        private static void MergeAndSend(Event e, List <MessageTemplate> pharmacyTemplates)
        {
            if (e.Status == EventStatus.InActive)
            {
                throw new ArgumentException("Cannot send an inactive event");
            }

            MessageTemplateType  templateType  = GetTemplateType(e);
            MessageTemplateMedia templateMedia = GetMedia(e.Patient.ContactPreference);

            MessageTemplate template = GetMessageTemplate(pharmacyTemplates, templateType, templateMedia);

            MergeAndSend(e, template);
        }
コード例 #20
0
ファイル: MessageBuilder.cs プロジェクト: gabbacode/domain0
        public async Task <string> Build(
            MessageTemplateName templateName,
            MessageTemplateType templateType,
            params object[] args)
        {
            var currentEnvironment = await environment.LoadEnvironment();

            var messageTemplate = await templateRepository.GetTemplate(
                templateName,
                cultureContext.Culture,
                templateType,
                currentEnvironment.Id.Value);

            var message = string.Format(messageTemplate, args);

            return(message);
        }
コード例 #21
0
ファイル: TwilioController.cs プロジェクト: thethorne48/PPOK
        public ActionResult VoiceMessageGathered(string Digits)
        {
            string fromNumber = Request.Params["From"];
            string callSid    = Request.Params["CallSid"];

            bool   isActionFound = false;
            object response      = null;

            Event eventObj = EventProcessingService.GetEvent(callSid);
            MessageTemplateType       templateType = EventProcessingService.GetTemplateType(eventObj);
            List <TwilioGatherOption> optRedirects = TwilioService.GetGatherOptions(templateType);

            foreach (var opt in optRedirects)
            {
                if (opt.Digits.Equals(Digits))
                {
                    response = EventProcessingService.HandleResponse(opt.ResponseOption, eventObj);

                    isActionFound = true;
                }
            }

            if (!isActionFound)
            {
                response = new TwilioDialModel()
                {
                    MessageBody = "An application error has occurred. You are being redirected to your pharmacy for assistance.",
                    DialTo      = new PhoneNumber(eventObj.Patient.Pharmacy.Phone)
                };
            }

            if (response is TwilioDialModel)
            {
                TwilioDialModel tdm = (TwilioDialModel)response;
                return(RedirectToAction("VoiceMessageDial", new { toSay = tdm.MessageBody, toDial = tdm.DialTo }));
            }
            if (response is ActionResult)
            {
                return((ActionResult)response);
            }

            return(RedirectToAction("VoiceMessageSay", new { toSay = response.ToString() }));
        }
コード例 #22
0
        /// <summary>
        /// Geração do template para um tipo de mensagem
        /// </summary>
        /// <param name="messageTemplateType">Tipo de template para mensagem</param>
        /// <param name="data">Dados para substituição</param>
        /// <returns>String html</returns>
        public string GetSubject(
            MessageTemplateType messageTemplateType,
            dynamic data)
        {
            try
            {
                string messageTemplate = _enumHelpers.GetDisplay(messageTemplateType, Subjects.ResourceManager);
                if (!string.IsNullOrEmpty(messageTemplate))
                {
                    return(ReplaceData(messageTemplate, data));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, ex.Message);
            }

            return(null);
        }
コード例 #23
0
ファイル: TemplateHelper.cs プロジェクト: MokeyII/ThunderED
        public static async Task <bool> PostTemplatedMessage(MessageTemplateType type, Dictionary <string, string> dic, List <ulong> channelIds, string message)
        {
            var templateFile = GetTemplate(type);

            if (string.IsNullOrEmpty(templateFile))
            {
                return(false);
            }
            var embed = await CompileTemplate(type, templateFile, dic);

            if (embed == null)
            {
                return(false);
            }
            foreach (var id in channelIds)
            {
                await APIHelper.DiscordAPI.SendMessageAsync(id, message, embed).ConfigureAwait(false);
            }
            return(true);
        }
コード例 #24
0
        public MessageTemplateModel FindMessageTemplateModel(int companyId, MessageTemplateType templateId, bool bCreateEmptyIfNotfound = true)
        {
            MessageTemplateModel model = null;

            var et = db.FindMessageTemplate(companyId, templateId);

            if (et == null)
            {
                if (bCreateEmptyIfNotfound)
                {
                    model = new MessageTemplateModel();
                }
            }
            else
            {
                model = MapToModel(et);
            }

            return(model);
        }
コード例 #25
0
        public async Task <Result> SendAsync(MessageTemplateType type,
                                             SystemMailEntity systemMail, object additionalData)
        {
            var result = GetMailResult(type, systemMail,
                                       additionalData, out MailEntity mail);

            if (result.Success == false)
            {
                return(result);
            }

            using (_mailSender)
            {
                await _mailSender.SendMailAsync(mail);
            }

            result = new Result(true,
                                $"Message sended to user({systemMail.To}).");

            return(result);
        }
コード例 #26
0
 public MessageTemplate(MessageTemplateType type)
 {
     switch (type)
     {
         case MessageTemplateType.In:
             _Message = _DefaultMessageIn;
             break;
         case MessageTemplateType.Out:
             _Message = _DefaultMessageOut;
             break;
         case MessageTemplateType.Outgoing:
             _Message = _DefaultMessageOutgoing;
             break;
         case MessageTemplateType.Incoming:
             _Message = _DefaultMessageIncoming;
             break;
         default:
             _Message = _DefaultMessageNotification;
             break;
     }
 }
コード例 #27
0
ファイル: AuthBusiness.cs プロジェクト: paulonz/Nz.Framework
        /// <summary>
        /// Envio de email
        /// </summary>
        /// <param name="messageTemplateType">Template da mensagem</param>
        /// <param name="data">Dados da mensagem</param>
        /// <param name="firstName">Primeiro nome do destinatário</param>
        /// <param name="toEmail">Email do destinatário</param>
        /// <returns></returns>
        private async Task SendMailAsync(
            MessageTemplateType messageTemplateType,
            dynamic data,
            string firstName,
            string toEmail)
        {
            string message = _messageTemplate.GetTemplate(
                messageTemplateType,
                data);

            string subject = _messageTemplate.GetSubject(
                messageTemplateType,
                new
            {
                FirstName = firstName
            });

            await _emailSender.SendAsync(
                toEmail,
                subject,
                message).ConfigureAwait(false);
        }
コード例 #28
0
        public static List <TwilioGatherOption> GetGatherOptions(MessageTemplateType type)
        {
            List <MessageResponseOption> respOpts = CommunicationsService.GetResponseOptions(type);

            respOpts = respOpts.FindAll(o => { return(!string.IsNullOrWhiteSpace(o.LongDescription)); });

            //Func<string, string, object>[] handlerFuncs = null;

            var opts = new List <TwilioGatherOption>();

            for (int i = 0; respOpts != null && i < respOpts.Count; i++)
            {
                TwilioGatherOption opt = new TwilioGatherOption()
                {
                    Digits         = i.ToString(),
                    Description    = respOpts[i].LongDescription,
                    ResponseOption = respOpts[i]
                };
                opts.Add(opt);
            }

            return(opts);
        }
コード例 #29
0
        public IMMessage(String senderName, String messageText, String messageGUID, DateTime messageDateTime, MessageStyle style, MessageTemplateType template, Emoticons emoticons)
        {
            if (messageDateTime == null || messageDateTime == DateTime.MinValue) messageDateTime = DateTime.Now;
            this.Time = messageDateTime;
            if (messageGUID == null) messageGUID = Guid.NewGuid().ToString();
            this.ID = NormalizeGUID(messageGUID);
            MessageTemplate tmplMessageTemplate = new MessageTemplate(template);
            tmplMessageTemplate.Message = tmplMessageTemplate.Message
                     .Replace("<HEADER_ROW_STYLE>", tmplMessageTemplate.BuildStyle(style.Font, style.ForeColor, Color.White))
                     .Replace("<DATETIME_STYLE>", tmplMessageTemplate.BuildStyle(style.Font, Color.Gray, Color.White))
                     .Replace("<HEADER_STYLE>", tmplMessageTemplate.BuildStyle(style.Font, style.HeaderColor, Color.White))
                     .Replace("<ROW_STYLE>", tmplMessageTemplate.BuildStyle(style.Font, style.ForeColor, style.BackColor))
                     .Replace("<MESSAGE_STYLE>", tmplMessageTemplate.BuildStyle(style.Font, style.ForeColor, style.BackColor))
                     .Replace("<HEADER_TEXT>", senderName != "" ? senderName : "")
                     .Replace("<DATETIME_TEXT>", messageDateTime.ToShortDateString() + " " + messageDateTime.ToShortTimeString())
                     .Replace("<GUID>", this.ID)
                     .Replace("<MESSAGE_TEXT>", messageText.Replace("\r\n", "<BR />").Replace("\n", "<BR />"));
            tmplMessageTemplate.ProcessEmoticons(emoticons);

            this.HTML = tmplMessageTemplate.Message;
            this.Text = messageText;
            this.Style = style;

        }
コード例 #30
0
ファイル: TemplateHelper.cs プロジェクト: MokeyII/ThunderED
        public static async Task <Embed> CompileTemplate(MessageTemplateType type, string fileName, Dictionary <string, string> dic)
        {
            try
            {
                var isNpcKill = dic.ContainsKey("{isNpcKill}") && Convert.ToBoolean(dic["{isNpcKill}"]);
                var isLoss    = dic.ContainsKey("{isLoss}") && Convert.ToBoolean(dic["{isLoss}"]);
                var isAwox    = dic.ContainsKey("{isAwoxKill}") && Convert.ToBoolean(dic["{isAwoxKill}"]);
                var isSolo    = dic.ContainsKey("{isSoloKill}") && Convert.ToBoolean(dic["{isSoloKill}"]);
                if (dic.ContainsKey("{isNpcKill}"))
                {
                    dic.Remove("{isNpcKill}");
                }
                if (dic.ContainsKey("{isLoss}"))
                {
                    dic.Remove("{isLoss}");
                }
                if (dic.ContainsKey("{isAwoxKill}"))
                {
                    dic.Remove("{isAwoxKill}");
                }
                if (dic.ContainsKey("{isSoloKill}"))
                {
                    dic.Remove("{isSoloKill}");
                }

                var isRadiusRange = dic.ContainsKey("{isRangeMode}") && Convert.ToBoolean(dic["{isRangeMode}"]);
                if (dic.ContainsKey("{isRangeMode}"))
                {
                    dic.Remove("{isRangeMode}");
                }
                var isRadiusConst = dic.ContainsKey("{isConstMode}") && Convert.ToBoolean(dic["{isConstMode}"]);
                if (dic.ContainsKey("{isConstMode}"))
                {
                    dic.Remove("{isConstMode}");
                }
                var isRadiusRegion = dic.ContainsKey("{isRegionMode}") && Convert.ToBoolean(dic["{isRegionMode}"]);
                if (dic.ContainsKey("{isRegionMode}"))
                {
                    dic.Remove("{isRegionMode}");
                }
                if (!dic.ContainsKey("{NewLine}"))
                {
                    dic.Add("{NewLine}", Environment.NewLine);
                }

                var lines = (await File.ReadAllLinesAsync(fileName))
                            .Where(a => !a.StartsWith("//") && !string.IsNullOrWhiteSpace(a)).ToList();

                foreach (var pair in dic)
                {
                    for (var i = 0; i < lines.Count; i++)
                    {
                        lines[i] = lines[i].Replace(pair.Key, pair.Value).Trim().TrimStart('\t');
                    }
                }
                switch (type)
                {
                case MessageTemplateType.Custom:
                case MessageTemplateType.KillMailBig:
                case MessageTemplateType.KillMailRadius:
                case MessageTemplateType.KillMailGeneral:
                {
                    bool isAuthor             = false;
                    var  embed                = new EmbedBuilder();
                    EmbedAuthorBuilder author = null;

                    lines.ForEach(line =>
                        {
                            var text = line;
                            if (text.StartsWith("EmbedBuilder"))
                            {
                                return;
                            }

                            if (type == MessageTemplateType.KillMailRadius)
                            {
                                if (text.StartsWith("#if {isRangeMode}", StringComparison.OrdinalIgnoreCase))
                                {
                                    if (!isRadiusRange)
                                    {
                                        return;
                                    }
                                    text = text.Substring(17, text.Length - 17).Trim();
                                }
                                if (text.StartsWith("#if !{isRangeMode}", StringComparison.OrdinalIgnoreCase))
                                {
                                    if (isRadiusRange)
                                    {
                                        return;
                                    }
                                    text = text.Substring(18, text.Length - 18).Trim();
                                }
                                if (text.StartsWith("#if {isConstMode}", StringComparison.OrdinalIgnoreCase))
                                {
                                    if (!isRadiusConst)
                                    {
                                        return;
                                    }
                                    text = text.Substring(17, text.Length - 17).Trim();
                                }
                                if (text.StartsWith("#if !{isConstMode}", StringComparison.OrdinalIgnoreCase))
                                {
                                    if (isRadiusConst)
                                    {
                                        return;
                                    }
                                    text = text.Substring(18, text.Length - 18).Trim();
                                }

                                if (text.StartsWith("#if {isRegionMode}", StringComparison.OrdinalIgnoreCase))
                                {
                                    if (!isRadiusRegion)
                                    {
                                        return;
                                    }
                                    text = text.Substring(18, text.Length - 18).Trim();
                                }
                                if (text.StartsWith("#if !{isRegionMode}", StringComparison.OrdinalIgnoreCase))
                                {
                                    if (isRadiusRegion)
                                    {
                                        return;
                                    }
                                    text = text.Substring(19, text.Length - 19).Trim();
                                }
                            }

                            if (text.StartsWith("#if {isNpcKill}", StringComparison.OrdinalIgnoreCase))
                            {
                                if (!isNpcKill)
                                {
                                    return;
                                }
                                text = text.Substring(15, text.Length - 15).Trim();
                            }
                            if (text.StartsWith("#if !{isNpcKill}", StringComparison.OrdinalIgnoreCase))
                            {
                                if (isNpcKill)
                                {
                                    return;
                                }
                                text = text.Substring(16, text.Length - 16).Trim();
                            }

                            if (text.StartsWith("#if {isLoss}", StringComparison.OrdinalIgnoreCase))
                            {
                                if (!isLoss)
                                {
                                    return;
                                }
                                text = text.Substring(12, text.Length - 12).Trim();
                            }
                            if (text.StartsWith("#if !{isLoss}", StringComparison.OrdinalIgnoreCase))
                            {
                                if (isLoss)
                                {
                                    return;
                                }
                                text = text.Substring(13, text.Length - 13).Trim();
                            }

                            if (text.StartsWith("#if {isAwoxKill}", StringComparison.OrdinalIgnoreCase))
                            {
                                if (!isAwox)
                                {
                                    return;
                                }
                                text = text.Substring(16, text.Length - 16).Trim();
                            }
                            if (text.StartsWith("#if !{isAwoxKill}", StringComparison.OrdinalIgnoreCase))
                            {
                                if (isAwox)
                                {
                                    return;
                                }
                                text = text.Substring(17, text.Length - 17).Trim();
                            }

                            if (text.StartsWith("#if {isSoloKill}", StringComparison.OrdinalIgnoreCase))
                            {
                                if (!isSolo)
                                {
                                    return;
                                }
                                text = text.Substring(16, text.Length - 16).Trim();
                            }
                            if (text.StartsWith("#if !{isSoloKill}", StringComparison.OrdinalIgnoreCase))
                            {
                                if (isSolo)
                                {
                                    return;
                                }
                                text = text.Substring(17, text.Length - 17).Trim();
                            }

                            if (!isAuthor && text.StartsWith(".WithAuthor", StringComparison.OrdinalIgnoreCase))
                            {
                                isAuthor = true;
                                author   = new EmbedAuthorBuilder();
                                return;
                            }

                            if (isAuthor && text.StartsWith(")"))
                            {
                                isAuthor = false;
                                embed.WithAuthor(author);
                                return;
                            }

                            if (isAuthor)
                            {
                                if (text.StartsWith(".WithName", StringComparison.OrdinalIgnoreCase))
                                {
                                    author.WithName(GetText(text));
                                }
                                else if (text.StartsWith(".WithUrl", StringComparison.OrdinalIgnoreCase))
                                {
                                    author.WithUrl(GetText(text));
                                }
                                else if (text.StartsWith(".WithIconUrl", StringComparison.OrdinalIgnoreCase))
                                {
                                    author.WithIconUrl(GetText(text));
                                }
                            }
                            else
                            {
                                if (text.StartsWith(".WithColor", StringComparison.OrdinalIgnoreCase))
                                {
                                    embed.WithColor(GetColor(text));
                                }
                                else if (text.StartsWith(".WithDescription(", StringComparison.OrdinalIgnoreCase))
                                {
                                    embed.WithDescription(GetText(text));
                                }
                                else if (text.StartsWith(".WithThumbnailUrl(", StringComparison.OrdinalIgnoreCase))
                                {
                                    embed.WithThumbnailUrl(GetText(text));
                                }
                                else if (text.StartsWith(".WithImageUrl(", StringComparison.OrdinalIgnoreCase))
                                {
                                    embed.WithImageUrl(GetText(text));
                                }
                                else if (text.StartsWith(".WithTitle(", StringComparison.OrdinalIgnoreCase))
                                {
                                    embed.WithTitle(GetText(text));
                                }
                                else if (text.StartsWith(".AddField"))
                                {
                                    var result = GetDoubleText(text);
                                    embed.AddField(result[0], result[1]);
                                }
                                else if (text.StartsWith(".AddInlineField", StringComparison.OrdinalIgnoreCase))
                                {
                                    var result = GetDoubleText(text);
                                    embed.AddField(result[0], result[1], true);
                                }
                                else if (text.StartsWith(".WithFooter", StringComparison.OrdinalIgnoreCase))
                                {
                                    embed.WithFooter(GetText(text));
                                }
                                else if (text.StartsWith(".WithTimestamp", StringComparison.OrdinalIgnoreCase))
                                {
                                    if (DateTimeOffset.TryParse(dic["{timestamp}"], out var time))
                                    {
                                        embed.WithTimestamp(time);
                                    }
                                    else
                                    {
                                        embed.WithCurrentTimestamp();
                                    }
                                }
                            }
                        });
                    return(embed.Build());
                }

                default: return(null);
                }
            }
            catch (Exception ex)
            {
                await LogHelper.LogEx(ex.Message, ex, LogCat.Templates);

                return(null);
            }
        }
コード例 #31
0
ファイル: ChatWindow.cs プロジェクト: biddyweb/communicator
        public void AddNotification(String jid, String senderEvent, string messageText, DateTime messageDateTime, string messageGUID, bool flashWindow, bool forceChat)
        {
            if (InvokeRequired)
            {
                this.Invoke(new AddNotificationDelegate(this.AddNotification), new object[] { jid, senderEvent, messageText, messageDateTime, messageGUID, flashWindow });
                return;
            }

            //IMMessage parameters
            MessageStyle        style           = new MessageStyle(Color.White, new System.Drawing.Font("Trebuchet MS", 8.5F, System.Drawing.FontStyle.Regular), Color.Gray, Color.Gray);
            MessageTemplateType template        = MessageTemplateType.Notification;
            ChatSession         tmplChatSession = (ChatSession)myChatSessions[jid];
            JabberUser          jabberUser      = new JabberUser(jid);

            switch (senderEvent)
            {
            case "INFO":
                senderEvent = "";
                if (flashWindow)
                {
                    myClientForm.myNotifyIcon.ShowBalloonTip(10, jabberUser.Nick, messageText, ToolTipIcon.Info);
                }
                break;

            case "CLIENT":
            case "SERVER":
            case "PRESENCE":
            case "BUDDYUPDATE":
                senderEvent = Properties.Localization.txtChatInfoSenderSystem;
                break;

            case "NUDGE":
                senderEvent = "";
                myClientForm.mClientEvents.RaiseEvent(Remwave.Client.Events.ClientEvent.IncomingNudge);
                FlashWindow(this.Handle, true);
                #region Shake Window
                Random rand = new Random();
                int    left = this.Left;
                int    top  = this.Top;
                for (int i = 0; i < 30; i++)
                {
                    int randLeft = rand.Next(-10, 10);
                    int randTop  = rand.Next(-10, 10);
                    this.Left = (left + randLeft) > 0 ? left + randLeft : 0;
                    this.Top  = (top + randTop) > 0 ? left + randLeft : 0;
                    Thread.Sleep(50);
                }
                this.Left = left;
                this.Top  = top;
                #endregion
                break;

            case "INVITE":
                senderEvent = Properties.Localization.txtChatInfoSenderUser;
                myClientForm.mClientEvents.RaiseEvent(Remwave.Client.Events.ClientEvent.IncomingInstantMessage);
                break;
            }

            if (forceChat && tmplChatSession == null)
            {
                try
                {
                    JabberUser  chatJabberUser;
                    ContactList contactList = myClientForm.mContactBook.getCandidatesForJabberID(jid);
                    if (contactList.Count > 0)
                    {
                        NTContact ntContact = (NTContact)contactList[0];
                        chatJabberUser = new JabberUser(ntContact.NTJabberID, ntContact.NTNickname);
                    }
                    else
                    {
                        chatJabberUser = new JabberUser(jid);
                    }

                    NewChat(chatJabberUser, false);
                    tmplChatSession = (ChatSession)myChatSessions[chatJabberUser.JID];
                    if (tmplChatSession == null)
                    {
                        return;
                    }
                }
                catch (Exception)
                {
                    return;
                }
            }

            //if chat session exist display content in conversation window
            if (tmplChatSession != null)
            {
                if (tmplChatSession.ChatBox.ChatTabConversation != null)
                {
                    IMMessage message = new IMMessage(senderEvent, messageText, messageGUID, messageDateTime, style, template, myEmoticons);
                    tmplChatSession.ChatBox.ChatTabConversation.Document.Body.InnerHtml += message.HTML;
                    tmplChatSession.ChatBox.ChatTabConversation.Document.Window.ScrollTo(0, tmplChatSession.ChatBox.ChatTabConversation.Document.Body.ScrollRectangle.Height);
                    tmplChatSession.ChatBox.AttachEvents();
                }
            }
        }
コード例 #32
0
ファイル: ChatWindow.cs プロジェクト: biddyweb/communicator
        public void AddToConversation(String chatJID, String senderJID, string messageText, string messageHTML, DateTime messageDateTime, string messageGUID, bool forceEmpty, bool flashWindow)
        {
            if (InvokeRequired)
            {
                this.Invoke(new AddToConversationDelegate(this.AddToConversation), new object[] { chatJID, senderJID, messageText, messageDateTime, messageGUID, forceEmpty, flashWindow });
                return;
            }

            //IMMessage parameters

            MessageStyle        style            = new MessageStyle(Color.White, new System.Drawing.Font("Trebuchet MS", 8.5F, System.Drawing.FontStyle.Regular), Color.Gray, Color.Gray);
            MessageTemplateType template         = MessageTemplateType.Notification;
            ChatSession         tmplChatSession  = (ChatSession)myChatSessions[chatJID];
            JabberUser          chatJabberUser   = null;
            JabberUser          senderJabberUser = null;

            if (tmplChatSession == null)
            {
                try
                {
                    ContactList contactList = myClientForm.mContactBook.getCandidatesForJabberID(chatJID);
                    if (contactList.Count > 0)
                    {
                        NTContact ntContact = (NTContact)contactList[0];
                        chatJabberUser = new JabberUser(ntContact.NTJabberID, ntContact.NTNickname);
                    }
                    else
                    {
                        chatJabberUser = new JabberUser(chatJID);
                    }

                    NewChat(chatJabberUser, false);
                    tmplChatSession = (ChatSession)myChatSessions[chatJabberUser.JID];
                    if (tmplChatSession == null)
                    {
                        return;
                    }
                }
                catch (Exception)
                {
                    return;
                }
            }
            if (forceEmpty)
            {
                tmplChatSession.ChatBox.ResetHTML();
            }
            if (senderJID == myClientForm.mUserAccount.JabberUser.JID)
            {
                //outgoing message
                senderJabberUser = myClientForm.mUserAccount.JabberUser;
                style            = tmplChatSession.OutgoingStyle;
                template         = MessageTemplateType.Out;
            }
            else
            { //incomming message
                senderJabberUser = tmplChatSession.JabberUser;
                if (flashWindow)
                {
                    FlashWindow(this.Handle, true);
                    myClientForm.mClientEvents.RaiseEvent(Remwave.Client.Events.ClientEvent.IncomingInstantMessage);
                    ShowIt();
                    mMessageInTimeout    = 360;
                    myNotifyIcon.Visible = true;
                }
                style    = tmplChatSession.IncomingStyle;
                template = MessageTemplateType.In;
            }

            //if chat session exist display content in conversation window
            if (tmplChatSession != null)
            {
                if (tmplChatSession.ChatBox.ChatTabConversation != null)
                {
                    SetComposing(false, senderJID);
                    if (messageHTML == "")
                    {
                        messageHTML = messageText;
                    }

                    IMMessage message = new IMMessage(senderJabberUser.Nick, messageHTML, messageGUID, messageDateTime, style, template, myEmoticons);
                    tmplChatSession.ChatBox.ChatTabConversation.Document.Body.InnerHtml += message.HTML;
                    tmplChatSession.ChatBox.ChatTabConversation.Document.Window.ScrollTo(0, tmplChatSession.ChatBox.ChatTabConversation.Document.Body.ScrollRectangle.Height);
                    tmplChatSession.ChatBox.AttachEvents();
                }
            }
        }