コード例 #1
0
        private RangeViewModel GetRange(OrionResult orionResult, out int orionId)
        {
            orionId = 0;
            foreach (var orionViewModel in m_orionSetupViewModel.OrionViewModels)
            {
                if (orionResult.OrionId == orionViewModel.OrionId)
                {
                    foreach (var rangeViewModel in orionViewModel.RangeViews)
                    {
                        if (rangeViewModel.RangeType == RangeType.Shooting && orionResult.Target >= rangeViewModel.FirstTarget && orionResult.Target <= rangeViewModel.LastTarget)
                        {
                            orionId = orionViewModel.OrionId;
                            return(rangeViewModel);
                        }
                    }
                }
            }

            Log.Error(
                string.Format(
                    "Could not find rangeid for result: {0} Orionid={1} Lag={2} Skive={3} Serie={4}",
                    orionResult.Name,
                    orionResult.OrionId,
                    orionResult.Team,
                    orionResult.Target,
                    orionResult.AllSeries));

            return(null);
        }
コード例 #2
0
        private int GetNextOrionIdAndRangeId(OrionResult orionResult, out int rangeId)
        {
            rangeId = 0;
            foreach (var orionViewModel in m_orionSetupViewModel.OrionViewModels)
            {
                if (orionResult.OrionId == orionViewModel.OrionId)
                {
                    foreach (var rangeViewModel in orionViewModel.RangeViews)
                    {
                        if (rangeViewModel.RangeType == RangeType.Shooting && orionResult.Target < rangeViewModel.FirstTarget)
                        {
                            rangeId = rangeViewModel.RangeId;
                            return(orionViewModel.OrionId);
                        }
                    }
                }
                else if (orionResult.OrionId < orionViewModel.OrionId)
                {
                    foreach (var rangeViewModel in orionViewModel.RangeViews)
                    {
                        if (rangeViewModel.RangeType == RangeType.Shooting)
                        {
                            rangeId = rangeViewModel.RangeId;
                            return(orionViewModel.OrionId);
                        }
                    }
                }
            }

            return(0);
        }
コード例 #3
0
        public static OrionResult ParseFromOrion(string orionResultLine)
        {
            if (string.IsNullOrWhiteSpace(orionResultLine))
            {
                Log.Error("Empty orion result line");
                return(null);
            }

            var tokens = orionResultLine.Split(';');
            var result = new OrionResult
            {
                OrionId   = TryGetIntFromToken(tokens[0], "OrionId"),
                Team      = TryGetIntFromToken(tokens[1], "Team"),
                Target    = TryGetIntFromToken(tokens[2], "Target"),
                ShooterId = TryGetIntFromToken(tokens[3], "ShooterId"),
                Name      = tokens[4],
                ClubName  = tokens[5],
                Class     = tokens[6],
                TotalSum  = TryGetIntFromToken(tokens[7], "TotalSum")
            };

            if (tokens.Length > 8)
            {
                result.Series = new List <string>();

                for (int c = 8; c < tokens.Length; c++)
                {
                    result.Series.Add(tokens[c]);
                }
            }

            result.AllSeries = string.Join(";", result.Series);
            return(result);
        }
コード例 #4
0
        public List <OrionResult> GetOrionResult(OrionViewModel orionViewModel)
        {
            if (this.CheckForNewFile() == false)
            {
                return(null);
            }

            var filename = GetFilename();
            var updFile  = this.GetUPDFilename();
            var allLines = m_fileHandler.ReadAllLines(filename);
            var id       = "NoId";
            var result   = new List <OrionResult>();

            foreach (var line in allLines)
            {
                if (string.IsNullOrWhiteSpace(line))
                {
                    continue;
                }

                var or = OrionResult.ParseFromOrion(line, orionViewModel);
                id = or.OrionId.ToString();
                if (or.ShooterId > 0)
                {
                    DatabaseApi.Save(or);
                    result.Add(or);
                }
            }

            var dbroot     = DatabaseApi.GetActiveCompetition();
            var backupPath = Path.Combine(dbroot, "Backup");

            if (!Directory.Exists(backupPath))
            {
                Directory.CreateDirectory(backupPath);
            }

            var bkupfilename = Path.Combine(backupPath, string.Format("{0}_Orion_{1}_kmonew.txt", DateTime.Now.ToString("yyyyMMdd-HHmmss"), id));

            try
            {
                File.Move(filename, bkupfilename);
                File.Delete(updFile);
            }
            catch (Exception ex)
            {
                Log.Error(ex, "Unable to move to backup: " + filename);
            }

            return(result);
        }
