void AddingBonusesStackVariousTest()
        {
            Bonus           bonus1          = new Bonus(12, sourceFactory.Create("name", true));
            Bonus           bonus2          = new Bonus(4, sourceFactory.Create("otherName", false));
            BonusCollection bonusCollection = new BonusCollection();

            bonusCollection.Add(bonus1);
            bonusCollection.Add(bonus2);
            Assert.Equal(bonus1.NumericValue + bonus2.NumericValue, bonusCollection.Sum());
        }
Exemple #2
0
        // GET: api/News/5
        public List <News> Get(int id)
        {
            BaseSource newsSource;
            NewsHost   newsPublisher = new NewsHost();

            // This code can be changed lateron to Factory patten inside Business
            if (id == 0)
            {
                newsSource          = SourceFactory.Create("Internal");
                newsSource.SourceId = 0;
                newsSource.News     = newsManager.GetNewsByCategory((short)NewsCategoryType.Travel).ToList(); // Added filter to see diff results
                return(newsPublisher.Publish(newsSource));
            }
            else if (id == 1)
            {
                newsSource          = SourceFactory.Create("Google");
                newsSource.SourceId = 1;
                newsSource.News     = newsManager.GetNewsByCategory((short)NewsCategoryType.Sports).ToList(); // Added filter to see diff results
                return(newsPublisher.Publish(newsSource));
            }
            else if (id == 2)
            {
                newsSource          = SourceFactory.Create("PTI");
                newsSource.SourceId = 2;
                newsSource.News     = newsManager.GetNewsByCategory((short)NewsCategoryType.Political).ToList(); // Added filter to see diff results
                return(newsPublisher.Publish(newsSource));
            }
            return(null);
        }
Exemple #3
0
        public override Stream Generate(JToken jReport, Stream bookStream, JToken reportContext)
        {
            var dataSource = dataSourceFactory.Create(jReport["dataSources"].FirstOrDefault(), reportContext);

            var variables = this.GetVariables(jReport["variables"], reportContext);

            var report     = new XmlSerializer(typeof(Report)).Deserialize(bookStream) as Report;
            var reportDesc = report.DeserializeReportDesc();
            var dataSets   = reportDesc.DATASET
                             .ToDictionary(x => x.NAME, x => new SqlQueryDataReader(dataSource, x.SQL, variables, timeout) as IDataReader);

            var datas = dataSets
                        .ToDictionary(x => x.Key.ToLower(), x => x.Value.GetData().ToListDictionaryAdapt());

            var reportBook = report.DeserializeReportTemplate();

            FillBookData(variables, datas, reportBook, reportDesc.DATASET);

            var reportStream = new MemoryStream();

            reportBook.SaveAs(reportStream);
            reportStream.Position = 0;

            return(reportStream);
        }
Exemple #4
0
        public List <News> Publish(BaseSource source)
        {
            List <News> pubNews     = new List <News>();
            NewsManager newsManager = new NewsManager();
            BaseSource  adSource    = SourceFactory.Create("Advert");

            // News = 6 or Hih Prio 8
            int pCount = 8;
            int nCount = 6, aCount = 2;
            int hCount = source.News.Where(h => h.Priority == NewsPriority.High).Count();

            if (hCount > 6 && hCount == 8)
            {
                if (source.News.Count > 6)
                {
                    nCount = 8;
                }
            }
            else if (hCount > 6 && hCount < 8)
            {
                if (source.News.Count > 6)
                {
                    nCount = 7;
                }
            }
            List <News> news = source.News.Take(nCount).ToList();

            foreach (var item in news)
            {
                pubNews.Add(item);
            }

            // Advertisements = 2
            if (nCount != 8)
            {
                adSource.News = newsManager.GetNewsByCategory((short)NewsCategoryType.Advertisements).ToList(); // Added filter to see diff results
                aCount        = pCount - nCount;
                List <News> advt = adSource.News.Take(aCount).ToList();
                foreach (var item in advt)
                {
                    pubNews.Add(item);
                }
            }

            bool success = source.Subscribe(pubNews);

            if (success)
            {
                return(source.GetNews());
            }
            return(null);
        }
        public ActionResult <IEnumerable <object> > GetSelectData(
            [FromForm(Name = "dataSource")] string dataSourceString,
            [FromForm(Name = "context")] string contextJson,
            [FromForm(Name = "query")] string query)
        {
            var dataSource    = JToken.Parse(dataSourceString);
            var reportContext = JToken.Parse(contextJson);

            var source = sourceFactory.Create(dataSource, reportContext);

            var dataReader = dataReaderFactory.CreateSqlQueryDataSet(query, source);

            return(dataReader.GetData().ToListDictionaryAdapt());
        }
