예제 #1
0
        private void LoadResults(Lag mSelectedLag)
        {
            if (mSelectedLag == null)
            {
                ChosenLag = null;
                this.OnPropertyChanged("ChosenLag");
                return;
            }

            var nyttLag = m_databaseService.GetLag(mSelectedLag.LagNummer);

            m_chosenLag = new ObservableCollection<ResultRowViewModel>();

            foreach (var skive in nyttLag.SkiverILaget)
            {
                if (skive.SkytterGuid != null)
                {
                    var results = m_databaseService.GetResultsForSkytter(skive.SkytterGuid.Value);

                    m_chosenLag.Add(new ResultRowViewModel(mSelectedLag.LagNummer, skive.SkiveNummer, skive.Skytter, results));
                }
                else
                {
                    m_chosenLag.Add(new ResultRowViewModel(mSelectedLag.LagNummer, skive.SkiveNummer));
                }
                
            }
            this.OnPropertyChanged("ChosenLag");
        }
예제 #2
0
 public Lag(Lag copy)
 {
     this.SkiverILaget   = new List <Skiver>();
     this.LagNummer      = copy.LagNummer;
     this.LagTid         = copy.LagTid;
     this.MaxSkiveNummer = copy.MaxSkiveNummer;
     this.OrionHoldId    = copy.OrionHoldId;
     foreach (var skive in copy.SkiverILaget)
     {
         this.SkiverILaget.Add(new Skiver(skive));
     }
 }
예제 #3
0
파일: Lag.cs 프로젝트: lnystad/OrionFelt
 public Lag(Lag copy)
 {
     this.SkiverILaget = new List<Skiver>();
     this.LagNummer = copy.LagNummer;
     this.LagTid = copy.LagTid;
     this.MaxSkiveNummer = copy.MaxSkiveNummer;
     this.OrionHoldId = copy.OrionHoldId;
     foreach (var skive in copy.SkiverILaget)
     {
         this.SkiverILaget.Add(new Skiver(skive));
     }
 }
예제 #4
0
        private Lag GetLagNr(List<Lag> retVal, int lagNr, int orionHoldId, int maxSkiveriLaget)
        {
            var foudLag = retVal.FirstOrDefault(x => x.LagNummer == lagNr);
            if (foudLag == null)
            {
                foudLag = new Lag(lagNr, orionHoldId, maxSkiveriLaget);
                retVal.Add(foudLag);
            }

            return foudLag;
        }
