Nu skickar vi mail till deltagarna !
This commit is contained in:
25
TrackerLibrary/EmailLogic.cs
Normal file
25
TrackerLibrary/EmailLogic.cs
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Net.Mail;
|
||||||
|
namespace TrackerLibrary
|
||||||
|
{
|
||||||
|
public static class EmailLogic
|
||||||
|
{
|
||||||
|
public static void SendEmail(List<string> to,string subject, string body)
|
||||||
|
{
|
||||||
|
MailAddress fromMailAddress = new MailAddress(GlobalConfig.AppKeyLookup("senderEmail"), GlobalConfig.AppKeyLookup("senderDisplayName"));
|
||||||
|
MailMessage mail = new MailMessage();
|
||||||
|
to.ForEach(x => mail.To.Add(x));
|
||||||
|
mail.From = fromMailAddress;
|
||||||
|
mail.Subject = subject;
|
||||||
|
mail.Body = body;
|
||||||
|
mail.IsBodyHtml = true;
|
||||||
|
|
||||||
|
SmtpClient client = new SmtpClient();
|
||||||
|
client.Send(mail);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -43,5 +43,10 @@ namespace TrackerLibrary
|
|||||||
{
|
{
|
||||||
return ConfigurationManager.ConnectionStrings[name].ConnectionString;
|
return ConfigurationManager.ConnectionStrings[name].ConnectionString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string AppKeyLookup(string key)
|
||||||
|
{
|
||||||
|
return ConfigurationManager.AppSettings[key];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,6 +27,7 @@ namespace TrackerLibrary
|
|||||||
|
|
||||||
public static void UpdateTournamentResults(TournamentModel model)
|
public static void UpdateTournamentResults(TournamentModel model)
|
||||||
{
|
{
|
||||||
|
int startingRound = model.CheckCurrentRound();
|
||||||
List<MatchupModel> toScore = new List<MatchupModel>();
|
List<MatchupModel> toScore = new List<MatchupModel>();
|
||||||
|
|
||||||
foreach (List<MatchupModel> round in model.Rounds)
|
foreach (List<MatchupModel> round in model.Rounds)
|
||||||
@ -45,7 +46,78 @@ namespace TrackerLibrary
|
|||||||
AdvanceWinners(toScore, model);
|
AdvanceWinners(toScore, model);
|
||||||
|
|
||||||
toScore.ForEach(x => GlobalConfig.Connection.UpdateMatchup(x));
|
toScore.ForEach(x => GlobalConfig.Connection.UpdateMatchup(x));
|
||||||
|
int endigRound = model.CheckCurrentRound();
|
||||||
|
if (endigRound > startingRound)
|
||||||
|
{
|
||||||
|
model.AlertUsersToNewRound();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void AlertUsersToNewRound(this TournamentModel model)
|
||||||
|
{
|
||||||
|
int currentRoundNumber = model.CheckCurrentRound();
|
||||||
|
List<MatchupModel> currentRound = model.Rounds.Where(x => x.First().MatchupRound == currentRoundNumber).First();
|
||||||
|
foreach (MatchupModel matchup in currentRound)
|
||||||
|
{
|
||||||
|
foreach (MatchupEntryModel me in matchup.Entries)
|
||||||
|
{
|
||||||
|
foreach (PersonModel p in me.TeamCompeting.TeamMembers)
|
||||||
|
{
|
||||||
|
AlertPersonToNewRound(p, me.TeamCompeting.TeamName, matchup.Entries.Where(x => x.TeamCompeting != me.TeamCompeting).FirstOrDefault());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void AlertPersonToNewRound(PersonModel p, string teamName, MatchupEntryModel competitor)
|
||||||
|
{
|
||||||
|
if (p.EmailAddress.Length == 0)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<string> to = new List<string>();
|
||||||
|
string subject;
|
||||||
|
StringBuilder body = new StringBuilder();
|
||||||
|
|
||||||
|
if (competitor != null)
|
||||||
|
{
|
||||||
|
subject = $"You have a new matchup with {competitor.TeamCompeting.TeamName}";
|
||||||
|
|
||||||
|
body.AppendLine("<h1>You Have a new matchup</h1>");
|
||||||
|
body.Append("<strong>Competitor: </strong>");
|
||||||
|
body.Append(competitor.TeamCompeting.TeamName);
|
||||||
|
body.AppendLine();
|
||||||
|
body.AppendLine();
|
||||||
|
body.AppendLine("Have a great time!");
|
||||||
|
body.AppendLine("~Tournament Tracker");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
subject = "You have a bye week this round";
|
||||||
|
|
||||||
|
body.AppendLine("Enjoy your round off!");
|
||||||
|
body.AppendLine("~Tournament Tracker");
|
||||||
|
}
|
||||||
|
|
||||||
|
to.Add(p.EmailAddress);
|
||||||
|
|
||||||
|
|
||||||
|
EmailLogic.SendEmail( to, subject, body.ToString()); ;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static int CheckCurrentRound(this TournamentModel model)
|
||||||
|
{
|
||||||
|
int output = 1;
|
||||||
|
foreach (List<MatchupModel> round in model.Rounds)
|
||||||
|
{
|
||||||
|
if (round.All(x => x.Winner != null))
|
||||||
|
{
|
||||||
|
output += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void AdvanceWinners(List<MatchupModel> models, TournamentModel tournament)
|
private static void AdvanceWinners(List<MatchupModel> models, TournamentModel tournament)
|
||||||
@ -120,21 +192,6 @@ namespace TrackerLibrary
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//if (teamOneScore > teamTwoScore)
|
|
||||||
//{
|
|
||||||
// // Team one winns
|
|
||||||
// m.Winner = m.Entries[0].TeamCompeting;
|
|
||||||
//}
|
|
||||||
//else
|
|
||||||
// if (teamTwoScore > teamOneScore)
|
|
||||||
//{
|
|
||||||
// // Team one winns
|
|
||||||
// m.Winner = m.Entries[1].TeamCompeting;
|
|
||||||
//}
|
|
||||||
//else
|
|
||||||
//{
|
|
||||||
// MessageBox.Show("I dont handle tie games.");
|
|
||||||
//}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void CreateOtherRounds(TournamentModel model, int rounds)
|
private static void CreateOtherRounds(TournamentModel model, int rounds)
|
||||||
|
|||||||
@ -52,6 +52,7 @@
|
|||||||
<Compile Include="DataAccess\SqlConnector.cs" />
|
<Compile Include="DataAccess\SqlConnector.cs" />
|
||||||
<Compile Include="DataAccess\TextConnector.cs" />
|
<Compile Include="DataAccess\TextConnector.cs" />
|
||||||
<Compile Include="DataAccess\TextConnectorProcessor.cs" />
|
<Compile Include="DataAccess\TextConnectorProcessor.cs" />
|
||||||
|
<Compile Include="EmailLogic.cs" />
|
||||||
<Compile Include="Enums.cs" />
|
<Compile Include="Enums.cs" />
|
||||||
<Compile Include="GlobalConfig.cs" />
|
<Compile Include="GlobalConfig.cs" />
|
||||||
<Compile Include="Models\MatchupEntryModel.cs" />
|
<Compile Include="Models\MatchupEntryModel.cs" />
|
||||||
|
|||||||
@ -4,13 +4,22 @@
|
|||||||
<add key="filePath" value="D:\data\TournamentTracker"/>
|
<add key="filePath" value="D:\data\TournamentTracker"/>
|
||||||
<!--<add key="filePath" value="C:\AppData\TournamentTracker"/>-->
|
<!--<add key="filePath" value="C:\AppData\TournamentTracker"/>-->
|
||||||
<add key="greaterWins" value="1"/>
|
<add key="greaterWins" value="1"/>
|
||||||
|
<add key="senderEmail" value="tommy@oeman.se"/>
|
||||||
|
<add key="senderDisplayName" value="Tommy Öman"/>
|
||||||
</appSettings>
|
</appSettings>
|
||||||
<connectionStrings>
|
<connectionStrings>
|
||||||
<!--<add name="Tournaments" connectionString="Server=TOMMYASUS\SQLEXPR2017;Database=Tournaments;Trusted_Connection=True;" providerName="System.Data.SqlClient"/>-->
|
<!--<add name="Tournaments" connectionString="Server=TOMMYASUS\SQLEXPR2017;Database=Tournaments;Trusted_Connection=True;" providerName="System.Data.SqlClient"/>-->
|
||||||
<add name="Tournaments" connectionString="Server=.\SQLEXPR2017;Database=Tournaments;Trusted_Connection=True;" providerName="System.Data.SqlClient"/>
|
<add name="Tournaments" connectionString="Server=.\SQLEXPR2017;Database=Tournaments;Trusted_Connection=True;" providerName="System.Data.SqlClient"/>
|
||||||
<!--Data Source=TOMMYASUS\SQLEXPR2017;Initial Catalog=Tournaments;Integrated Security=True-->
|
<!--Data Source=TOMMYASUS\SQLEXPR2017;Initial Catalog=Tournaments;Integrated Security=True-->
|
||||||
</connectionStrings>
|
</connectionStrings>
|
||||||
<startup>
|
<system.net>
|
||||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
|
<mailSettings>
|
||||||
</startup>
|
<smtp deliveryMethod="Network">
|
||||||
|
<network host="127.0.0.1" userName="tfoman" password="testing" port="25" enableSsl="false"/>
|
||||||
|
</smtp>
|
||||||
|
</mailSettings>
|
||||||
|
</system.net>
|
||||||
|
<startup>
|
||||||
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
|
||||||
|
</startup>
|
||||||
</configuration>
|
</configuration>
|
||||||
@ -133,7 +133,7 @@ namespace TrackerUI
|
|||||||
// Create all of team entries
|
// Create all of team entries
|
||||||
GlobalConfig.Connection.CreateTournament(tm);
|
GlobalConfig.Connection.CreateTournament(tm);
|
||||||
|
|
||||||
|
tm.AlertUsersToNewRound();
|
||||||
|
|
||||||
TournamentViewerForm frm = new TournamentViewerForm(tm);
|
TournamentViewerForm frm = new TournamentViewerForm(tm);
|
||||||
frm.Show();
|
frm.Show();
|
||||||
|
|||||||
@ -154,9 +154,44 @@ namespace TrackerUI
|
|||||||
LoadMatchups((int)roundDropDown.SelectedItem);
|
LoadMatchups((int)roundDropDown.SelectedItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string ValidateData()
|
||||||
|
{
|
||||||
|
string output = "";
|
||||||
|
double teamOneScore = 0;
|
||||||
|
double teamTwoScore = 0;
|
||||||
|
|
||||||
|
bool scoreOneValid = double.TryParse(teamOneScoreValue.Text, out teamOneScore);
|
||||||
|
bool scoreTwoValid = double.TryParse(teamTwoScoreValue.Text, out teamTwoScore);
|
||||||
|
|
||||||
|
if (!scoreOneValid )
|
||||||
|
{
|
||||||
|
output = "The score One is not a valid number.";
|
||||||
|
}
|
||||||
|
else if (!scoreTwoValid)
|
||||||
|
{
|
||||||
|
output = "The score Tow is not a valid number.";
|
||||||
|
}
|
||||||
|
else if (teamOneScore == 0 && teamTwoScore == 0)
|
||||||
|
{
|
||||||
|
output = "You did not enter a score for either team.";
|
||||||
|
}
|
||||||
|
else if (teamOneScore == teamTwoScore)
|
||||||
|
{
|
||||||
|
output = "We do not allow ties in this application.";
|
||||||
|
}
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
private void scoreButton_Click(object sender, EventArgs e)
|
private void scoreButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
var errorMessage = ValidateData();
|
||||||
|
if (errorMessage.Length>0)
|
||||||
|
{
|
||||||
|
MessageBox.Show($"Input Error: {errorMessage}");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
MatchupModel m = (MatchupModel)MatchUpListBox.SelectedItem;
|
MatchupModel m = (MatchupModel)MatchUpListBox.SelectedItem;
|
||||||
double teamOneScore = 0;
|
double teamOneScore = 0;
|
||||||
double teamTwoScore = 0;
|
double teamTwoScore = 0;
|
||||||
@ -199,8 +234,16 @@ namespace TrackerUI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TournamentLogic.UpdateTournamentResults(tournament);
|
try
|
||||||
|
{
|
||||||
|
TournamentLogic.UpdateTournamentResults(tournament);
|
||||||
|
}
|
||||||
|
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show($"The application had the following error :{ex.Message}");
|
||||||
|
return;
|
||||||
|
}
|
||||||
LoadMatchups((int)roundDropDown.SelectedItem);
|
LoadMatchups((int)roundDropDown.SelectedItem);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user