public static List <Hold> getHoldAktivitet(List <Hold> _holdList, int?_eventId = null, int?_holdOrder = null, int?_eventAktivitetId = null) { List <object> tempAktivitetHoldList = DBHandler.getHoldAktivitet(_eventId, _holdOrder, _eventAktivitetId); List <EventAktivitetHold> eventAktivitetHoldList = new List <EventAktivitetHold>(); foreach (object _aktivitetHold in tempAktivitetHoldList) { EventAktivitetHold eah = new EventAktivitetHold(); eah.HoldScores = new List <EventAktivitetHoldScore>(); eah.Id = adapt <int>("Id", _aktivitetHold); eah.EventAktivitetId = adapt <int>("EventAktivitetId", _aktivitetHold); eah.HoldId = adapt <int>("HoldId", _aktivitetHold); eah.Point = adapt <int?>("Point", _aktivitetHold); eah.HoldOrder = adapt <int>("HoldOrder", _aktivitetHold); eventAktivitetHoldList.Add(eah); } foreach (Hold _hold in _holdList) { _hold.HoldAktiviteter = new List <EventAktivitetHold>(); _hold.HoldAktiviteter.AddRange(eventAktivitetHoldList.Where(i => i.HoldId == _hold.Id).ToList()); if (_hold.HoldAktiviteter != null) { eventAktivitetHoldList.RemoveAll(i => i.HoldId == _hold.Id); } } return(_holdList); }
public static void addHoldScore(int _eventId, int _eventAktivitetId, int _holdOrder, int _holdId, int _score) { List <EventAktivitetHold> tempList = getHoldAktivitetIntern(_eventId, _holdOrder, _eventAktivitetId); EventAktivitetHold temphold = new EventAktivitetHold(); temphold = tempList.Where(i => i.HoldId == _holdId).FirstOrDefault(); if (temphold != null) { using (SqlConnection con = new SqlConnection(connectionString)) { string sql = "INSERT INTO EventAktivitetHoldScore Values(@EventAktivitetHoldId, @HoldScore)"; SqlCommand command = new SqlCommand(sql, con); command.Parameters.AddWithValue("@EventAktivitetHoldId", temphold.Id); command.Parameters.AddWithValue("@HoldScore", _score); con.Open(); command.ExecuteNonQuery(); } } }
//giver point til hver aktivitet efter deres stilling private void udregnPoint() { if (Vis > 0) { for (int _vis = 0; _vis < Vis; _vis++) { List <Hold> HoldVindere = new List <Hold>(); List <Hold> HoldTabere = new List <Hold>(); List <Hold> HoldStodLige = new List <Hold>(); List <Hold> HoldResterende = new List <Hold>(); foreach (Hold _hold in HoldList) { EventAktivitetHold _eventAktivitetHold = _hold.HoldAktiviteter.Where(i => i.EventAktivitetId == EventAktivitetList[_vis].Id).FirstOrDefault(); if (_eventAktivitetHold != null) { Aktivitet _aktivitet = AktivitetList.Where(i => i.Id == EventAktivitetList.Where(i => i.Id == _eventAktivitetHold.EventAktivitetId).FirstOrDefault().AktivitetId).FirstOrDefault(); int? totalScore = 0; int? antalScores = 0; int? modstanderTotalScore = 0; int? modstanderAntalScores = 0; int antalForan = 0; int antalLige = 0; List <Hold> tempHoldList = new List <Hold>(); if (_aktivitet.HoldSport == 0) { if (_eventAktivitetHold.HoldScores.Count != 0) { foreach (var _score in _eventAktivitetHold.HoldScores) { totalScore += _score.HoldScore; antalScores++; } } } else if (_aktivitet.HoldSport == 1) { foreach (var _deltager in DeltagerList.Where(d => d.HoldId == _hold.Id).ToList()) { foreach (var _score in _deltager.ScoreList.Where(i => i.EventAktivitetId == EventAktivitetList[_vis].Id).ToList()) { if (_score.Score != null && _score.EventAktivitetId == _eventAktivitetHold.EventAktivitetId) { totalScore += _score.Score; antalScores++; } } } } if (antalScores != 0 && _aktivitet.HoldSport == 1) { totalScore /= antalScores; } if (_aktivitet.HoldSport == 0) { tempHoldList = HoldList.Where(i => i.HoldAktiviteter.Where(i => i.HoldOrder == _eventAktivitetHold.HoldOrder && i.EventAktivitetId == _eventAktivitetHold.EventAktivitetId).ToList().Count != 0).ToList(); } for (int i = 0; i < HoldList.Count; i++) { if (HoldList[i] != _hold) { if (tempHoldList == null || tempHoldList.Count == 0 || tempHoldList != null && tempHoldList.Count != 0 && tempHoldList.Contains(HoldList[i])) { modstanderTotalScore = 0; modstanderAntalScores = 0; EventAktivitetHold _modstanderEventAktivitetHold = HoldList[i].HoldAktiviteter.Where(i => i.EventAktivitetId == EventAktivitetList[_vis].Id).FirstOrDefault(); if (_modstanderEventAktivitetHold != null) { if (_aktivitet.HoldSport == 0) { if (_modstanderEventAktivitetHold.HoldScores.Count != 0) { foreach (var _score in _modstanderEventAktivitetHold.HoldScores) { modstanderTotalScore += _score.HoldScore; modstanderAntalScores++; } } if (tempHoldList != null && tempHoldList.Count != 0 && totalScore == modstanderTotalScore) { antalLige++; } } else if (_aktivitet.HoldSport == 1) { foreach (var _deltager in DeltagerList.Where(d => d.HoldId == HoldList[i].Id).ToList()) { foreach (var _score in _deltager.ScoreList.Where(i => i.EventAktivitetId == EventAktivitetList[_vis].Id).ToList()) { if (_score.Score != null) { modstanderTotalScore += _score.Score; modstanderAntalScores++; } } } } if (modstanderAntalScores != 0 && _aktivitet.HoldSport == 1) { modstanderTotalScore /= modstanderAntalScores; } if (totalScore > modstanderTotalScore && _aktivitet.PointType != 1 && _aktivitet.PointType != 3 || totalScore < modstanderTotalScore && _aktivitet.PointType != 0 && _aktivitet.PointType != 2) { antalForan++; } } } } } if (_aktivitet.HoldSport == 0 && tempHoldList != null && tempHoldList.Count != 0) { if (antalLige == tempHoldList.Count - 1) { HoldStodLige.Add(_hold); } else if (antalForan == 0) { HoldVindere.Add(_hold); } else { HoldTabere.Add(_hold); } } else { _eventAktivitetHold.Point = 10 * (HoldList.Count() - antalForan); } } else { HoldResterende.Add(_hold); } } //hvis det er hold mod hold og point gives til vinderen af de individuelle hold mod hold. if (HoldVindere.Count != 0 && HoldTabere.Count != 0 || HoldStodLige.Count != 0) { List <List <Hold> > listerAfHold = new List <List <Hold> >(); if (HoldVindere.Count != 0 && HoldTabere.Count != 0) { listerAfHold.Add(HoldVindere); listerAfHold.Add(HoldTabere); } if (HoldStodLige.Count != 0) { listerAfHold.Add(HoldStodLige); } HoldList.Clear(); foreach (List <Hold> _holdlist in listerAfHold) { //hvor mange hold der er i de andre lister før den liste som den nuværende hold er i int holdlistenummer = 0; if (_holdlist == HoldStodLige || _holdlist == HoldTabere) { if (HoldVindere != null) { holdlistenummer += HoldVindere.Count; } if (_holdlist == HoldTabere) { if (HoldStodLige != null) { holdlistenummer += HoldStodLige.Count; } } } foreach (Hold _hold in _holdlist) { EventAktivitetHold _eventAktivitetHold = _hold.HoldAktiviteter.Where(i => i.EventAktivitetId == EventAktivitetList[_vis].Id).FirstOrDefault(); if (_eventAktivitetHold != null) { Aktivitet _aktivitet = AktivitetList.Where(i => i.Id == EventAktivitetList.Where(i => i.Id == _eventAktivitetHold.EventAktivitetId).FirstOrDefault().AktivitetId).FirstOrDefault(); int? totalScore = 0; int? antalScores = 0; int? modstanderTotalScore = 0; int? modstanderAntalScores = 0; int antalForan = 0; if (_aktivitet.HoldSport == 0) { if (_eventAktivitetHold.HoldScores.Count != 0) { foreach (var _score in _eventAktivitetHold.HoldScores) { totalScore += _score.HoldScore; antalScores++; } } } if (antalScores != 0 && _aktivitet.HoldSport == 1) { totalScore /= antalScores; } for (int i = 0; i < _holdlist.Count; i++) { if (_holdlist[i] != _hold) { modstanderTotalScore = 0; modstanderAntalScores = 0; EventAktivitetHold _modstanderEventAktivitetHold = _holdlist[i].HoldAktiviteter.Where(i => i.EventAktivitetId == EventAktivitetList[_vis].Id).FirstOrDefault(); if (_modstanderEventAktivitetHold != null) { if (_aktivitet.HoldSport == 0) { if (_modstanderEventAktivitetHold.HoldScores.Count != 0) { foreach (var _score in _modstanderEventAktivitetHold.HoldScores) { modstanderTotalScore += _score.HoldScore; modstanderAntalScores++; } } } else if (_aktivitet.HoldSport == 1) { foreach (var _deltager in DeltagerList.Where(d => d.HoldId == _holdlist[i].Id).ToList()) { foreach (var _score in _deltager.ScoreList.Where(i => i.EventAktivitetId == EventAktivitetList[_vis].Id).ToList()) { if (_score.Score != null) { modstanderTotalScore += _score.Score; modstanderAntalScores++; } } } } if (modstanderAntalScores != 0 && _aktivitet.HoldSport == 1) { modstanderTotalScore /= modstanderAntalScores; } if (totalScore > modstanderTotalScore && _aktivitet.PointType != 1 && _aktivitet.PointType != 3 || totalScore < modstanderTotalScore && _aktivitet.PointType != 0 && _aktivitet.PointType != 2) { antalForan++; } } } } _eventAktivitetHold.Point = 10 * (HoldVindere.Count + HoldTabere.Count + HoldStodLige.Count - antalForan - holdlistenummer); } } HoldList.AddRange(_holdlist); } HoldList.AddRange(HoldResterende); } } } HoldList = HoldList.OrderByDescending(i => i.HoldAktiviteter.Sum(i => i.Point)).ToList(); }