예제 #5
0
        public List<Lag> ConvertToLeonLag(List<Lag> inputFomLeon)
        {
            List<Lag> OrionLag = new List<Lag>();

            var inputFomLeonSorted = inputFomLeon.OrderBy(x => x.LagNummer);
            foreach (var res in inputFomLeonSorted)
            {
                res.SkiverILaget = res.SkiverILaget.OrderBy(x => x.SkiveNummer).ToList();
            }

            foreach (var res in inputFomLeonSorted)
            {
                Lag newres = new Lag();
                newres.OrionHoldId = res.OrionHoldId;
                newres.LagTid = res.LagTid;

                foreach (var skive in res.SkiverILaget)
                {
                    if (skive.SkiveNummer <= 0)
                    {
                        Log.Error("Fant skive uten nr");
                    }
                    int StartLeonLag = res.LagNummer;
                    int Leonserienr = 0;
                    int LeonLagNr;
                    int leonSkivenr;
                    if (skive.SkiveNummer <= m_AntallSkyttereILaget)
                    {
                        StartLeonLag = res.LagNummer;
                        LeonLagNr = res.LagNummer;
                        leonSkivenr = skive.SkiveNummer;
                        Leonserienr = 1;
                    }
                    else
                    {
                        int brok = (skive.SkiveNummer -1) / m_AntallSkyttereILaget;
                        Leonserienr = brok + 1;
                        LeonLagNr = StartLeonLag - brok;
                        leonSkivenr = m_AntallSkyttereILaget - skive.SkiveNummer % this.m_AntallSkyttereILaget;

                    }


                    var funnetLag = OrionLag.FirstOrDefault(x => x.LagNummer == LeonLagNr);
                    if (funnetLag != null)
                    {
                        Log.Trace("Fant lagnr {0} ut fra {1}", LeonLagNr, res.LagNummer);
                    }
                    else
                    {
                        funnetLag = new Lag(LeonLagNr, res.OrionHoldId, m_AntallSkyttereILaget);
                        funnetLag.LagTid = res.LagTid;
                        OrionLag.Add(funnetLag);
                    }

                    var funnetSkive = funnetLag.SkiverILaget.FirstOrDefault(x => x.SkiveNummer == leonSkivenr);
                    if (funnetSkive == null)
                    {
                        funnetSkive = new Skiver { SkiveNummer = leonSkivenr };
                        if (skive.Skytter != null)
                        {
                            funnetSkive.Skytter = new Skytter(skive.Skytter);
                            funnetSkive.SkytterGuid = skive.Skytter.Id;
                        }
                        funnetLag.SkiverILaget.Add(funnetSkive);
                    }
                    else
                    {
                        if (funnetSkive.Skytter != null)
                        {
                            if (skive.Skytter != null)
                            {
                                if (skive.Skytter.SkytterNr != funnetSkive.Skytter.SkytterNr)
                                {
                                    Log.Error("Funnet feil i skytter fra lag {0}, skive {1} fant={2} har={3}", res.LagNummer, skive.SkiveNummer, funnetSkive.Skytter.SkytterNr, skive.Skytter.SkytterNr);
                                }
                            }
                        }
                        else
                        {
                            if (skive.Skytter != null)
                            {
                                funnetSkive.Skytter = new Skytter(skive.Skytter);
                                funnetSkive.SkytterGuid = skive.Skytter.Id;
                            }
                        }   
                    }

                }
            }

            return OrionLag;
        }
예제 #6
0
        public List<Lag> GetLag()
        {
            List<Lag> lagRes= new List<Lag>();
            try
            {
                IniDatabase();

                foreach (var lag in m_LagList)
                {
                    var lagdef=m_LagDefinitionList.Find(x => x.LagNummer == lag.LagNummer);
                    Lag cpy = new Lag(lag);
                    if (lagdef != null)
                    {
                        cpy.LagTid = lagdef.LagTid;
                    }

                    foreach (var skive in lag.SkiverILaget)
                    {
                        if (skive.SkytterGuid != null)
                        {
                            var skytt = m_Skyttere.Find(y => y.Id == skive.SkytterGuid);
                            if (skytt != null)
                            {
                                var skiveFunnet = cpy.SkiverILaget.Find(ak => ak.SkiveNummer == skive.SkiveNummer);
                                if (skiveFunnet != null)
                                {
                                    skiveFunnet.Skytter = new Skytter(skytt);
                                    skiveFunnet.SkytterGuid = skytt.Id;
                                    skiveFunnet.Skytter.Id= skytt.Id;
                                }
                            }
                        }
                    }


                    lagRes.Add(cpy);
                }
            }
            catch (Exception e)
            {
                Log.Error(e, "GetLag");
            }

            return lagRes;
        }
예제 #7
0
        public Lag GetLag(int lagNr)
        {
            Lag funnetLag = null;
            try
            {
                IniDatabase();
                var searchLag = m_LagList.Find(x => x.LagNummer == lagNr);
                if (searchLag == null)
                {
                    return null;
                }
                funnetLag = new Lag(searchLag);
                var lagdef = m_LagDefinitionList.Find(x => x.LagNummer == lagNr);
                if (lagdef != null)
                {
                    funnetLag.LagTid = lagdef.LagTid;
                }
                foreach (var skive in funnetLag.SkiverILaget)
                {
                    if (skive.SkytterGuid != null)
                    {
                        var skytt = m_Skyttere.Find(y => y.Id == skive.SkytterGuid);
                        if (skytt != null)
                        {
                            var skiveFunnet = searchLag.SkiverILaget.Find(ak => ak.SkiveNummer == skive.SkiveNummer);
                            if (skiveFunnet != null)
                            {
                                skiveFunnet.Skytter = new Skytter(skytt);
                                skiveFunnet.SkytterGuid = skytt.Id;
                                skiveFunnet.Skytter.Id = skytt.Id;
                            }
                        }
                    }
                }
                return funnetLag;
            }
            catch (Exception e)
            {
                Log.Error(e, "GetLag");
            }

            return funnetLag;
        }
