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); } } } }
private void DownloadCurrencyMetadata(BCCContext context) { foreach (string bankName in Banks.Keys) { DownloadBankCurrencyMetadata(context, bankName); } }
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(); }
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 }
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(); } }
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 } }
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(); }
public PresentationManger(BCCContext context) { this._context = context; }