Exemplo n.º 1
0
 public PathRequest(IPathRequester pathRequester, PathValues pathValues, Func <Vector2?> destinationCreation, Action <bool> pathCompleteCallback)
 {
     DestinationCreation  = destinationCreation;
     PathValues           = pathValues;
     PathCompleteCallback = pathCompleteCallback;
     PathRequester        = pathRequester;
 }
Exemplo n.º 2
0
 public PathRequest(IPathRequester pathRequester, PathValues pathValues, Func <Vector2[]> pathCreation, Action <bool> pathCompleteCallback)
 {
     PathCreation         = pathCreation;
     PathValues           = pathValues;
     PathRequester        = pathRequester;
     PathCompleteCallback = pathCompleteCallback;
 }
Exemplo n.º 3
0
 public UnitEventSpecificMovements(IUnitEnemy unitEnemy)
 {
     _unitEnemy      = unitEnemy;
     Mover           = unitEnemy.Transform;
     _player         = Object.FindObjectOfType <Player>();
     _fearPathValues = new PathValues(2f, 0.25f, 0.4f, PathType.EventBased);
     _fearTimer      = _fearCoolDownTime;
 }
Exemplo n.º 4
0
    private void Start()
    {
        Mover           = GetComponent <GruntEnemyUnit>().transform;
        _spriteRenderer = GetComponent <SpriteRenderer>();
        _defaultColor   = _spriteRenderer.color;
        _player         = FindObjectOfType <Player>();

        _pathValues = new PathValues(_dashAttackSpeed, 0f, _waitTimeAfterDash, PathType.Attack);
    }
    public UnitWayPointMover(IUnitEnemy enemyUnit)
    {
        _enemyUnit = enemyUnit;
        Mover      = enemyUnit.Transform;

        _enemyUnit.KillHandler.OnDeath += () =>
        {
            enemyUnit.UnitManager.TurnInRingPosition(_currentWayPoint as RingPosition);
        };

        _ringPathValues  = new PathValues(4, .1f, 1f, PathType.Ring);
        _spawnPathValues = new PathValues(3.5f, 0f, 0f, PathType.Spawn);
    }
        public void Post(PathValues pathValues)
        {
            document = new PdfDocument();
            try
            {
                logger.Trace($"start processing file:{pathValues.Path} at {DateTime.Now.ToString("yyyy/MM/dd-hh:mm:ss")}");
                var fileName = Path.GetFileName(pathValues.Path);

                helper        = new ApplicationHelper();
                verizonReader = new VerizonReader(document, pathValues.Path);
                FileDto          file    = new FileDto();
                HeaderDto        header  = new HeaderDto();
                List <DetailDto> details = new List <DetailDto>();
                var preBuildText         = helper.Prebuild(document, pathValues.Path);
                if (preBuildText.Any())
                {
                    header = verizonReader.GetHeaderValues(preBuildText);
                    file   = verizonReader.GetFileValues(fileName);
                    var detailList = helper.ReadDetails(document, pathValues);
                    details = verizonReader.GetDetailValues(detailList, document, pathValues.Path);
                }

                verizonReader.PlainTextConstructor(file, header, details, pathValues.Path, pathValues.OutputPath, pathValues.ProcessedFilesPath, pathValues.FailedFiles);
                logger.Trace($"finished processing file:{pathValues.Path} at {DateTime.Now.ToString("yyyy/MM/dd-hh:mm:ss")}");
            }
            catch (Exception ex)
            {
                document.Close();
                var fileName = Path.GetFileName(pathValues.Path);

                if (ex.Message == Constants.ErrorMessage1 || ex.Message == Constants.ErrorMessage2 || ex.Message == Constants.ErrorMessage3)
                {
                    System.IO.File.Move(pathValues.Path, $@"{pathValues.CorruptedFiles}\{fileName}", true);
                    logger.Error($"{ex.Message} in file {pathValues.Path} \\n\\n {ex.StackTrace}");
                }
                else
                {
                    System.IO.File.Move(pathValues.Path, $@"{pathValues.FailedFiles}\{fileName}", true);
                    logger.Error($"{ex.Message} in file {pathValues.Path} \\n\\n {ex.StackTrace}");
                }
            }
        }
        public List <List <string> > ReadDetails(PdfDocument document, PathValues pathValues)
        {
            int                   lastDetailPage = 0;
            int                   errorCount     = 0;
            List <string>         buggedStrings  = new List <string>();
            List <List <string> > detailList     = new List <List <string> >();
            List <string>         pageList       = new List <string>();
            PdfPageCollection     pages;

            lock (this)
            {
                document.LoadFromFile(pathValues.Path);
                pages = document.Pages;
            }

            //this will send the file to corrupt folder if the file has issues
            var lastPageChecker = pages[1].ExtractText();
            var lastPageRegex   = new Regex(Constants.LastPageRegex).Match(lastPageChecker);

            if (lastPageRegex.Success)
            {
                var fullPage    = lastPageRegex.Value;
                var pageSplit   = fullPage.Split(" ");
                var lastPage    = pageSplit[2];
                var pageChecker = pages[Convert.ToInt32(lastPage) - 1].ExtractText();
            }



            ///Put every page in a list to be able to search certain values
            for (int page = 0; page < document.Pages.Count; page++)
            {
                var          text    = pages[page].ExtractText().Remove(0, 70);
                RegexOptions options = RegexOptions.None;
                Regex        regex   = new Regex("[ ]{2,}", options);
                text = regex.Replace(text, "|");
                pageList.Add(text);


                if (text.Contains("Total Current Charges") && text.Contains("|Charges by Cost Center|Number|Charges|Charges|Charges|Credits|and Fees|(includes Tax)|Charges|Usage|Usage|Usage|Roaming|Roaming|Roaming"))
                {
                    lastDetailPage = page;
                    break;
                }
            }

            //var text = pages[300].ExtractText().Remove(0, 70);

            //RegexOptions options = RegexOptions.None;
            //Regex regex = new Regex("[ ]{2,}", options);
            //text = regex.Replace(text, "|");
            //pageList.Add(text);

            //detailList.Add(DetailPageReader(document, 300));


            foreach (var page in pageList)
            {
                if (page.Contains(Constants.BreakdownOfCharges))
                {
                    var splittedPage = page.Split("\n\r".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToArray();
                    var index        = GetBreakdownOfChargesArrayPosition(splittedPage);
                    var lineRegex    = new Regex(@"(pg\s\d+)");

                    for (int line = index; line <= splittedPage.Length - 1; line++)
                    {
                        var indexValue = splittedPage[line];
                        if (lineRegex.IsMatch(indexValue) && !indexValue.Contains("Account Charges & Credits"))
                        {
                            var indexRegex = new Regex(@"\d+").Match(lineRegex.Match(indexValue).Value);
                            if (indexRegex.Success)
                            {
                                detailList.Add(DetailPageReader(document, Convert.ToInt32(indexRegex.Value)));
                            }
                        }
                        else if (indexValue.Contains("Total Current Charges"))
                        {
                            break;
                        }
                    }
                }

                if (page.Contains("|Overage Details") || page.Contains("|Overage Details|Overage Details, Continued"))
                {
                    var splittedPage = page.Split("\n\r".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList();
                    detailList.Add(splittedPage);
                }

                if (page.Contains(Constants.OverviewM2M))//Overview of Machine to Machine Activity
                {
                    var splittedPage = page.Split("\n\r".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList();
                    detailList.Add(splittedPage);
                }

                //
                if (!page.Contains(Constants.QuickBillSummary) && (page.Contains(Constants.AccountMonthlyCharges) || page.Contains(Constants.AccountChargesAndCreditsContinue) ||
                                                                   page.Contains(Constants.AccountChargesAndCredits) || page.Contains(Constants.PaymentsAdjustments) || page.Contains(Constants.PaymentsAdjustmentsContinue) ||
                                                                   page.Contains(Constants.AdjustmentsContinued) || page.Contains(Constants.Adjustments) && page.Contains(Constants.TotalAdjustments)))//Overview of Machine to Machine Activity
                {
                    var splittedPage = page.Split("\n\r".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList();
                    detailList.Add(splittedPage);
                }

                ///Realize if the page is a detail page or not
                if ((page.Contains(Constants.OverviewOfLines) || page.Contains(Constants.OverviewOfVoice)) && !page.Contains(Constants.BreakdownOfCharges))
                {
                    var splittedPage = page.Split("\n\r".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToArray();
                    var index        = GetDetailsArrayPosition(splittedPage);
                    var lineRegex    = new Regex(Constants.DetailsRegex);

                    for (int line = index; line <= splittedPage.Length - 1; line++)
                    {
                        //validates if the line is a detail or a cost center
                        if (splittedPage[line].Split('|').Length > 2)
                        {
                            var indexValue = splittedPage[line];
                            if (lineRegex.IsMatch(indexValue))
                            {
                                var indexRegex = new Regex(Constants.IndexRegex2).Match(indexValue);
                                //TODO: some lines are bugged and doesn't contains the "|" before the page number so i have to ignore them until solved
                                if (indexRegex.Success)//if (int.TryParse(splittedPage[line].Split('|')[2], out int n))
                                {
                                    var indexGroup = indexRegex.Groups;
                                    if (!string.IsNullOrEmpty(indexGroup[5].ToString()))
                                    {
                                        previousPage = Convert.ToInt32(Convert.ToInt64(indexGroup[5].ToString()) > document.Pages.Count ? indexGroup[5].ToString().Substring(indexGroup[5].ToString().Length - previousPage.ToString().Length) : indexGroup[5].ToString());
                                        if (previousPage != 0)
                                        {
                                            detailList.Add(DetailPageReader(document, previousPage));
                                        }
                                    }
                                    else
                                    {
                                        var valueRegex = new Regex(Constants.IndexRegex3).Match(indexGroup[2].ToString());
                                        if (valueRegex.Success)
                                        {
                                            if (previousPage < 1)
                                            {
                                                var fix      = splittedPage[line + 1];
                                                var fixRegex = new Regex(Constants.IndexRegex2).Match(fix);
                                                var fixGroup = fixRegex.Groups;

                                                if (!string.IsNullOrEmpty(fixGroup[5].ToString()))
                                                {
                                                    previousPage = Convert.ToInt32(Convert.ToInt64(valueRegex.Value) > document.Pages.Count ? valueRegex.Value.Substring(valueRegex.Value.Length - fixGroup[5].ToString().Length) : valueRegex.Value);
                                                }
                                            }
                                            else
                                            {
                                                previousPage = Convert.ToInt32(Convert.ToInt64(valueRegex.Value) > Convert.ToInt64(document.Pages.Count) ? previousPageCheck(previousPage) ? valueRegex.Value.Substring(valueRegex.Value.ToString().Length - previousPage.ToString().Length - 1) : valueRegex.Value.Substring(valueRegex.Value.ToString().Length - previousPage.ToString().Length) : valueRegex.Value);
                                            }

                                            if (previousPage != 0)
                                            {
                                                detailList.Add(DetailPageReader(document, previousPage));
                                            }
                                        }
                                        else
                                        {
                                            var fileName = Path.GetFileName(pathValues.Path);
                                            //System.IO.File.Move(pathValues.Path, $@"{pathValues.FailedFiles}\{fileName}");
                                            logger.Error("File index extraction failed");
                                            //throw new InvalidOperationException($"Error in {fileName} index extraction");
                                        }
                                    }
                                }
                                else
                                {
                                    var fileName = Path.GetFileName(pathValues.Path);
                                    //System.IO.File.Move(pathValues.Path, $@"{pathValues.FailedFiles}\{fileName}");
                                    logger.Error("File index extraction failed");
                                    errorCount++;
                                    buggedStrings.Add(splittedPage[line]);
                                }
                            }
                        }
                    }
                }
            }

            return(detailList);
        }
Exemplo n.º 8
0
        private static async Task QueueHandlerAsync()
        {
            bool          run      = true;
            int           init     = 0;
            List <string> nameList = new List <string>();

            AppDomain.CurrentDomain.DomainUnload += (s, e) =>
            {
                run = false;
                fileNames.Enqueue("stop");
            };
            while (run)
            {
                string filename;
                if (fileNames.TryDequeue(out filename) && run)
                {
                    if (init == 0)
                    {
                        init++;
                    }
                    var info = new FileInfo(filename);
                    if (info.Extension.ToLower() == ".pdf")
                    {
                        while (true)
                        {
                            if (!threadOne)
                            {
                                string threadNumber = "";
                                var    url          = "";
                                //if (!threadOne)
                                //{
                                //    threadNumber = "one";
                                //    url = "http://localhost/ATTPdfReaderOne/api/pdfreader";
                                //}
                                //else if (!threadTwo)
                                //{
                                //    threadNumber = "two";
                                //    url = "http://localhost/ATTPdfReaderTwo/api/pdfreader";
                                //}
                                //else
                                //{
                                //    threadNumber = "three";
                                //    url = "http://localhost/PdfReaderThree/api/pdfreader";
                                //}

                                threadNumber = "one";
                                url          = "http://localhost/TrialATTPdfReader/api/pdfreader";

                                var pathValues = new PathValues()
                                {
                                    Path = filename, OutputPath = "D:\\PdfReader\\Trial\\ATT\\output", ProcessedFilesPath = "D:\\PdfReader\\Trial\\ATT\\archive", FailedFiles = "D:\\PdfReader\\Trial\\ATT\\error", CorruptFiles = "D:\\PdfReader\\Trial\\ATT\\corrupt"
                                };
                                var jsonParams  = JsonConvert.SerializeObject(pathValues);
                                var contentData = new StringContent(jsonParams, System.Text.Encoding.UTF8, "application/json");
                                WebApiPostCallAsync(filename, processCount + "Thread", url, jsonParams, threadNumber);

                                break;
                            }
                        }
                    }
                }
            }
        }