Exemplo n.º 1
0
        public async Task <List <FundInfo> > GetAllFunds()
        {
            List <FundInfo> fundInfo = new List <FundInfo>();

            using (var context = new InvestmentTrackerDbContext())
            {
                var                 funds             = context.FundPurchased.ToList();
                var                 fundgroups        = funds.GroupBy(x => x.SchemeCode);
                MutualFundProxy     proxy             = new MutualFundProxy();
                CurrencyConverter   currencyConverter = new CurrencyConverter();
                FundPriceCalculator calculator        = new FundPriceCalculator();
                foreach (var group in fundgroups)
                {
                    var latestPrice = await FetchLatestNavPrice(group.Key);

                    foreach (var fund in group)
                    {
                        var info = calculator.Calculate(latestPrice, fund);
                        info.IsReinvestedAmount  = fund.IsReinvestedAmount ?? false;
                        info.AmountInvestedInNZD = await currencyConverter.ConvertAsync(Currency.INR, Currency.NZD, info.AmountInvested);

                        info.CurrentValueInNZD = await currencyConverter.ConvertAsync(Currency.INR, Currency.NZD, info.CurrentValue);

                        fundInfo.Add(info);
                    }
                }
            }
            return(fundInfo);
        }
Exemplo n.º 2
0
        public async Task Add(FundPurchased fund)
        {
            using (var context = new InvestmentTrackerDbContext())
            {
                MutualFundProxy proxy = new MutualFundProxy();
                fund.NavPurchasePrice = await proxy.GetPrice(fund.SchemeCode, fund.PurchaseDate);

                context.FundPurchased.Add(fund);
                context.SaveChanges();
            }
        }
Exemplo n.º 3
0
 private LatestNavPrice FetchCachedPrice(string schemecode)
 {
     using (var context = new InvestmentTrackerDbContext())
     {
         var cachedPrice = context.LatestNavPrice.Where(x => x.SchemeCode == schemecode)
                           .SingleOrDefault();
         return((cachedPrice != null &&
                 (cachedPrice.Date.Date == DateTime.Now.GetIndianDateTime().Date ||
                  cachedPrice.LastFetch.Date == DateTime.Now.GetIndianDateTime().Date)) ?
                cachedPrice : null);
     }
 }
Exemplo n.º 4
0
 private void UpdateCache(string schemecode, NavHistory latestNav)
 {
     using (var context = new InvestmentTrackerDbContext())
     {
         var latest = context.LatestNavPrice.Where(x => x.SchemeCode == schemecode).SingleOrDefault();
         if (latest == null)
         {
             context.LatestNavPrice.Add(new LatestNavPrice
             {
                 SchemeCode = schemecode,
                 LastFetch  = DateTime.Now.GetIndianDateTime().Date,
                 Date       = latestNav.Date,
                 NavPrice   = latestNav.nav
             });
         }
         else
         {
             latest.LastFetch = DateTime.Now.GetIndianDateTime();
             latest.Date      = latestNav.Date;
             latest.NavPrice  = latestNav.nav;
         }
         context.SaveChanges();
     }
 }