예제 #8
0
        public Lag GetLeonLagWithSum(int lag)
        {
            var funnetLag = m_LagList.Find(x => x.LagNummer == lag);
            Lag nyttLag = null;
            if (funnetLag != null)
            {
                nyttLag = new Lag(funnetLag);

                foreach (var lagskive in funnetLag.SkiverILaget)
                {
                    var nyskive = nyttLag.SkiverILaget.Find(x => x.SkiveNummer == lagskive.SkiveNummer);
                    if (nyskive == null)
                    {
                        continue;
                    }

                    if (lagskive.SkytterGuid != null)
                    {
                        var skytter=m_Skyttere.Find(y => y.Id == lagskive.SkytterGuid);
                        if (skytter == null)
                        {
                            continue;
                        }

                        nyskive.Skytter = new Skytter(skytter);
                        nyskive.SkytterGuid = skytter.Id;
                        nyskive.Skytter.TotalSum = 0;
                        var res = m_Resultater.Find(z => z.SkytterId == lagskive.SkytterGuid);
                        if (res != null)
                        {
                            nyskive.Skytter.TotalSum = res.TotalSum();
                            nyskive.Skytter.TotalFeltSum = res.FeltSum();
                        }
                    }
                }
                


            }


            return nyttLag;
        }
예제 #9
0
        private Lag UpdateTeam(Lag foundTeam, Lag inputlag)
        {
            foundTeam.LagTid = inputlag.LagTid;
            foundTeam.MaxSkiveNummer = inputlag.MaxSkiveNummer;
            foundTeam.OrionHoldId = inputlag.OrionHoldId;
            foreach (var skive in inputlag.SkiverILaget)
            {
                if (skive.SkiveNummer <= 0)
                {
                    Log.Warning("Fant Lag med tomt skivenr");
                    continue;
                }

                var foundSKive = foundTeam.SkiverILaget.Find(x => x.SkiveNummer == skive.SkiveNummer);
                if (foundSKive == null)
                {   Log.Info("Fant ikke skive nr {0} lag til lag nr {1}", skive.SkiveNummer, foundTeam.LagNummer);
                    foundSKive = new Skiver(skive);
                    foundTeam.SkiverILaget.Add(foundSKive);
                }

                if (skive.Skytter != null)
                {
                    if (skive.Skytter.SkytterNr == "0" && string.IsNullOrEmpty(skive.Skytter.Name))
                    {
                        foundSKive.Free = true;
                        foundSKive.Skytter = null;
                        foundSKive.SkytterGuid = null;
                    }
                    else
                    {
                        var foundSkytter = m_Skyttere.Find(y => y.SkytterNr == skive.Skytter.SkytterNr);
                        if (foundSkytter != null)
                        {
                            UpdateSkytter(foundSkytter, skive.Skytter);
                            foundSKive.Skytter = null;
                            foundSKive.SkytterGuid = foundSkytter.Id;
                        }
                        else
                        {
                            var nySkytter = new Skytter(skive.Skytter);
                            foundSKive.Skytter = null;
                            foundSKive.SkytterGuid = nySkytter.Id;
                            m_Skyttere.Add(nySkytter);
                            Log.Info("La til ny skytter Lag={0} skive{1} navn={2}", foundTeam.LagNummer, foundSKive.SkiveNummer, nySkytter.Name);
                        }
                    }
                    
                }
                else
                {
                    if (foundSKive.SkytterGuid != null)
                    {
                        var foundSkytter = m_Skyttere.Find(y => y.Id == foundSKive.SkytterGuid);
                        if (foundSkytter != null)
                        {
                            Log.Error(
                             "Remove skytter = {0} nr={1} from Lag={2} skive={3}",
                             foundSkytter.Name,
                             foundSkytter.SkytterNr,
                             foundTeam.LagNummer,
                             foundSKive.SkiveNummer);
                        }
                        
                        foundSKive.Skytter = null;
                    }

                    foundSKive.SkytterGuid = null;
                }

                //var newSKive = new Skiver(skive);

                //foundTeam.SkiverILaget.Add(newSKive);
            }

            return foundTeam;
        }
