Setup Missionary Form Email
parent
b32d6d54cc
commit
bafd61b48f
|
|
@ -11,6 +11,7 @@ namespace OFBButte.Application.Email
|
||||||
public virtual string From { get; set; } = "donotreply@ofbbutte.com";
|
public virtual string From { get; set; } = "donotreply@ofbbutte.com";
|
||||||
public virtual string Subject { get; set; }
|
public virtual string Subject { get; set; }
|
||||||
public virtual string Body { get; set; }
|
public virtual string Body { get; set; }
|
||||||
|
public virtual Dictionary<string, string> AdditionalValues { get; set; }
|
||||||
public abstract string TemplateName { get; set; }
|
public abstract string TemplateName { get; set; }
|
||||||
|
|
||||||
public void SetBodyFromTemplate(bool isTest = true)
|
public void SetBodyFromTemplate(bool isTest = true)
|
||||||
|
|
@ -24,6 +25,13 @@ namespace OFBButte.Application.Email
|
||||||
{
|
{
|
||||||
template = template.Replace($"{{{{{property.Key}}}}}", property.Value);
|
template = template.Replace($"{{{{{property.Key}}}}}", property.Value);
|
||||||
}
|
}
|
||||||
|
if (AdditionalValues != null)
|
||||||
|
{
|
||||||
|
foreach(var kvp in AdditionalValues)
|
||||||
|
{
|
||||||
|
template = template.Replace($"{{{{{kvp.Key}}}}}", kvp.Value);
|
||||||
|
}
|
||||||
|
}
|
||||||
Body = template;
|
Body = template;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace OFBButte.Application.Email
|
||||||
|
{
|
||||||
|
public class MissionarySupportFormEmail : EmailMessage
|
||||||
|
{
|
||||||
|
public override string TemplateName { get; set; } = "MissionarySupportForm";
|
||||||
|
public override string From { get; set; } = "donotreply@ofbbutte.com";
|
||||||
|
public override string Subject { get; set; } = "OFB Missionary Questionnaire";
|
||||||
|
|
||||||
|
public MissionarySupportFormEmail(Dictionary<string,string> values)
|
||||||
|
{
|
||||||
|
if (values == null) return;
|
||||||
|
AdditionalValues = values;
|
||||||
|
string name = "";
|
||||||
|
var kvp = values.Where(m => m.Key.ToLower() == "name").ToList();
|
||||||
|
if (kvp.Count > 0)
|
||||||
|
{
|
||||||
|
name = kvp.First().Value;
|
||||||
|
}
|
||||||
|
Subject = $"{Subject} : {name}";
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
|
||||||
|
<p>This is a test missionary form</p>
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
using OFBButte.Application.Database;
|
||||||
|
using OFBButte.Application.Email;
|
||||||
|
using OFBButte.Entities;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace OFBButte.Application.Missionary
|
||||||
|
{
|
||||||
|
public class AddAndSendMissionaryForm
|
||||||
|
{
|
||||||
|
private readonly AddMissionarySupportForm add;
|
||||||
|
private readonly SendMissionaryFormEmail send;
|
||||||
|
|
||||||
|
public AddAndSendMissionaryForm(IOFBContext context, IEmailSender emailSender)
|
||||||
|
{
|
||||||
|
add = new AddMissionarySupportForm(context);
|
||||||
|
send = new SendMissionaryFormEmail(context, emailSender);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task Handle(MissionarySupport form, string emailAddress)
|
||||||
|
{
|
||||||
|
var added = add.Handle(form);
|
||||||
|
await send.Handle(added.Id, emailAddress);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
using OFBButte.Application.Database;
|
using OFBButte.Application.Database;
|
||||||
|
using OFBButte.Application.Email;
|
||||||
using OFBButte.Entities;
|
using OFBButte.Entities;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
using OFBButte.Application.Database;
|
||||||
|
using OFBButte.Application.Email;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace OFBButte.Application.Missionary
|
||||||
|
{
|
||||||
|
public class SendMissionaryFormEmail
|
||||||
|
{
|
||||||
|
private readonly IOFBContext context;
|
||||||
|
private readonly IEmailSender emailSender;
|
||||||
|
public SendMissionaryFormEmail(IOFBContext context, IEmailSender emailSender)
|
||||||
|
{
|
||||||
|
this.context = context;
|
||||||
|
this.emailSender = emailSender;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task Handle(int missionaryFormId, string emailAddress)
|
||||||
|
{
|
||||||
|
var form = context.MissionarySupportForms.FirstOrDefault(m => m.Id == missionaryFormId);
|
||||||
|
if (form == null)
|
||||||
|
throw new Exception($"Form with id {missionaryFormId} not found");
|
||||||
|
|
||||||
|
var email = new Email.MissionarySupportFormEmail(form.ToDictionary());
|
||||||
|
email.To = emailAddress;
|
||||||
|
|
||||||
|
await emailSender.Send(email);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -12,4 +12,13 @@
|
||||||
<ProjectReference Include="..\OFBButte.Entities\OFBButte.Entities.csproj" />
|
<ProjectReference Include="..\OFBButte.Entities\OFBButte.Entities.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Update="Email\Templates\base.html">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Update="Email\Templates\MissionarySupportForm.html">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,13 @@ using OFBButte.Application.Configuration;
|
||||||
using OFBButte.Application.Database;
|
using OFBButte.Application.Database;
|
||||||
using OFBButte.Application.Email;
|
using OFBButte.Application.Email;
|
||||||
using OFBButte.Application.Users;
|
using OFBButte.Application.Users;
|
||||||
|
using OFBButte.Application.Missionary;
|
||||||
using OFBButte.Infrastructure.Hashing;
|
using OFBButte.Infrastructure.Hashing;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using OFBButte.Entities;
|
||||||
|
|
||||||
namespace OFBButte.Console
|
namespace OFBButte.Console
|
||||||
{
|
{
|
||||||
|
|
@ -31,7 +33,7 @@ namespace OFBButte.Console
|
||||||
var env = appSettings.Environment;
|
var env = appSettings.Environment;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await SendVerificationEmail();
|
await SendMissionarySupportForm();
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
|
@ -52,10 +54,108 @@ namespace OFBButte.Console
|
||||||
await adder.Handle(user);
|
await adder.Handle(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task SendMissionarySupportForm()
|
||||||
|
{
|
||||||
|
var send = new SendMissionaryFormEmail(context, emailSender);
|
||||||
|
await send.Handle(1, "djabsher@gmail.com");
|
||||||
|
}
|
||||||
|
|
||||||
private void LoginUser()
|
private void LoginUser()
|
||||||
{
|
{
|
||||||
var login = new LoginUser(context, new PasswordHasher());
|
var login = new LoginUser(context, new PasswordHasher());
|
||||||
var result = login.Handle(user, pass);
|
var result = login.Handle(user, pass);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void AddMissionarySupportForm()
|
||||||
|
{
|
||||||
|
var form = new MissionarySupport()
|
||||||
|
{
|
||||||
|
Name = "John Smith",
|
||||||
|
WifesName = "Sarah Smith",
|
||||||
|
AdmittedWrong = "Yesterday",
|
||||||
|
Alcohol = false,
|
||||||
|
AloneOrTeam = "Alone",
|
||||||
|
CorrectWrongOfAnotherMissionary = "Prayer and support",
|
||||||
|
FellowshipAssociation = "No fellowship",
|
||||||
|
LateBillActionTaken = "Never late",
|
||||||
|
MarryADivorcee = false,
|
||||||
|
RestAndRelaxation = "Rest all the time",
|
||||||
|
BibleVersionOpinion = "Only KJV",
|
||||||
|
BibleVersionsUsed = "KJV",
|
||||||
|
BillsOnTime = "very important",
|
||||||
|
CallToField = "Called by God",
|
||||||
|
CellPhone = "222-555-9899",
|
||||||
|
HomePhone = "111-555-3343",
|
||||||
|
FieldOfService = "Malaysia",
|
||||||
|
FieldPhone = "333-555-8787",
|
||||||
|
Charasmaticism = "Do not agree with it",
|
||||||
|
Children = new List<MissionaryChild>()
|
||||||
|
{
|
||||||
|
new MissionaryChild()
|
||||||
|
{
|
||||||
|
Name = "Katie Smith"
|
||||||
|
},
|
||||||
|
new MissionaryChild()
|
||||||
|
{
|
||||||
|
Name = "Brandon Smith"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
ChildrenSchool = ChildrenSchool.Home,
|
||||||
|
CollegeRecommendations = new List<MissionaryCollegeRecommendation>()
|
||||||
|
{
|
||||||
|
new MissionaryCollegeRecommendation()
|
||||||
|
{
|
||||||
|
Name = "PCC",
|
||||||
|
City = "Somewhere",
|
||||||
|
State = "Florida"
|
||||||
|
},
|
||||||
|
new MissionaryCollegeRecommendation()
|
||||||
|
{
|
||||||
|
Name = "Bible School",
|
||||||
|
City = "Butte",
|
||||||
|
State = "Montana"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
ContemporaryMusic = false,
|
||||||
|
CurrentMonthlySupport = "1000",
|
||||||
|
DailyBible = BibleReading.Always,
|
||||||
|
Dance = false,
|
||||||
|
Divorced = false,
|
||||||
|
EvaluationOfNationals = "They need Christ",
|
||||||
|
FemaleDressStandard = true,
|
||||||
|
FemaleShorts = FemaleShorts.Never,
|
||||||
|
FemaleSlacks = FemaleSlacks.Never,
|
||||||
|
FinancialStatementPrevYear = "Yes",
|
||||||
|
Fundamentalist = true,
|
||||||
|
GroundsForRemarry = false,
|
||||||
|
HoneyPot = ".",
|
||||||
|
Id = 0,
|
||||||
|
LateBills = "Never",
|
||||||
|
MaleHair = true,
|
||||||
|
MasonicLodge = false,
|
||||||
|
MonthlySupportNeeded = "2000",
|
||||||
|
MovieTheaters = false,
|
||||||
|
NumberLedToChrist = 100,
|
||||||
|
NumberWeeklyTracts = 1000,
|
||||||
|
NumberWitnessedTo = 10000,
|
||||||
|
Plans = "Start churches",
|
||||||
|
PotentialHarvest = "Great potential",
|
||||||
|
Predestination = "Everyone has a free will",
|
||||||
|
RateOfSuccess = "Fairly Successful",
|
||||||
|
RepentanceDefinition = "Agree with God",
|
||||||
|
RepentanceNecessary = true,
|
||||||
|
SendingChurch = "Old Fashion Baptist",
|
||||||
|
Smoking = false,
|
||||||
|
SwimmingClothing = "Do not swim",
|
||||||
|
Television = "Do not watch tv",
|
||||||
|
Testimony = "Saved by Grace",
|
||||||
|
TimeInCountry = "4 years",
|
||||||
|
Tongues = false,
|
||||||
|
WorldlyMusic = false
|
||||||
|
};
|
||||||
|
|
||||||
|
var adder = new AddMissionarySupportForm(context);
|
||||||
|
adder.Handle(form);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,4 +15,18 @@
|
||||||
<ProjectReference Include="..\OFBButte.Infrastructure\OFBButte.Infrastructure.csproj" />
|
<ProjectReference Include="..\OFBButte.Infrastructure\OFBButte.Infrastructure.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Update="appsettings.Development.json">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Update="appsettings.json">
|
||||||
|
<Generator>SettingsSingleFileGenerator</Generator>
|
||||||
|
<LastGenOutput>appsettings.Designer.cs</LastGenOutput>
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
<None Update="appsettings.Production.json">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ namespace OFBButte.Console
|
||||||
{
|
{
|
||||||
var builder = new ConfigurationBuilder();
|
var builder = new ConfigurationBuilder();
|
||||||
builder.AddJsonFile("appsettings.json", false, true);
|
builder.AddJsonFile("appsettings.json", false, true);
|
||||||
|
builder.AddJsonFile("appsettings.Development.json", true, true);
|
||||||
var config = builder.Build();
|
var config = builder.Build();
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"App": {
|
||||||
|
"Environment": "Dev"
|
||||||
|
},
|
||||||
|
"ConnectionStrings": {
|
||||||
|
"OFBContext": "server=localhost;database=ofb2_test;user=ofbapi2_test;password=Look to the LORD and his strength seek his face always"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"App": {
|
||||||
|
"Environment": "Prod"
|
||||||
|
},
|
||||||
|
"ConnectionStrings": {
|
||||||
|
"OFBContext": "server=localhost;database=ofb2;user=ofbapi2;password={{db_pass}};"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"App": {
|
||||||
|
"Environment": "Local"
|
||||||
|
},
|
||||||
|
"ConnectionStrings": {
|
||||||
|
"OFBContext": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace OFBButte.Entities
|
namespace OFBButte.Entities
|
||||||
|
|
@ -66,5 +67,11 @@ namespace OFBButte.Entities
|
||||||
|
|
||||||
public string HoneyPot { get; set; }
|
public string HoneyPot { get; set; }
|
||||||
|
|
||||||
|
public Dictionary<string, string> ToDictionary()
|
||||||
|
{
|
||||||
|
var props = GetType().GetProperties(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public).ToDictionary(p => p.Name, p => p.GetValue(this)?.ToString() ?? "");
|
||||||
|
return props;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue