Beispiel #1
0
        public string GetEmailBody(BaseUserEventSubscribeDTO message, string messageTemplate)
        {
            if (message == null)
            {
                throw new ArgumentException("message is null");
            }

            if (String.IsNullOrEmpty(messageTemplate))
            {
                throw new ArgumentException("messageTemplate is null");
            }

            var config = new TemplateServiceConfiguration();

            config.DisableTempFileLocking = true;
            config.CachingProvider        = new DefaultCachingProvider(t => { });
            config.TemplateManager        = new DelegateTemplateManager(name =>
            {
                string path = Path.Combine(templateFolderPath, name);
                return(File.ReadAllText(path));
            });


            var service = RazorEngineService.Create(config);

            Engine.Razor = service;

            var template = File.ReadAllText(Path.Combine(templateFolderPath, $"{messageTemplate}.cshtml"));


            return(Engine.Razor.RunCompile(template, messageTemplate, message.GetType(), message));
        }
Beispiel #2
0
        public Task SendAsync(BaseUserEventSubscribeDTO msg)
        {
            string subject             = null;
            string messageTemplateName = null;

            var v1 = msg as UserDeedlineAppEventSubscribeDTO;

            if (v1 != null)
            {
                subject             = Resource.Subject_RequestDeedlineAppEventConsumer;
                messageTemplateName = "RequestDeedlineAppEvent";
            }

            var v2 = msg as UserDeedlineAppEventSubscribeDTO;

            if (v2 != null)
            {
                subject             = Resource.Subject_UserPasswordRecoveryAppEventConsumer;
                messageTemplateName = "UserPasswordRecoveryAppEvent";
            }

            var v3 = msg as UserRequestAppEventSubscribeDTO;

            if (v3 != null)
            {
                if (v3.IsWorker)
                {
                    subject             = String.Format(Resource.Subject_RequestAppEventConsumer, v3.Request.Id, v3.Request.StatusName);
                    messageTemplateName = "RequestAppEventWorker";
                }
                else
                {
                    subject             = String.Format(Resource.Subject_RequestAppEventConsumer, v3.Request.Id, v3.Request.StatusName);
                    messageTemplateName = "RequestAppEventCabinet";
                }
            }

            var v4 = msg as UserEventSubscribeDTO;

            if (v4 != null)
            {
                subject             = String.Format(Resource.Subject_UserRegisterAppEventConsumer, Resource.AppName);
                messageTemplateName = "UserRegisterAppEvent";
            }

            var  emailHtmlBody = emailTemplateService.GetEmailBody(msg, messageTemplateName);
            Task t             = new Task(() => sendEmail(msg.Email, subject, emailHtmlBody));

            return(t);
        }
Beispiel #3
0
        public Task SendAsync(BaseUserEventSubscribeDTO msg)
        {
            string body  = null;
            string title = null;

            var msg1 = msg as UserRequestAppEventSubscribeDTO;

            if (msg1 != null)
            {
                title = msg1.Request.Id.ToString();
                body  = String.Format(Resource.Subject_RequestAppEventConsumer, msg1.Request.Id, msg1.Request.StatusName);;
            }

            var msg2 = msg as UserDeedlineAppEventSubscribeDTO;

            if (msg2 != null)
            {
                title = Resource.Subject_UserPasswordRecoveryAppEventConsumer;
                body  = String.Join(", ", msg2.Items.Select(r => r.Id));
            }

            var model = new
            {
                app_id   = appId,
                contents = new { en = body },
                headings = new { en = title },
                filters  = new object[]
                {
                    new { field = "tag" },
                    new { key = "userEmail" },
                    new { relation = "=" },
                    new { value = msg.Email }
                }
            };
            var content = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json");

            return(client.PostAsync("https://onesignal.com/api/v1/notifications", content));
        }