예제 #10
0
        private Lag InsertNewTeam(Lag inputel)
        {
            if (inputel == null)
            {
                return null;
            }

            var insert = new Lag(inputel);
            List<Skiver> feilvalidertSkive=new List<Skiver>();
            foreach (var skive in insert.SkiverILaget)
            {
                if (skive.SkiveNummer <= 0)
                {
                    feilvalidertSkive.Add(skive);
                    Log.Warning("Fant Lag med tomt skivenr ved insett av nytt lag lag={0}", insert.LagNummer);
                    continue;
                }
                
                if (skive.Skytter != null)
                {
                    if (skive.Skytter.SkytterNr == "0" && string.IsNullOrEmpty(skive.Skytter.Name))
                    {
                        skive.Free = true;
                        skive.Skytter = null;
                        skive.SkytterGuid = null;
                    }
                    else
                    {
                        var foundSkytter = m_Skyttere.Find(y => y.SkytterNr == skive.Skytter.SkytterNr);
                        if (foundSkytter != null)
                        {
                            UpdateSkytter(foundSkytter, skive.Skytter);
                            skive.Skytter = null;
                            skive.SkytterGuid = foundSkytter.Id;
                        }
                        else
                        {
                            m_Skyttere.Add(skive.Skytter);
                            skive.SkytterGuid = skive.Skytter.Id;
                            skive.Skytter = null;
                            
                        }
                    }
                }
            }

            foreach (var delSKive in feilvalidertSkive)
            {
                insert.SkiverILaget.Remove(delSKive);
            }

            m_LagList.Add(insert);
            return insert;
        }
예제 #11
0
        public void GenerateFilesButtonBase_OnClick(object sender, RoutedEventArgs routedEventArgs)
        {
            if(string.IsNullOrEmpty(m_filePath))
            {
                return;
            }

            if (!Directory.Exists(m_filePath))
            {
                MessageBox.Show(string.Format("Path Does not exsist{0}", m_filePath),"Error",MessageBoxButton.OK,MessageBoxImage.Error);
            }

            Collection<Lag> lagCollection = new Collection<Lag>();
            foreach (var lag in LagKilde)
            {
                var nyttLag = new Lag(lag);
                lagCollection.Add(nyttLag);
            }

            foreach (var skive in Skiver)
            {
                var lagFunnet = lagCollection.FirstOrDefault(x => x.LagNummer == skive.LagNummer);

                var funnetSkive = lagFunnet.SkiverILaget.FirstOrDefault(x => x.SkiveNummer == skive.SkiveNummer);
                if (funnetSkive.Skytter != null)
                {
                    funnetSkive.Skytter = new Skytter(funnetSkive.Skytter);
                }

                funnetSkive.Free = funnetSkive.Free;
            }
            m_databaseService.StoreToDatabase(lagCollection, this.m_filePath);
        }
