Beispiel #1
0
        public async Task NotifyTemplateByNameDataTest()
        {
            using var store   = GetDocumentStore();
            using var session = store.OpenAsyncSession();
            var loader = new NotifyTemplateByName {
                Session = session, Name = "welcomeuser"
            };
            await loader.Execute();

            loader.Result.Should().NotBeNull();
            loader.Result.Id.Should().Be(NotifyTemplateData.FirstId);
            Assert.That(loader.Result, Is.DeepEqualTo(NotifyTemplateData.GetFirst()));
        }
Beispiel #2
0
        public override async Task Execute()
        {
            var template = new NotifyTemplateByName {
                Name = TemplateName
            };
            await DataHandler.Execute(template);

            if (template.Result != null)
            {
                var tenant = new Loader <Tenant> {
                    Id = CurrentUser.TenantId
                };
                await DataHandler.Execute(tenant);

                var config = new Loader <UserConfig> {
                    Id = CurrentUser.ConfigId
                };
                await DataHandler.Execute(config);

                var processor = new TemplaterCmd();

                processor.Models.Add(CurrentUser);

                if (tenant.Result != null)
                {
                    processor.Models.Add(tenant.Result);
                }

                if (Model != null)
                {
                    processor.Models.Add(Model);
                }

                if (config.Result.EmailNotify)
                {
                    var email = new EmailTemplateCmd
                    {
                        Template       = template.Result,
                        RecipientEmail = CurrentUser.Email,
                        Processor      = processor
                    };

                    await CloudHandler.Execute(email);

                    EmailResult = email.Result;
                }

                if (config.Result.PushNotify)
                {
                    var push = new PushTemplateCmd()
                    {
                        IncludeUser = true,
                        TenantId    = CurrentUser.TenantId,
                        UserId      = CurrentUser.Id,
                        Template    = template.Result,
                        Processor   = processor,
                        Url         = ReturnUrl,
                        Identity    = ReturnIdentity
                    };

                    await CloudHandler.Execute(push);

                    PushResult = push.Result;
                }

                if (config.Result.SmsNotify)
                {
                    var sms = new SmsTemplateCmd()
                    {
                        RecipientPhone = CurrentUser.EncryptedPhone,
                        SenderPhone    = CloudHandler.Settings.Value.TwilioSenderPhone,
                        Template       = template.Result,
                        Processor      = processor
                    };

                    await CloudHandler.Execute(sms);

                    SmsResult = sms.Result;
                }

                Result = ActionConfirm.CreateSuccess("Notification Completed");
            }
            else
            {
                ActionConfirm.CreateFailure("Template Missing -> " + TemplateName);
            }
        }