From 0201ea64e6f130e4ddbdb37394ee5736742695fc Mon Sep 17 00:00:00 2001 From: Paul Schneider Date: Sun, 30 May 2021 12:30:39 +0100 Subject: [PATCH] new mailling for not confirmed emails --- Makefile | 2 +- src/cli/Commands/SendMailCommand.cs | 64 ++++++++++++------- src/cli/Services/EMailer.cs | 11 +--- .../yavscTests}/BaseTestContext.cs | 0 {src/test => test/yavscTests}/Makefile | 0 .../yavscTests}/Mandatory/BatchTests.cs | 0 .../yavscTests}/Mandatory/RegisterApi.cs | 0 .../yavscTests}/Mandatory/Remoting.cs | 0 .../yavscTests}/Mandatory/Resources.cs | 0 .../Mandatory/ServerSideFixture.cs | 0 .../NonRegression/AbstractTests.cs | 0 .../yavscTests}/NonRegression/Database.cs | 0 .../yavscTests}/NonRegression/EMailling.cs | 0 .../yavscTests}/NonRegression/NodeTests.cs | 0 .../Resources/Test.TestResources.resx | 0 .../Settings/DbConnectionSettings.cs | 0 .../yavscTests}/Settings/Testing.cs | 0 {src/test => test/yavscTests}/Startup.cs | 0 {src/test => test/yavscTests}/TestHelpers.cs | 0 .../yavscTests}/WIP/NotWorking.cs | 0 .../yavscTests}/YavscServerFactory.cs | 0 .../test => test/yavscTests}/appsettings.json | 0 {src/test => test/yavscTests}/npm-debug.log | 0 .../yavscTests}/package-lock.json | 0 {src/test => test/yavscTests}/project.json | 0 25 files changed, 46 insertions(+), 31 deletions(-) rename {src/test => test/yavscTests}/BaseTestContext.cs (100%) rename {src/test => test/yavscTests}/Makefile (100%) rename {src/test => test/yavscTests}/Mandatory/BatchTests.cs (100%) rename {src/test => test/yavscTests}/Mandatory/RegisterApi.cs (100%) rename {src/test => test/yavscTests}/Mandatory/Remoting.cs (100%) rename {src/test => test/yavscTests}/Mandatory/Resources.cs (100%) rename {src/test => test/yavscTests}/Mandatory/ServerSideFixture.cs (100%) rename {src/test => test/yavscTests}/NonRegression/AbstractTests.cs (100%) rename {src/test => test/yavscTests}/NonRegression/Database.cs (100%) rename {src/test => test/yavscTests}/NonRegression/EMailling.cs (100%) rename {src/test => test/yavscTests}/NonRegression/NodeTests.cs (100%) rename {src/test => test/yavscTests}/Resources/Test.TestResources.resx (100%) rename {src/test => test/yavscTests}/Settings/DbConnectionSettings.cs (100%) rename {src/test => test/yavscTests}/Settings/Testing.cs (100%) rename {src/test => test/yavscTests}/Startup.cs (100%) rename {src/test => test/yavscTests}/TestHelpers.cs (100%) rename {src/test => test/yavscTests}/WIP/NotWorking.cs (100%) rename {src/test => test/yavscTests}/YavscServerFactory.cs (100%) rename {src/test => test/yavscTests}/appsettings.json (100%) rename {src/test => test/yavscTests}/npm-debug.log (100%) rename {src/test => test/yavscTests}/package-lock.json (100%) rename {src/test => test/yavscTests}/project.json (100%) diff --git a/Makefile b/Makefile index 3195acae..b3d54e20 100644 --- a/Makefile +++ b/Makefile @@ -35,7 +35,7 @@ restore: /home/paul/workspace/tmp/yavsc/src/Yavsc/bin/output/wwwroot make -C src/test restore test: - make -C src/test + make -C test/yavscTests web: make -C src/Yavsc web diff --git a/src/cli/Commands/SendMailCommand.cs b/src/cli/Commands/SendMailCommand.cs index fd763418..aacb8255 100644 --- a/src/cli/Commands/SendMailCommand.cs +++ b/src/cli/Commands/SendMailCommand.cs @@ -5,42 +5,62 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using cli.Services; using cli.Model; +using System.Linq; +using Yavsc.Models; +using System.Collections.Generic; +using System; -namespace cli { - -public class SendMailCommandProvider : ICommander { +namespace cli +{ + public class SendMailCommandProvider : ICommander + { + readonly Dictionary> Criterias = + new Dictionary> + { + {"allow-monthly", u => u.AllowMonthlyEmail }, + { "email-not-confirmed", u => !u.EmailConfirmed } + }; public CommandLineApplication Integrate(CommandLineApplication rootApp) { - CommandArgument sendMailCommandArg = null; - CommandOption sendHelpOption = null; - CommandLineApplication sendMailCommandApp - = rootApp.Command("send", - (target) => - { - target.FullName = "Send email"; - target.Description = "Sends emails using given template"; - sendHelpOption = target.HelpOption("-? | -h | --help"); - sendMailCommandArg = target.Argument( - "class", - "class name of mailling to execute (actually, only 'monthly') .", - multipleValues: true); - }, false); + + CommandArgument codeCommandArg = null; + CommandArgument critCommandArg = null; + CommandOption sendHelpOption = null; + CommandLineApplication sendMailCommandApp + = rootApp.Command("send-monthly", + (target) => + { + target.FullName = "Send email"; + target.Description = "Sends monthly emails using given template from code"; + sendHelpOption = target.HelpOption("-? | -h | --help"); + codeCommandArg = target.Argument( + "code", + "template code of mailling to execute."); + critCommandArg = target.Argument( + "criteria", + "user selection criteria : 'allow-monthly' or 'email-not-confirmed'"); + }, false); sendMailCommandApp.OnExecute(() => { - if (sendMailCommandArg.Value == "monthly") + int code; + bool showhelp = !int.TryParse(codeCommandArg.Value, out code) + || Criterias.ContainsKey(critCommandArg.Value); + + if (!showhelp) { var host = new WebHostBuilder(); - var hostengnine = host.UseEnvironment("Development") + + var hostengnine = host.UseEnvironment(Program.HostingEnvironment.EnvironmentName) .UseServer("cli") .UseStartup() .Build(); var app = hostengnine.Start(); var mailer = app.Services.GetService(); var loggerFactory = app.Services.GetService(); - var logger = loggerFactory.CreateLogger(); + var logger = loggerFactory.CreateLogger(); logger.LogInformation("Starting emailling"); - mailer.SendMonthlyEmail(1, "UserOrientedTemplate"); + mailer.SendEmailFromCriteria(code, Criterias[critCommandArg.Value]); logger.LogInformation("Finished emailling"); } else @@ -53,4 +73,4 @@ public class SendMailCommandProvider : ICommander { return sendMailCommandApp; } } -} \ No newline at end of file +} diff --git a/src/cli/Services/EMailer.cs b/src/cli/Services/EMailer.cs index e2063994..33cf6166 100644 --- a/src/cli/Services/EMailer.cs +++ b/src/cli/Services/EMailer.cs @@ -61,9 +61,9 @@ namespace cli.Services } - public void SendMonthlyEmail(long templateCode, string baseclassName = DefaultBaseClassName) + public void SendEmailFromCriteria(long templateCode, Func criteria) { - string className = "Generated" + baseclassName; + string className = "GeneratedTemplate"; string subtemp = stringLocalizer["MonthlySubjectTemplate"].Value; @@ -156,7 +156,7 @@ namespace cli.Services throw new InvalidOperationException("No generated template"); } foreach (var user in dbContext.ApplicationUser.Where( - u => u.AllowMonthlyEmail + u => criteria(u) )) { logger.LogInformation("Generation for " + user.UserName); @@ -172,15 +172,10 @@ namespace cli.Services logger.LogError($"{mailSentInfo.ErrorMessage}"); else logger.LogInformation($"mailId:{mailSentInfo?.MessageId} \nto:{user.UserName}"); - - - } - } } } - } } } diff --git a/src/test/BaseTestContext.cs b/test/yavscTests/BaseTestContext.cs similarity index 100% rename from src/test/BaseTestContext.cs rename to test/yavscTests/BaseTestContext.cs diff --git a/src/test/Makefile b/test/yavscTests/Makefile similarity index 100% rename from src/test/Makefile rename to test/yavscTests/Makefile diff --git a/src/test/Mandatory/BatchTests.cs b/test/yavscTests/Mandatory/BatchTests.cs similarity index 100% rename from src/test/Mandatory/BatchTests.cs rename to test/yavscTests/Mandatory/BatchTests.cs diff --git a/src/test/Mandatory/RegisterApi.cs b/test/yavscTests/Mandatory/RegisterApi.cs similarity index 100% rename from src/test/Mandatory/RegisterApi.cs rename to test/yavscTests/Mandatory/RegisterApi.cs diff --git a/src/test/Mandatory/Remoting.cs b/test/yavscTests/Mandatory/Remoting.cs similarity index 100% rename from src/test/Mandatory/Remoting.cs rename to test/yavscTests/Mandatory/Remoting.cs diff --git a/src/test/Mandatory/Resources.cs b/test/yavscTests/Mandatory/Resources.cs similarity index 100% rename from src/test/Mandatory/Resources.cs rename to test/yavscTests/Mandatory/Resources.cs diff --git a/src/test/Mandatory/ServerSideFixture.cs b/test/yavscTests/Mandatory/ServerSideFixture.cs similarity index 100% rename from src/test/Mandatory/ServerSideFixture.cs rename to test/yavscTests/Mandatory/ServerSideFixture.cs diff --git a/src/test/NonRegression/AbstractTests.cs b/test/yavscTests/NonRegression/AbstractTests.cs similarity index 100% rename from src/test/NonRegression/AbstractTests.cs rename to test/yavscTests/NonRegression/AbstractTests.cs diff --git a/src/test/NonRegression/Database.cs b/test/yavscTests/NonRegression/Database.cs similarity index 100% rename from src/test/NonRegression/Database.cs rename to test/yavscTests/NonRegression/Database.cs diff --git a/src/test/NonRegression/EMailling.cs b/test/yavscTests/NonRegression/EMailling.cs similarity index 100% rename from src/test/NonRegression/EMailling.cs rename to test/yavscTests/NonRegression/EMailling.cs diff --git a/src/test/NonRegression/NodeTests.cs b/test/yavscTests/NonRegression/NodeTests.cs similarity index 100% rename from src/test/NonRegression/NodeTests.cs rename to test/yavscTests/NonRegression/NodeTests.cs diff --git a/src/test/Resources/Test.TestResources.resx b/test/yavscTests/Resources/Test.TestResources.resx similarity index 100% rename from src/test/Resources/Test.TestResources.resx rename to test/yavscTests/Resources/Test.TestResources.resx diff --git a/src/test/Settings/DbConnectionSettings.cs b/test/yavscTests/Settings/DbConnectionSettings.cs similarity index 100% rename from src/test/Settings/DbConnectionSettings.cs rename to test/yavscTests/Settings/DbConnectionSettings.cs diff --git a/src/test/Settings/Testing.cs b/test/yavscTests/Settings/Testing.cs similarity index 100% rename from src/test/Settings/Testing.cs rename to test/yavscTests/Settings/Testing.cs diff --git a/src/test/Startup.cs b/test/yavscTests/Startup.cs similarity index 100% rename from src/test/Startup.cs rename to test/yavscTests/Startup.cs diff --git a/src/test/TestHelpers.cs b/test/yavscTests/TestHelpers.cs similarity index 100% rename from src/test/TestHelpers.cs rename to test/yavscTests/TestHelpers.cs diff --git a/src/test/WIP/NotWorking.cs b/test/yavscTests/WIP/NotWorking.cs similarity index 100% rename from src/test/WIP/NotWorking.cs rename to test/yavscTests/WIP/NotWorking.cs diff --git a/src/test/YavscServerFactory.cs b/test/yavscTests/YavscServerFactory.cs similarity index 100% rename from src/test/YavscServerFactory.cs rename to test/yavscTests/YavscServerFactory.cs diff --git a/src/test/appsettings.json b/test/yavscTests/appsettings.json similarity index 100% rename from src/test/appsettings.json rename to test/yavscTests/appsettings.json diff --git a/src/test/npm-debug.log b/test/yavscTests/npm-debug.log similarity index 100% rename from src/test/npm-debug.log rename to test/yavscTests/npm-debug.log diff --git a/src/test/package-lock.json b/test/yavscTests/package-lock.json similarity index 100% rename from src/test/package-lock.json rename to test/yavscTests/package-lock.json diff --git a/src/test/project.json b/test/yavscTests/project.json similarity index 100% rename from src/test/project.json rename to test/yavscTests/project.json