Exemple #1
0
        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);
        }
Exemple #2
0
        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();
        }