using Dapper; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using TrackerLibrary.Models; //@PlaceNumber int, //@PlaceName nvarchar(50), //@PrizeAmount money, // @PrizePercentage float, //@id int = 0 output namespace TrackerLibrary.DataAccess { public class SqlConnector : IDataConnection { private const string db = "Tournaments"; public PersonModel CreatePerson(PersonModel model) { using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(GlobalConfig.CnnString(db))) { var p = new DynamicParameters(); p.Add("@FirstName", model.FirstName); p.Add("@LastName", model.LastName); p.Add("@EmailAddress", model.EmailAddress); p.Add("@CellPhoneNumber", model.CellPhoneNumber); p.Add("@Id", 0, dbType: DbType.Int32, direction: ParameterDirection.Output); connection.Execute("dbo.spPeople_Insert", p, commandType: CommandType.StoredProcedure); model.Id = p.Get("@Id"); return model; } } // TODO - Make the CreatePrize method actually save to the database /// /// Saves a prize to the database /// /// The prize information. /// The prize information, including the unique identifier. public Models.PrizeModel CreatePrize(Models.PrizeModel model) { using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(GlobalConfig.CnnString(db))) { var p = new DynamicParameters(); p.Add("@PlaceNumber", model.PlaceNumber); p.Add("@PlaceName", model.PlaceName); p.Add("@PrizeAmount", model.PrizeAmount); p.Add("@PrizePercentage", model.PrizePercentage); p.Add("@Id", 0, dbType: DbType.Int32, direction: ParameterDirection.Output); connection.Execute("dbo.spPrizes_Insert", p, commandType: CommandType.StoredProcedure); model.Id = p.Get("@Id"); return model; } } public TeamModel CreateTeam(TeamModel model) { using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(GlobalConfig.CnnString(db))) { var p = new DynamicParameters(); p.Add("@TeamName", model.TeamName); p.Add("@Id", 0, dbType: DbType.Int32, direction: ParameterDirection.Output); connection.Execute("dbo.spTeams_Insert", p, commandType: CommandType.StoredProcedure); model.Id = p.Get("@Id"); foreach(PersonModel tm in model.TeamMembers) { p = new DynamicParameters(); p.Add("@TeamId", model.Id); p.Add("@PersonId", tm.Id); connection.Execute("dbo.spTeamMembers_Insert", p, commandType: CommandType.StoredProcedure); } return model; } } public List GetPerson_All() { List output; using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(GlobalConfig.CnnString(db))) { output = connection.Query("dbo.spPeople_GetAll").ToList(); } return output; } public List GetTeam_All() { List output; using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(GlobalConfig.CnnString(db))) { output = connection.Query("dbo.spTeam_GetAll").ToList(); foreach(TeamModel team in output) { var p = new DynamicParameters(); p.Add("@TeamId", team.Id); team.TeamMembers = connection.Query("dbo.spTeamMembers_GetByTeam",p, commandType: CommandType.StoredProcedure).ToList(); } } return output; } } }