Ejemplo n.º 1
0
        private void PaintTvPercent(TreeNode treeNode)
        {
            if (treeNode.Nodes.Count != 0)
            {
                Dictionary <decimal, decimal> dictionary = new Dictionary <decimal, decimal>();
                //child
                string query = string.Format(@"select cl.term as term, fd.val as val
                                    from curve_list cl join curves c on cl.cur_id = c.cur_id
                                    join ffd ffd on ffd.fi_id = cl.fi_id
                                    join fisd_dq fd on fd.fisd_id = ffd.fisd_id
                                    where c.ident = '{0}'
                                    and ffd.fif_id = 3
                                    and dat = to_date('{1}', 'dd.mm.yyyy')",
                                             treeNode.Text,
                                             dtpActualDate.Value.ToString("dd.MM.yyyy"));
                using (NpgsqlConnection connection = new NpgsqlConnection(_connection))
                {
                    connection.Open();
                    using (NpgsqlCommand command = new NpgsqlCommand())
                    {
                        command.Connection  = connection;
                        command.CommandText = query;
                        using (NpgsqlDataReader dataReader = command.ExecuteReader())
                        {
                            while (dataReader.Read())
                            {
                                decimal term = (decimal)dataReader["term"];
                                decimal val  = (decimal)dataReader["val"];
                                dictionary.Add(term, val);
                            }
                        }
                    }
                }

                if (dictionary.Count != 0)
                {
                    var t = new PaintWindow(dictionary)
                    {
                        Text = treeNode.Text
                    };
                    t.ShowDialog();
                }
            }
            else
            {
                PortfolioPosition position   = new BalancePosition(treeNode.Text, FinType.PercentCurve);
                TimeSeries        timeSeries = _provider.GetTimeSeries(position, TimeSeriesAttribute.Close);
                if (timeSeries != null || timeSeries.Series.Count != 0)
                {
                    var t = new PaintWindow(timeSeries.Series.ToDictionary(z => z.Key, z => z.Value));
                    t.ShowDialog();
                }
            }
        }
        public List <PortfolioPosition> GetAllPositions()
        {
            string query =
                @"select fi.ident as ident, ft.ident as finType from fin_instrument fi
                    join fin_type ft on fi.ft_id = ft.ft_id";

            var result = _dbLink.GetConnection().Query <finInstrument>(query);
            List <PortfolioPosition> positions = new List <PortfolioPosition>(result.Count());

            foreach (var x in result)
            {
                FinType         finType  = (FinType)_mapping.Get <FinType>(x.finType, FinType.Default);
                BalancePosition position = new BalancePosition(x.ident, finType);
                positions.Add(position);
            }
            return(positions);

            throw new NotImplementedException();
        }
        public TimeSeries GetTimeSeries(Enum enumeration, TimeSeriesAttribute attribute)
        {
            if (!_mapping.FindAI(enumeration))
            {
                return(null);
            }

            string          ident    = _mapping.GetAI(enumeration);
            BalancePosition position = new BalancePosition(ident, FinType.FxRate);

            KeyValuePair <PortfolioPosition, Enum> key =
                new KeyValuePair <PortfolioPosition, Enum>(position, attribute);

            if (_cache.ContainsKey(key))
            {
                return((TimeSeries)_cache[key]);
            }

            TimeSeries timeSeries = GetTimeSeries(position, attribute);

            _cache.Add(key, timeSeries);
            return(timeSeries);
        }