コード例 #5
0
        public static OrionResult ParseFromDatabase(string keyvaluePairs)
        {
            var result = new OrionResult();
            var tuples = keyvaluePairs.Split(';');

            foreach (var tuple in tuples)
            {
                var keyvaluePair = tuple.Split('=');
                switch (keyvaluePair[0].Trim())
                {
                case "OrionId":
                    result.OrionId = int.Parse(keyvaluePair[1].Trim());
                    break;

                case "Team":
                    result.Team = int.Parse(keyvaluePair[1].Trim());
                    break;

                case "Target":
                    result.Target = int.Parse(keyvaluePair[1].Trim());
                    break;

                case "ShooterId":
                    result.ShooterId = int.Parse(keyvaluePair[1].Trim());
                    break;

                case "Name":
                    result.Name = keyvaluePair[1].Trim();
                    break;

                case "ClubName":
                    result.ClubName = keyvaluePair[1].Trim();
                    break;

                case "Class":
                    result.Class = keyvaluePair[1].Trim();
                    break;

                case "TotalSum":
                    result.TotalSum = int.Parse(keyvaluePair[1].Trim());
                    break;

                case "AllSeries":
                    result.AllSeries = keyvaluePair[1].Trim();
                    break;
                }
            }

            return(result);
        }
コード例 #6
0
        private int GetNextOrionIdAndRangeId(OrionResult orionResult, out int rangeId)
        {
            rangeId = 0;
            var allRanges    = m_orionSetupViewModel.OrionViewModels.SelectMany(o => o.RangeViews).OrderBy(r => r.RangeId);
            var currentRange = GetRange(orionResult);

            foreach (var rangeViewModel in allRanges)
            {
                if (rangeViewModel.RangeId <= currentRange.RangeId)
                {
                    continue;
                }

                if (rangeViewModel.RangeType == RangeType.Shooting)
                {
                    rangeId = rangeViewModel.RangeId;
                    return(rangeViewModel.Parent.OrionId);
                }
            }

            ////foreach (var orionViewModel in m_orionSetupViewModel.OrionViewModels)
            ////{
            ////    if (orionResult.OrionId == orionViewModel.OrionId)
            ////    {
            ////        foreach (var rangeViewModel in orionViewModel.RangeViews)
            ////        {
            ////            if (rangeViewModel.RangeType == RangeType.Shooting && orionResult.Target < rangeViewModel.FirstTarget)
            ////            {
            ////                rangeId = rangeViewModel.RangeId;
            ////                return orionViewModel.OrionId;
            ////            }
            ////        }
            ////    }
            ////    else if (orionResult.OrionId < orionViewModel.OrionId)
            ////    {
            ////        foreach (var rangeViewModel in orionViewModel.RangeViews)
            ////        {
            ////            if (rangeViewModel.RangeType == RangeType.Shooting)
            ////            {
            ////                rangeId = rangeViewModel.RangeId;
            ////                return orionViewModel.OrionId;
            ////            }
            ////        }
            ////    }
            ////}

            return(0);
        }
コード例 #7
0
        private static ResultType GetResultType(OrionResult result, OrionViewModel orionViewModel)
        {
            if (orionViewModel == null)
            {
                return(ResultType.Felt);
            }

            foreach (var rangeViewModel in orionViewModel.RangeViews)
            {
                if (rangeViewModel.FirstTarget >= result.Target && rangeViewModel.LastTarget <= result.Target)
                {
                    return(rangeViewModel.ResultType);
                }
            }

            return(ResultType.Felt);
        }
コード例 #8
0
        public static OrionResult ParseFromDatabase(string keyvaluePairs)
        {
            var result = new OrionResult();
            var tuples = keyvaluePairs.Split(';');

            foreach (var tuple in tuples)
            {
                var keyvaluePair = tuple.Split('=');
                switch (keyvaluePair[0].Trim())
                {
                case "OrionId":
                    result.OrionId = int.Parse(keyvaluePair[1].Trim());
                    break;

                case "Team":
                    result.Team = int.Parse(keyvaluePair[1].Trim());
                    break;

                case "Target":
                    result.Target = int.Parse(keyvaluePair[1].Trim());
                    break;

                case "ShooterId":
                    result.ShooterId = int.Parse(keyvaluePair[1].Trim());
                    break;

                case "Name":
                    result.Name = keyvaluePair[1].Trim();
                    break;

                case "ClubName":
                    result.ClubName = keyvaluePair[1].Trim();
                    break;

                case "Class":
                    result.Class = keyvaluePair[1].Trim();
                    break;

                case "TotalSum":
                    result.TotalSum = int.Parse(keyvaluePair[1].Trim());
                    break;

                case "AllSeries":
                    result.AllSeries = keyvaluePair[1].Trim();
                    break;

                case "CountingShoots":
                    result.CountingShots = 0;
                    var val = keyvaluePair[1].Trim();
                    if (!string.IsNullOrEmpty(val))
                    {
                        int counting;
                        if (int.TryParse(val, out counting))
                        {
                            result.CountingShots = counting;
                        }
                    }

                    break;
                }
            }

            return(result);
        }