示例#1
0
        private void ConnectorMaintainance(BCCContext context, Assembly assembly)
        {
            List <BankConnector> connectors = context.BankConnector.ToList();

            foreach (BankConnector connector in connectors)
            {// kontrola nastaveni
                if (Banks.Keys.Contains(connector.BankShortName))
                {
                    if (!connector.Enabled.HasValue || !connector.Enabled.Value)
                    {
                        //removes bank from active banks
                        Banks.Remove(connector.BankShortName);
                    }
                }
                else
                {
                    if (connector.Enabled.HasValue && connector.Enabled.Value)
                    {   //add bank to active banks
                        Type type = assembly.GetType(connector.DllName);
                        IExchangeRateBank bank = (IExchangeRateBank)Activator.CreateInstance(type);
                        Banks.Add(connector.BankShortName, bank);
                    }
                }
            }
        }
示例#2
0
 private void DownloadCurrencyMetadata(BCCContext context)
 {
     foreach (string bankName in Banks.Keys)
     {
         DownloadBankCurrencyMetadata(context, bankName);
     }
 }
示例#3
0
        private void SaveERTciket(BCCContext context, ExchangeRateTicket eRTicket, string bankName)
        {
            if (eRTicket == null || bankName == null)
            {
                throw new BCCERMNullReference();
            }

            Ticket ticket = context.Ticket.Where(x => x.Date == eRTicket.TicketDate && x.BankShortName == bankName).FirstOrDefault();

            if (ticket == null)
            {
                ticket = new Ticket()
                {
                    BankShortName = bankName,
                    Date          = eRTicket.TicketDate
                };
                context.Ticket.Add(ticket);
                context.SaveChanges();
            }
            ICurrencyData[] eRData = eRTicket.GetExchangeRateData();
            foreach (ICurrencyData data in eRData)
            {
                Currency currency = new Currency();
                currency.TicketId = ticket.Id;
                currency.IsoName  = data.ISOName;
                currency.Buy      = data.Buy;
                currency.Sell     = data.Sell;
                if (context.Currency.FirstOrDefault(x => x.IsoName == currency.IsoName && x.TicketId == currency.TicketId) == null)
                {
                    context.Add(currency);
                }
            }
            context.SaveChanges();
        }
示例#4
0
        public BankManager(IServiceProvider serviceProvider)
        {
            _context   = new BCCContext();
            this.Banks = new ConcurrentDictionary <string, IExchangeRateBank>(BANKS_CONCURENCY_LEVEL, INITIAL_BANKS_SIZE);


            Assembly assembly = Assembly.GetExecutingAssembly();

            ConnectorMaintainance(_context, assembly);


            //tries to populate database with 20 exchange rate tickets for each bank
        }
示例#5
0
        private void DownloadBankCurrencyMetadata(BCCContext context, string bankName)
        {
            IExchangeRateBank bank;

            if (Banks.TryGetValue(bankName, out bank))
            {
                List <ICurrencyMetada> metaData = bank.DownloadCurrencyMetada();
                foreach (ICurrencyData meta in metaData)
                {
                    SaveBankCurrencyMetada(context, meta);
                }
                context.SaveChanges();
            }
        }
示例#6
0
 private void DownloadTodaysBankTicket(string bankName, BCCContext context)
 {
     try
     {
         Ticket ticket = context.Ticket.FirstOrDefault(x => x.BankShortName == bankName && x.Date.Day == DateTime.Now.Day && x.Date.Month == DateTime.Now.Month && x.Date.Year == DateTime.Now.Year);
         if (ticket == null)
         {
             IExchangeRateBank bank;
             if (Banks.TryGetValue(bankName, out bank))
             {
                 if (bank.TodaysTicketIsAvailable())
                 {
                     ExchangeRateTicket erTicket = bank.DownloadTodaysTicket();
                     SaveERTciket(context, erTicket, bankName);
                 }
             }
         }
     }
     catch (BCCCoreException ex)
     {
         //TODO: MM add logging
     }
 }
示例#7
0
        private void SaveBankCurrencyMetada(BCCContext context, ICurrencyMetada metaData)
        {
            CurrencyMetadata ret = context.CurrencyMetadata.Where(x => x.IsoName == metaData.ISOName).FirstOrDefault();

            if (ret == null)
            {
                if (string.IsNullOrWhiteSpace(metaData.ISOName))
                {
                    return;
                }
                if (metaData.Quantity < 1)
                {
                    return;
                }
                ret = new CurrencyMetadata()
                {
                    IsoName  = metaData.ISOName,
                    Name     = metaData.Name,
                    Quantity = metaData.Quantity,
                    Country  = metaData.Country
                };
                context.CurrencyMetadata.Add(ret);
                context.SaveChanges();
            }
            else
            {
                if (string.IsNullOrWhiteSpace(ret.Name) && !string.IsNullOrWhiteSpace(metaData.Name))
                {
                    ret.Name = metaData.Name;
                }
                if (string.IsNullOrWhiteSpace(ret.Country) && !string.IsNullOrWhiteSpace(ret.Country))
                {
                    ret.Country = metaData.Country;
                }
            }
        }
 public ExchangeRateController(BCCContext context, IPresentationManager presentationManager)
 {
     this._context             = context;
     this._presentationManager = presentationManager;
     _version = Assembly.GetExecutingAssembly().GetName().Version.ToString();
 }
示例#9
0
 public PresentationManger(BCCContext context)
 {
     this._context = context;
 }