Пример #1
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);
        }
Пример #2
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);
        }
Пример #3
0
        public static OrionResult ParseFromOrion(string orionResultLine, OrionViewModel orionViewModel)
        {
            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].Trim(),
                ClubName  = tokens[5].Trim(),
                Class     = tokens[6].Trim(),
                TotalSum  = TryGetIntFromToken(tokens[7], "TotalSum")
            };

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

                for (int c = 8; c < tokens.Length; c++)
                {
                    if (tokens[c].Contains("#"))
                    {
                        ResultType resultType = GetResultType(result, orionViewModel);
                        result.Series.Add(ParsePegasus(tokens[c], resultType));
                    }
                    else
                    {
                        result.Series.Add(tokens[c]);
                    }
                }
            }

            result.AllSeries = string.Join(";", result.Series);
            return(result);
        }
Пример #4
0
        ////public static int GetNextOrionAndRange(OrionSetupViewModel orionSetup, OrionResult orionResult, out int nextRangeId)
        ////{
        ////    nextRangeId = 0;
        ////    var currentRangeId = GetRangeIdFromResult(orionSetup, orionResult);

        ////    foreach (var orionViewModel in orionSetup.OrionViewModels)
        ////    {
        ////        if (orionViewModel.OrionId < orionResult.OrionId)
        ////        {
        ////            continue;
        ////        }

        ////        if (orionViewModel.OrionId == orionResult.OrionId)
        ////        {
        ////            foreach (var rangeViewModel in orionViewModel.RangeViews)
        ////            {
        ////                if (rangeViewModel.RangeId > currentRangeId && rangeViewModel.RangeType == RangeType.Shooting)
        ////                {
        ////                    return rangeViewModel.RangeId;
        ////                }
        ////            }
        ////        }

        ////        if (orionViewModel.OrionId > orionResult.OrionId)
        ////        {
        ////            foreach (var rangeViewModel in orionViewModel.RangeViews)
        ////            {
        ////                if (rangeViewModel.RangeType == RangeType.Shooting)
        ////                {
        ////                    nextRangeId = rangeViewModel.RangeId;
        ////                    return orionViewModel.OrionId;
        ////                }
        ////            }
        ////        }
        ////    }

        ////    return 0;
        ////}

        public static OrionResult GetResultForThisRange(System.Collections.Generic.IEnumerable <OrionResult> allResultsForShooter, OrionViewModel orion, RangeViewModel rangeViewModel)
        {
            var resultForThisOrion = allResultsForShooter.Where(r => r.OrionId == orion.OrionId);

            foreach (var orionResult in resultForThisOrion)
            {
                if (orionResult.Target >= rangeViewModel.FirstTarget && orionResult.Target <= rangeViewModel.LastTarget)
                {
                    return(orionResult);
                }
            }

            return(null);
        }