private bool classesDifferent() { // Check removed one foreach (var c2 in _dm.GetParticipantClasses()) { ParticipantClass c1 = null; _class2Class.TryGetValue(c2, out c1); if (c1 == null || ClassViewModel.Items.FirstOrDefault(i => i == c1) == null) { return(true); } } // Check update & new ones uint curSortPos = 1; foreach (var c1 in ClassViewModel.Items) { var found = _class2Class.FirstOrDefault(i => i.Value == c1); var c2 = found.Key; c2 = _dm.GetParticipantClasses().FirstOrDefault(i => i == c2); var g2 = _group2Group.FirstOrDefault(i => i.Value == c1.Group); var cat2 = _category2Category.FirstOrDefault(i => i.Value == c1.Sex); if (c2 != null) { // Update existing one if (c2.Name != c1.Name || c2.Group != g2.Key || c2.Sex != cat2.Key || c2.Year != c1.Year || c2.SortPos != curSortPos) { return(true); } } else { return(true); } curSortPos++; } return(false); }
/// <summary> /// Determines the default class based on Year and Sex of the participant /// </summary> /// <param name="p">The participant</param> /// <returns>The default class</returns> public ParticipantClass DetermineClass(Participant p) { ParticipantClass cFound = null; foreach (var c in _classesByYear) { if (c.Sex == p.Sex) { if (c.Year < p.Year) { break; } cFound = c; } } return(cFound); }
public void RemoveClass(ParticipantClass c) { }
public void CreateOrUpdateClass(ParticipantClass c) { }
public void Import(AppDataModel srcModel) { var srcGroups = srcModel.GetParticipantGroups(); var srcClasses = srcModel.GetParticipantClasses(); var srcCategories = srcModel.GetParticipantCategories(); // TODO: only really added items are allowed to be in _x2x maps otherwise, class becomes inconsistent or points to a wrong group/category foreach (var g1 in srcGroups) { if (!GroupViewModel.ContainsSimilar(g1)) { ParticipantGroup g2 = null; if (!_group2Group.TryGetValue(g1, out g2)) { g2 = new ParticipantGroup(g1.Id, g1.Name, g1.SortPos); _group2Group.Add(g1, g2); GroupViewModel.Merge(g2); } else { System.Diagnostics.Debug.Assert(false); } } } foreach (var cat1 in srcCategories) { if (!CategoryViewModel.ContainsSimilar(cat1)) { ParticipantCategory cat2 = null; if (!_category2Category.TryGetValue(cat1, out cat2)) { cat2 = new ParticipantCategory(cat1.Name, cat1.PrettyName, cat1.SortPos, cat1.Synonyms); _category2Category.Add(cat1, cat2); CategoryViewModel.Merge(cat2); } else { System.Diagnostics.Debug.Assert(false); } } } foreach (var c1 in srcClasses) { if (!ClassViewModel.ContainsSimilar(c1)) { ParticipantClass c2 = null; if (!_class2Class.TryGetValue(c1, out c2)) { c2 = new ParticipantClass( c1.Id, c1.Group == null ? null : _group2Group[c1.Group], c1.Name, c1.Sex == null ? null : _category2Category[c1.Sex], c1.Year, c1.SortPos); _class2Class.Add(c1, c2); ClassViewModel.Merge(c2); } else { System.Diagnostics.Debug.Assert(false); } } } }
public bool ContainsSimilar(ParticipantClass c) { return(Items.FirstOrDefault(i => (i.Name == c.Name && i.Year == c.Year && i.Sex == c.Sex)) != null); }
public List <ParticipantDivision> GetResults(string _competitionCode) { const string SQL = @" SELECT e.EnName AS LastName, e.EnFirstName AS FirstName, c.ClDescription AS Class, c.ClId AS ClassCode, c.ClSex AS ClassSex, d.DivDescription AS Division, d.DivId AS DivisionCode, q.QuSession AS SessionNumber, q.QuTarget AS BaleNumber, q.QuLetter AS TargetPosition, co.CoName AS TeamName, q.QuD1Score AS Round1Score, q.QuD1Hits AS Round1Hits, q.QuD1Rank AS Round1Rank, q.QuD2Score AS Round2Score, q.QuD2Hits AS Round2Hits, q.QuD2Rank AS Round2Rank, q.QuScore AS TotalScore, q.QuHits AS TotalHits, Q.QuGold AS Total10, Q.QuXnine AS Total9, Q.QuClRank AS TotalRank FROM Entries e JOIN qualifications q on e.EnId = q.QuId JOIN classes c on e.EnTournament = c.ClTournament AND e.EnClass = c.ClId JOIN divisions d on e.EnTournament = d.DivTournament AND e.EnDivision = d.DivId JOIN countries co on e.EnTournament = co.CoTournament AND e.EnCountry = co.COId JOIN tournament t on e.EnTournament = t.ToId WHERE t.ToCode = @compCode AND e.EnIndClEvent = 1 AND e.EnStatus = 0 AND q.QuClRank != 0 ORDER BY d.DivViewOrder, c.ClViewOrder, q.QuClRank "; var table = m_db.GetData(SQL, "compCode", _competitionCode); Dictionary <string, ParticipantDivision> dDict = new Dictionary <string, ParticipantDivision>(); Dictionary <string, ParticipantClass> cDict = new Dictionary <string, ParticipantClass>(); List <ParticipantDivision> divisions = new List <ParticipantDivision>(); foreach (DataRow row in table.Rows) { string className = row.GetString("Class"); string classCode = row.GetString("ClassCode").ToLower(); string divisionName = row.GetString("Division"); string divisionCode = row.GetString("DivisionCode").ToLower(); byte classSex = row.GetTinyInt("ClassSex"); ParticipantDivision pDivision; ParticipantClass pClass; if (!dDict.ContainsKey(divisionCode)) { pDivision = new ParticipantDivision { DivisionName = divisionName, DivisionCode = divisionCode }; divisions.Add(pDivision); dDict.Add(divisionCode, pDivision); } else { pDivision = dDict[divisionCode]; } string tempName = divisionCode + "|" + classCode; if (!cDict.ContainsKey(tempName)) { pClass = new ParticipantClass { ClassName = className, ClassCode = classCode, ClassSex = (classSex == 0) ? "m" : "f" }; cDict.Add(tempName, pClass); pDivision.ParticipantClasses.Add(pClass); } else { pClass = cDict[tempName]; } ParticipantResult p = new ParticipantResult { FirstName = row.GetString("FirstName"), LastName = row.GetString("LastName"), Session = Convert.ToInt32(row.GetByte("SessionNumber")), BaleNumber = row.GetInt("BaleNumber"), TargetPosition = row.GetString("TargetPosition"), Team = row.GetString("TeamName"), Round1Score = row.GetShort("Round1Score"), Round1Hits = row.GetShort("Round1Hits"), Round1Rank = row.GetShort("Round1Rank"), Round2Score = row.GetShort("Round2Score"), Round2Hits = row.GetShort("Round2Hits"), Round2Rank = row.GetShort("Round2Rank"), TotalScore = row.GetInt("TotalScore"), TotalHits = row.GetInt("TotalHits"), TotalRank = row.GetShort("TotalRank"), TotalTens = row.GetInt("Total10"), TotalNines = row.GetInt("Total9") }; pClass.Participants.Add(p); } return(divisions); }
public void BuildRace(Race race) { race.Name = "KjeringiOpen 2014"; SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["kjeringi"].ConnectionString); conn.Open(); // Read klasser SqlCommand cmd = new SqlCommand(@"SELECT id, name, official, sequence FROM kop_station", conn); SqlDataReader data = cmd.ExecuteReader(); race.TimeStations.Add(new TimeStation() { Id = -1, Name = "Start", Official = true, Sequence = 1 }); while (data.Read()) { race.TimeStations.Add(new TimeStation() { Id = data.GetInt32(data.GetOrdinal("id")), Name = data.GetString(data.GetOrdinal("name")), Official = data.GetInt32(data.GetOrdinal("official")).Equals(1), Sequence = data.GetInt32(data.GetOrdinal("sequence")) }); } data.Close(); // Read klasser cmd = new SqlCommand(@"SELECT code, name FROM kop_personClass union SELECT code, name FROM kop_teamClass", conn); data = cmd.ExecuteReader(); while (data.Read()) { race.Classes.Add(new ParticipantClass() { Id = data.GetString(data.GetOrdinal("code")), Name = data.GetString(data.GetOrdinal("name")), Sequence = 1 }); } data.Close(); // Add static classes var companyClass = new ParticipantClass { Id = "BED", Name = "Bedriftsklasse", Sequence = 100 }; var testClass = new ParticipantClass { Id = "TEST", Name = "Testklasse", Sequence = 101 }; race.Classes.Add(companyClass); race.Classes.Add(testClass); // Adding supers cmd = new SqlCommand(@"select startNumber, chipNumber, firstname, surname, personClassCode, phoneNumber from kop_person where superwife = 1 and deleted = 0 and startnumber is not null and chipnumber is not null", conn); data = cmd.ExecuteReader(); while (data.Read()) { race.AddParticipant(new Participant() { Startnumber = data.GetInt32(data.GetOrdinal("startNumber")), EmitID = int.Parse(data.GetString(data.GetOrdinal("chipNumber"))), Name = data.GetString(data.GetOrdinal("firstname")) + " " + data.GetString(data.GetOrdinal("surname")), Telephone = new List<String>() {data.GetString(data.GetOrdinal("phoneNumber"))}, Classes = new List<ParticipantClass>() {race.Classes.Find(x => x.Id.Equals(data.GetString(data.GetOrdinal("personClassCode"))))}, IsTeam = false, IsSuper = true, IsCompany = false }); } data.Close(); cmd = new SqlCommand(@"SELECT t.startNumber, t.chipNumber, t.name, t.teamClassCode, t.companyClass, p.firstname, p.surname, p.phoneNumber, p.sprintNumber FROM kop_team t inner join kop_person p on t.id = p.teamid where t.deleted = 0 and t.startNumber is not null and t.chipNumber is not null order by t.startNumber, p.sprintNumber", conn); data = cmd.ExecuteReader(); data.Read(); bool moreData = true; do { var p = new Participant() { Startnumber = data.GetInt32(data.GetOrdinal("startNumber")), EmitID = int.Parse(data.GetString(data.GetOrdinal("chipNumber"))), Name = data.GetString(data.GetOrdinal("name")), Telephone = new List<String>() {data.GetString(data.GetOrdinal("phoneNumber"))}, Classes = new List<ParticipantClass> {race.Classes.Find(x => x.Id.Equals(data.GetString(data.GetOrdinal("teamClassCode"))))}, IsTeam = true, IsSuper = false, IsCompany = data.GetInt32(data.GetOrdinal("companyClass")).Equals(1) }; if (p.IsCompany) p.Classes.Add(companyClass); // Add medlemmer while (moreData && data.GetInt32(data.GetOrdinal("startNumber")).Equals(p.Startnumber)) { p.TeamMembers.Add(data.GetString(data.GetOrdinal("firstName")) + " " + data.GetString(data.GetOrdinal("surname"))); if (!String.IsNullOrEmpty(data.GetString(data.GetOrdinal("phoneNumber")))) p.Telephone.Add(data.GetString(data.GetOrdinal("phoneNumber"))); moreData = data.Read(); } race.AddParticipant(p); } while (moreData); data.Close(); conn.Close(); foreach (Participant p in race.Participants) race.AddPass(new EmitData() { BoxId = -1, Id = p.EmitID, Time = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 13, 14, 0) }); }