Before implementing save to textfiles

This commit is contained in:
2020-04-06 23:50:25 +02:00
parent d6f251c822
commit 137d012ab3
7 changed files with 123 additions and 8 deletions

View File

@ -10,6 +10,7 @@ namespace TrackerLibrary.DataAccess
PrizeModel CreatePrize(PrizeModel model);
PersonModel CreatePerson(PersonModel model);
TeamModel CreateTeam(TeamModel model);
TournamentModel CreateTournament(TournamentModel model);
List<TeamModel> GetTeam_All();
List<PersonModel> GetPerson_All();
}

View File

@ -74,7 +74,7 @@ namespace TrackerLibrary.DataAccess
model.Id = p.Get<int>("@Id");
foreach(PersonModel tm in model.TeamMembers)
foreach (PersonModel tm in model.TeamMembers)
{
p = new DynamicParameters();
p.Add("@TeamId", model.Id);
@ -89,6 +89,65 @@ namespace TrackerLibrary.DataAccess
}
public TournamentModel CreateTournament(TournamentModel model)
{
using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(GlobalConfig.CnnString(db)))
{
DynamicParameters p = SaveTournament(model, connection);
p = SaveTournamentPrizes(model, connection, p);
p = SaveTournamentEntries(model, connection, p);
return model;
}
}
private static DynamicParameters SaveTournament(TournamentModel model, IDbConnection connection)
{
var p = new DynamicParameters();
p.Add("@TournamentName", model.TournamentName);
p.Add("@EntryFee", model.EntryFee);
p.Add("@Id", 0, dbType: DbType.Int32, direction: ParameterDirection.Output);
connection.Execute("dbo.spTournaments_Insert", p, commandType: CommandType.StoredProcedure);
model.Id = p.Get<int>("@Id");
return p;
}
private static DynamicParameters SaveTournamentEntries(TournamentModel model, IDbConnection connection, DynamicParameters p)
{
foreach (TeamModel tm in model.EnteredTeams)
{
p = new DynamicParameters();
p.Add("@TournamentId", model.Id);
p.Add("@TeamId", tm.Id);
p.Add("@Id", 0, dbType: DbType.Int32, direction: ParameterDirection.Output);
connection.Execute("dbo.spTournamentEntries_Insert", p, commandType: CommandType.StoredProcedure);
}
return p;
}
private static DynamicParameters SaveTournamentPrizes(TournamentModel model, IDbConnection connection, DynamicParameters p)
{
foreach (PrizeModel pz in model.Prizes)
{
p = new DynamicParameters();
p.Add("@TournamentId", model.Id);
p.Add("@PrizeId", pz.Id);
p.Add("@Id", 0, dbType: DbType.Int32, direction: ParameterDirection.Output);
connection.Execute("dbo.spTournamentPrizes_Insert", p, commandType: CommandType.StoredProcedure);
}
return p;
}
public List<PersonModel> GetPerson_All()
{
@ -107,11 +166,11 @@ namespace TrackerLibrary.DataAccess
{
output = connection.Query<TeamModel>("dbo.spTeam_GetAll").ToList();
foreach(TeamModel team in output)
foreach (TeamModel team in output)
{
var p = new DynamicParameters();
p.Add("@TeamId", team.Id);
team.TeamMembers = connection.Query<PersonModel>("dbo.spTeamMembers_GetByTeam",p, commandType: CommandType.StoredProcedure).ToList();
team.TeamMembers = connection.Query<PersonModel>("dbo.spTeamMembers_GetByTeam", p, commandType: CommandType.StoredProcedure).ToList();
}
}
return output;

View File

@ -12,6 +12,8 @@ namespace TrackerLibrary.DataAccess
private const string PrizesFile = "PrizeModels.csv";
private const string PeopleFile = "PersonModels.csv";
private const string TeamFile = "TeamModels.csv";
private const string TournamentFile = "TournamentModels.csv";
public PersonModel CreatePerson(PersonModel model)
{
@ -98,5 +100,10 @@ namespace TrackerLibrary.DataAccess
{
return TeamFile.FullFilePath().LoadFile().ConvertToTeamModels(PeopleFile);
}
public TournamentModel CreateTournament(TournamentModel model)
{
List<TournamentModel> tournaments = TournamentFile.FullFilePath().LoadFile().ConvertToTournamentModels();
}
}
}

View File

@ -90,7 +90,10 @@ namespace TrackerLibrary.DataAccess.TextHelpers
return output;
}
public static List<TournamentModel> ConvertToTournamentModels(this List<string> lines)
{
// id, TournamentName, EntryFee, (id|id|id - entered teams), (id|id|id - entered prizes), (rounds - id^id^id|id^id^id|id^id^id)
}
public static void SaveToPrizeFile(this List<PrizeModel> models, string fileName)
{

View File

@ -6,10 +6,29 @@ namespace TrackerLibrary.Models
{
public class TournamentModel
{
/// <summary>
/// The unique identifier for this tournament
/// </summary>
public int Id { get; set; }
/// <summary>
/// The name given to this tournament
/// </summary>
public string TournamentName { get; set; }
/// <summary>
/// The amount of money each team needs to put up to enter
/// </summary>
public decimal EntryFee { get; set; }
/// <summary>
/// The set of teams that have entered
/// </summary>
public List<Models.TeamModel> EnteredTeams { get; set; } = new List<Models.TeamModel>();
/// <summary>
/// The list of prizes for various places
/// </summary>
public List<Models.PrizeModel> Prizes { get; set; } = new List<Models.PrizeModel>();
public List<List<Models.MatchupModel>> MyProperty { get; set; } = new List<List<Models.MatchupModel>>();
/// <summary>
/// The matchups per round
/// </summary>
public List<List<Models.MatchupModel>> Rounds { get; set; } = new List<List<Models.MatchupModel>>();
}
}

View File

@ -41,7 +41,7 @@ namespace TrackerUI
private void addTeamButton_Click(object sender, EventArgs e)
{
TeamModel t = (TeamModel)selectTeamDropDown.SelectedItem;
if(t != null)
if (t != null)
{
availableTeams.Remove(t);
selectedTeams.Add(t);
@ -104,6 +104,32 @@ namespace TrackerUI
private void createTournamentButton_Click(object sender, EventArgs e)
{
//Validate data
decimal fee = 0;
bool feeAcceptable = decimal.TryParse(entryFeeValue.Text, out fee);
if (!feeAcceptable)
{
MessageBox.Show("You need to enter a valid Entry Fee.",
"Invalid Fee",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
return;
}
// Create our tournament model
TournamentModel tm = new TournamentModel();
tm.TournamentName = tournamentNameValue.Text;
tm.EntryFee = fee;
tm.Prizes = selectedPrizes;
tm.EnteredTeams = selectedTeams;
// Wireup our matchups
// Finally create the tournament entry
// Create all of the prizes entries
// Create all of team entries
GlobalConfig.Connection.CreateTournament(tm);
}
}

View File

@ -19,7 +19,7 @@ namespace TrackerUI
Application.SetCompatibleTextRenderingDefault(false);
// Initialize the database connections
GlobalConfig.InitializeConnections(DatabaseType.TextFile);
GlobalConfig.InitializeConnections(DatabaseType.Sql);
Application.Run(new CreateTournamentForm());
//Application.Run(new TournamentDashboardForm());