Exemple #6
0
        public override Stream Generate(JToken jReport, Stream bookStream, JToken reportContext)
        {
            var dataSources = jReport["dataSources"]
                              .ToDictionary(x => x["name"].ToString(), x => dataSourceFactory.Create(x, reportContext));

            var variables = this.GetVariables(jReport["variables"], reportContext);

            var dataSets = jReport["dataSets"]
                           .ToDictionary(x => x["name"].ToString(), x => dataSetFactory.Create(x, dataSources, variables));

            var datas = dataSets
                        .ToDictionary(x => x.Key.ToLower(), x => x.Value.GetData().ToListDictionaryAdapt());

            return(this.GenerateClosedXmlReport(bookStream, datas));
        }
Exemple #7
0
        /// <summary>Создаёт экземпляр <see cref="IWorker" /> для обработки указанных потоков</summary>
        /// <param name="Input">Входой поток</param>
        /// <param name="Output">Выходной поток</param>
        public IWorker BuildFor(Stream Input, Stream Output)
        {
            return(DegreeOfParallelism switch
            {
                1 => new SingleThreadWorker(
                    new FileProcessWorkerRepetitiveRoutine(
                        SourceFactory.Create(Input),
                        SinkFactory.Create(Output),
                        Processor)),

                _ => new MultiThreadWorker(
                    new FileProcessWorkerRepetitiveRoutine(
                        SourceFactory.Create(Input).Locked(),
                        SinkFactory.Create(Output).Locked(),
                        Processor),
                    DegreeOfParallelism)
            });
Exemple #8
0
        public Main()
        {
            _settingsManager = Factories.CreateSettingsManager();
            this.seconds     = _settingsManager.GetSettingValue(AppSettingsKey.Seconds).ToInt();


            this._timeManager = Factories.CreateTimeManager(_settingsManager.GetSettingValue(AppSettingsKey.Open),
                                                            _settingsManager.GetSettingValue(AppSettingsKey.Close));

            _logger = LoggerFactory.Create(_settingsManager.LogFilePath);


            string siteUrl       = _settingsManager.GetSettingValue(AppSettingsKey.SiteUrl);
            string adminUser     = _settingsManager.GetSettingValue(AppSettingsKey.Admin);
            string adminPassword = _settingsManager.GetSettingValue(AppSettingsKey.AdminPassword);
            string dbKey         = _settingsManager.GetSettingValue(AppSettingsKey.DBKey);

            this._apiService = ServiceFactory.CreateApiService(siteUrl, adminUser, adminPassword, dbKey);

            string hubUrl   = _settingsManager.GetSettingValue(AppSettingsKey.HubUrl);
            string quoteKey = _settingsManager.GetSettingValue(AppSettingsKey.QuoteKey);

            _hubManager = Factories.CreateHubManager(hubUrl, quoteKey);


            // init source
            string provider = _settingsManager.GetSettingValue(AppSettingsKey.Provider);
            string sid      = _settingsManager.GetSettingValue(AppSettingsKey.SID);
            string password = _settingsManager.GetSettingValue(AppSettingsKey.Password);

            this._source = SourceFactory.Create(provider, sid, password);
            this._source.ExceptionOccured  += Source_ExceptionOccured;
            this._source.ActionExecuted    += Source_ActionExecuted;
            this._source.NotifyStockTick   += Source_NotifyStockTick;
            this._source.NotifyFuturesTick += Source_NotifyFuturesTick;

            Thread.Sleep(1500);


            InitializeComponent();
        }