예제 #12
0
        public List<Lag> ParseLeonOutputFormat(string[] inputLines)
        {
            var retColl = new List<Lag>();
            if (inputLines == null)
            {
                return retColl;
            }

           
            foreach (var line in inputLines)
            {
                string currentLine = line;
                if (currentLine != null)
                {
                    currentLine = currentLine.Trim();
                }

                if (!string.IsNullOrEmpty(currentLine))
                {
                    var elements = line.Split(new char[] { ';' }, StringSplitOptions.None);
                    Lag currentLag = new Lag();

                    if (elements.Length >= 6)
                    {

                        currentLag.OrionHoldId = Convert.ToInt32(elements[holdIdIndex]);
                        currentLag.LagNummer = Convert.ToInt32(elements[lagNrIndex]);
                        var Skive = new Skiver();
                        Skive.SkiveNummer = Convert.ToInt32(elements[skiveNrIndex]);
                        currentLag.SkiverILaget.Add(Skive);

                        var  currentSKytter = new Skytter();
                        currentSKytter.Name = elements[NavnIndex];
                        if (!string.IsNullOrEmpty(currentSKytter.Name))
                        {
                            currentSKytter.Name = currentSKytter.Name.Trim();
                        }

                        currentSKytter.Skytterlag = elements[skytterlagIndex];
                        if (!string.IsNullOrEmpty(currentSKytter.Skytterlag))
                        {
                            currentSKytter.Skytterlag = currentSKytter.Skytterlag.Trim();
                        }

                        currentSKytter.Klasse = elements[klasseIndex];
                        if (!string.IsNullOrEmpty(currentSKytter.Klasse))
                        {
                            currentSKytter.Klasse = currentSKytter.Klasse.Trim();
                        }

                        if (elements.Length > 6 && !string.IsNullOrEmpty(elements[totalsumIndex]))
                        {
                            currentSKytter.TotalSum = Convert.ToInt32(elements[totalsumIndex]);
                        }

                        if (elements.Length > skytterNrIndex && !string.IsNullOrEmpty(elements[skytterNrIndex]))
                        {
                            currentSKytter.SkytterNr = elements[skytterNrIndex];
                            if (!string.IsNullOrEmpty(currentSKytter.SkytterNr))
                            {
                                currentSKytter.SkytterNr = currentSKytter.SkytterNr.Trim();
                            }
                        }
                        if (!string.IsNullOrEmpty(currentSKytter.Name) && !string.IsNullOrEmpty(currentSKytter.SkytterNr))
                        {
                            Skive.Skytter = currentSKytter;
                        }

                        var funnetLag = retColl.FirstOrDefault(x => x.LagNummer == currentLag.LagNummer && x.OrionHoldId == currentLag.OrionHoldId);
                        if (funnetLag != null)
                        {
                            var funnetSkive = funnetLag.SkiverILaget.FirstOrDefault(x => x.SkiveNummer == Skive.SkiveNummer);
                            if (funnetSkive != null)
                            {
                                if (funnetSkive.Skytter != null)
                                {
                                    if (Skive.Skytter != null)
                                    {
                                        Log.Error("Skive already imported {0} Changing skytter from {1} to {2}", funnetSkive.SkiveNummer, funnetSkive.Skytter.Name, Skive.Skytter.Name);
                                        funnetSkive.Skytter = Skive.Skytter;
                                    }
                                    else
                                    {
                                        Log.Error("Skive already imported {0} Removing skytter {1} ", funnetSkive.SkiveNummer, funnetSkive.Skytter.Name);
                                        funnetSkive.Skytter = null;
                                    }
                                    
                                }
                                else
                                {
                                    if (Skive.Skytter != null)
                                    {
                                        Log.Error("Skive already imported {0} setting skytter from null to {1}", funnetSkive.SkiveNummer, Skive.Skytter.Name);
                                        funnetSkive.Skytter = Skive.Skytter;
                                    }
                                }

                            }
                            else
                            {
                                funnetLag.SkiverILaget.Add(Skive);
                            }
                            
                        }
                        else
                        {
                            retColl.Add(currentLag);
                        }
                    }
                }
            }
            return retColl;
        }
예제 #13
0
 public LagViewModel(Lag lag)
 {
     m_lag = lag;
 }