private void SetNoteHeader(SinacorNoteDto sn)
        {
            var noteHeaderRect = RectanglePositions.GetRectangle(NotePosition.NoteIdRectangle);

            try
            {
                int n = PdfDocument.GetNumberOfPages();
                for (int i = 1; i <= n; i++)
                {
                    PdfPage page        = PdfDocument.GetPage(i);
                    var     header      = ReaderExtensions.ExtractText(page, noteHeaderRect).FirstOrDefault();
                    var     headerItens = header.Split(' ');
                    sn.Id = headerItens[0];
                    //sn.PageNumber = int.Parse(headerItens[1]);
                    sn.Date = DateTime.Parse(headerItens[2]);
                    return;
                }


                throw new Exception("BrokerName not found");
            }
            catch (Exception)
            {
                throw;
            }
        }
        private DateTime GetNegotiationDate(PdfPage page)
        {
            var addressRect = SinacorNotePosition.GetRectangle(SinacorNotePosition.NegotiationDate);
            var ret         = ReaderExtensions.ExtractText(page, addressRect).FirstOrDefault();

            return(DateTime.ParseExact(ret, "dd/MM/yyyy", CultureInfo.InvariantCulture));
        }
        private string GetBrokerName()
        {
            var     addressRect = RectanglePositions.GetRectangle(NotePosition.BrokerNameRectangle);
            PdfPage page        = PdfDocument.GetPage(1);

            return(ReaderExtensions.ExtractText(page, addressRect).FirstOrDefault());

            throw new Exception("BrokerName not found");
        }
        private List <OperationType> ProcessOperationTypeColumn(PdfPage page)
        {
            var addressRect = SinacorNotePosition
                              .GetRectangle(SinacorNotePosition.NegotiationColumnsPosition.OperationTypeColumn);

            var operationTypeCells = ReaderExtensions.ExtractText(page, addressRect).First()
                                     .Split(Environment.NewLine.ToCharArray()).Select(x => x == "C" ? OperationType.Buy : OperationType.Sell);

            return(operationTypeCells.ToList());
        }
        private List <decimal> ProcessStockPriceColumn(PdfPage page)
        {
            var addressRect = SinacorNotePosition
                              .GetRectangle(SinacorNotePosition.NegotiationColumnsPosition.StockPriceColumn);

            var stockAmountCells = ReaderExtensions.ExtractText(page, addressRect)
                                   .First().Split(Environment.NewLine.ToCharArray()).Select(x => decimal.Parse(x));

            return(stockAmountCells.ToList());
        }
        private List <string> ProcessStockNameColumn(PdfPage page)
        {
            var addressRect = SinacorNotePosition
                              .GetRectangle(SinacorNotePosition.NegotiationColumnsPosition.StockNameColumn);

            var ret = ReaderExtensions.ExtractText(page, addressRect)
                      .First().Split(Environment.NewLine.ToCharArray());

            //Removing stock's specifications like ordinárias (ON) ou preferenciais (PN),
            //this usually occurs after two consecultive spaces after stock's name
            var stockNameCells = ret.Select(X => X.Split(new string[] { "  " }, StringSplitOptions.None)[0]).ToList();

            return(stockNameCells);
        }
        public decimal GetTotalBuys()
        {
            var financialResume = RectanglePositions.GetRectangle(NotePosition.TotalBuys);

            try
            {
                var negotiations = new List <string>();
                int n            = PdfDocument.GetNumberOfPages();
                for (int i = 1; i <= n; i++)
                {
                    PdfPage page  = PdfDocument.GetPage(i);
                    var     text  = ReaderExtensions.ExtractText(page, financialResume).FirstOrDefault();
                    var     sells = text.Split(' ');

                    return(decimal.Parse(sells[3]));
                }

                throw new Exception("TotalBuys not found");
            }
            catch (Exception)
            {
                throw new Exception("Error while parsing buys");
            }
        }
        private string GetBrokerName(PdfPage page)
        {
            var addressRect = SinacorNotePosition.GetRectangle(SinacorNotePosition.BrokerNameRectangle);

            return(ReaderExtensions.ExtractText(page, addressRect).FirstOrDefault());
        }