示例#1
0
 public Job()
 {
     MyHoldList = new HoldList();
     MyHoldList.LoadFromXml(".//xml//hold-jobs.xml");
      TimeKeeper = new TimeKeeper(null);
      Logger = NLog.LogManager.GetCurrentClassLogger();
 }
        public void CmdUpdatePoint()
        {
            if (SelectedPoint != -1)
            {
                int?score = 0;
                if (ValgtAktivitet.HoldSport == 0)
                {
                    score = HoldList.Where(i => i.Id == SelectedHold).FirstOrDefault().HoldAktiviteter.Where(i => i.HoldId == SelectedHold).FirstOrDefault().HoldScores.Where(i => i.Id == SelectedPoint).FirstOrDefault().HoldScore;
                }
                else
                {
                    score = DeltagerList.Where(i => i.Id == SelectedDeltager).FirstOrDefault().ScoreList.Where(i => i.Id == SelectedPoint).FirstOrDefault().Score;
                }

                if (ValgtGuiElemement == "CmdUpdatePoint+")
                {
                    score++;
                }
                else if (ValgtGuiElemement == "CmdUpdatePoint-")
                {
                    score--;
                }
                if (score != null)
                {
                    int tempscore = (int)score;
                    if (ValgtAktivitet.HoldSport == 0)
                    {
                        //HoldSport Add HOLD score
                        if (SelectedPoint != -1)
                        {
                            DBAdapter.updateHoldScore(SelectedPoint, tempscore);
                            HoldList = DBAdapter.getHold(SelectedEvent, SelectedOrder, SelectedEventAktivitet);
                            HoldList = DBAdapter.getHoldAktivitet(HoldList, SelectedEvent, SelectedOrder, SelectedEventAktivitet);
                            HoldList = DBAdapter.getHoldAktivitetScores(HoldList, SelectedEvent, SelectedOrder, SelectedEventAktivitet);
                        }
                    }
                    else if (ValgtAktivitet.HoldSport == 1)
                    {
                        if (SelectedPoint != -1)
                        {
                            DBAdapter.updateDeltagerScore(SelectedPoint, tempscore);
                            DeltagerList = DBAdapter.getDeltagere(SelectedEvent, SelectedEventAktivitet, SelectedHold);
                        }
                        //HoldSport Add DELTAGER score
                    }
                }
            }
        }
示例#3
0
 public Job( IKeepTheTime timekeeper)
 {
     MyHoldList = new HoldList();
      MyHoldList.LoadFromXml( ".//xml//hold-jobs.xml" );
      TimeKeeper = timekeeper;
 }
        //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();
        }