예제 #1
0
        protected override void ExecuteTask(VcssTaskModel vcssTask)
        {
            string username   = vcssTask.VcssTaskInfo.auth_token.Split('-')[0];
            string password   = vcssTask.VcssTaskInfo.auth_token.Split('-')[1];
            string requestURL = String.Format(vcssTask.VcssTaskInfo.url, username, ComputeHash(password));

            HttpWebRequest  request  = (HttpWebRequest)HttpWebRequest.Create(requestURL);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

            using (Stream stream = response.GetResponseStream())
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    var     strResponse = reader.ReadToEnd();
                    dynamic result      = JsonConvert.DeserializeObject <dynamic>(strResponse);
                    if (result.Estado.ToString() != "Error")
                    {
                        VcssTaskManagerService.UpdateBOLSARAuthToken(result.Resultado.ToString());
                    }
                    else
                    {
                        VcssTaskManagerService.Log(vcssTask.VcssTaskInfo.name, vcssTask.data, vcssTask.scheduled_time, "Running", strResponse, DateTime.Now);
                    }
                }
            }
        }
예제 #2
0
        public bool RunTask(VcssTaskModel vcssTask)
        {
            VcssTaskCanExecuteResult canExecute = VcssTaskCanExecuteResult.EMPTY;

            try
            {
                VcssTaskManagerService.Log(vcssTask.VcssTaskInfo.name, vcssTask.data, vcssTask.scheduled_time, "Run", "", DateTime.Now);
                canExecute = this.CanExecute(vcssTask);
                if (canExecute == VcssTaskCanExecuteResult.Execute)
                {
                    this.ExecuteTask(vcssTask);
                    this.UpdateTaskExecutedTime(vcssTask);
                    VcssTaskManagerService.DeleteTask(vcssTask);
                    return(true);
                }
                else
                {
                    VcssTaskManagerService.Log(vcssTask.VcssTaskInfo.name, vcssTask.data, vcssTask.scheduled_time, "Running", canExecute.ToString(), DateTime.Now);
                    return(false);
                }
            }
            catch (Exception ex)
            {
                VcssTaskManagerService.Log(vcssTask.VcssTaskInfo.name, "Info -> CanExecute: " + canExecute.ToString() + " -> Data: " + vcssTask.data, vcssTask.scheduled_time, "Run ERROR", ex.Message, DateTime.Now);
                return(false);
            }
        }
        protected override void ExecuteTask(VcssTaskModel vcssTask)
        {
            DateTime marketTime = DateTime.UtcNow.AddHours(vcssTask.VcssTaskInfo.Market.utc_offset);

            ReportData_Generator generator = new ReportData_Generator();

            generator.GenerateReportData(vcssTask.data);
        }
        protected override VcssTaskCanExecuteResult CanExecute(VcssTaskModel vcssTask)
        {
            DateTime marketTime = DateTime.UtcNow.AddHours(vcssTask.VcssTaskInfo.Market.utc_offset);

            if (marketTime.TimeOfDay.Hours == 5 && marketTime.DayOfWeek != DayOfWeek.Saturday && marketTime.DayOfWeek != DayOfWeek.Sunday && !HolidayService.IsHoliday(vcssTask.VcssTaskInfo.market_id.Value, marketTime))
            {
                return(VcssTaskCanExecuteResult.Execute);
            }
            return(VcssTaskCanExecuteResult.InvalidTime);
        }
 public static void DeleteTask(VcssTaskModel vcssTask)
 {
     using (ctaDBEntities entities = new ctaDBEntities())
     {
         VcssTask task = entities.VcssTasks.Where(t => t.Id == vcssTask.Id).FirstOrDefault();
         if (task != null)
         {
             entities.VcssTasks.Remove(task);
             entities.SaveChanges();
         }
     }
 }
        protected override VcssTaskCanExecuteResult CanExecute(VcssTaskModel vcssTask)
        {
            DateTime marketTime = DateTime.UtcNow.AddHours(vcssTask.VcssTaskInfo.Market.utc_offset);

            if (marketTime.DayOfYear != vcssTask.scheduled_time.DayOfYear)
            {
                return(VcssTaskCanExecuteResult.InvalidTime);
            }
            if (String.IsNullOrEmpty(vcssTask.data))
            {
                return(VcssTaskCanExecuteResult.InvalidData);
            }
            return(VcssTaskCanExecuteResult.Execute);
        }
예제 #7
0
        protected override void ExecuteTask(VcssTaskModel vcssTask)
        {
            string[] jsonData = vcssTask.data.Split('#');
            int      stockId  = int.Parse(jsonData[1]);
            List <jsonmdlEODHistorical> data = JsonConvert.DeserializeObject <List <jsonmdlEODHistorical> >(jsonData[0]);

            List <IHistoricalQuote> historicalQuotes = data.Select(h => new HistoricalQuoteEOD()
            {
                adj_close  = h.AdjustedClose,
                closing    = h.Close,
                date_round = h.Date,
                maximun    = h.High,
                minimun    = h.Low,
                opening    = h.Open,
                stock_id   = stockId,
                volume     = h.Volume
            }).ToList <IHistoricalQuote>();

            QuotesService.SaveHistoricalQuote(historicalQuotes);
        }
        protected override void ExecuteTask(VcssTaskModel vcssTask)
        {
            DateTime marketDate = DateTime.UtcNow.AddHours(vcssTask.VcssTaskInfo.Market.utc_offset).Date;
            Dictionary <string, int>  symbols = StockService.GetStocks().Where(s => s.market_id == 1 && s.type_id == 4 && s.active).ToDictionary(s => s.symbol, s => s.Id);
            List <jsonmdlBOLSARIndex> data    = JsonConvert.DeserializeObject <List <jsonmdlBOLSARIndex> >(vcssTask.data).Where(x => symbols.ContainsKey(x.Symbol)).ToList();

            //INTRADIARY DATA
            List <IRealTimeQuote> realTimeQuotes = data.Select(rt => new RealTimeQuoteBOLSAR()
            {
                ask              = 0,
                ask_size         = 0,
                bid              = 0,
                bid_size         = 0,
                change           = rt.Tendencia,
                change_percent   = rt.Variacion,
                datetime         = this.GetIntradiaryDateTime(marketDate, rt.strHora),
                last_trade_date  = DateTime.Now,
                last_trade_price = rt.Ultimo,
                last_trade_size  = 0,
                last_trade_time  = "",
                opening          = rt.Ultimo,
                prev_closing     = rt.Apertura,
                stock_id         = symbols[rt.Symbol]
            }).ToList <IRealTimeQuote>();

            //HISTORICAL DATA
            List <IHistoricalQuote> historicalQuotes = data.Select(h => new HistoricalQuoteBOLSAR()
            {
                adj_close  = 0,
                closing    = h.Ultimo,
                date_round = marketDate,
                maximun    = h.Maximo_Valor,
                minimun    = h.Minimo_Valor,
                opening    = h.Apertura,
                stock_id   = symbols[h.Symbol],
                volume     = 0
            }).ToList <IHistoricalQuote>();

            QuotesService.SaveRealTimeQuote(realTimeQuotes);
            QuotesService.SaveHistoricalQuote(historicalQuotes);
        }
        protected override void ExecuteTask(VcssTaskModel vcssTask)
        {
            DateTime marketDate = DateTime.UtcNow.AddHours(vcssTask.VcssTaskInfo.Market.utc_offset).Date;
            Dictionary <string, int>         symbols = StockService.GetStocks().Where(s => s.market_id == 2 && s.active).ToDictionary(s => s.symbol + ".US", s => s.Id);
            IEnumerable <jsonmdlEODRealTime> data    = JsonConvert.DeserializeObject <List <jsonmdlEODRealTime> >(vcssTask.data).Where(rt => symbols.ContainsKey(rt.Code));

            //INTRADIARY DATA
            List <IRealTimeQuote> realTimeQuotes = data.Select(rt => new RealTimeQuoteEOD()
            {
                ask              = 0,
                ask_size         = 0,
                bid              = 0,
                bid_size         = 0,
                change           = 0,
                change_percent   = rt.Change,
                datetime         = this.GetIntradiaryDateTime(vcssTask.VcssTaskInfo.Market.utc_offset, rt.Timestamp),
                last_trade_date  = DateTime.Now,
                last_trade_price = rt.Close,
                last_trade_size  = 0,
                last_trade_time  = "",
                opening          = rt.Close,
                prev_closing     = rt.PreviousClose,
                stock_id         = symbols[rt.Code]
            }).ToList <IRealTimeQuote>();

            //HISTORICAL DATA
            List <IHistoricalQuote> historicalQuotes = data.Select(h => new HistoricalQuoteEOD()
            {
                adj_close  = 0,
                closing    = h.Close,
                date_round = marketDate,
                maximun    = h.High,
                minimun    = h.Low,
                opening    = h.Open,
                stock_id   = symbols[h.Code],
                volume     = h.Volume
            }).ToList <IHistoricalQuote>();

            QuotesService.SaveRealTimeQuote(realTimeQuotes);
            QuotesService.SaveHistoricalQuote(historicalQuotes);
        }
예제 #10
0
 protected override VcssTaskCanExecuteResult CanExecute(VcssTaskModel vcssTask)
 {
     return(VcssTaskCanExecuteResult.Execute);
 }
예제 #11
0
 protected void UpdateTaskExecutedTime(VcssTaskModel vcssTask)
 {
     VcssTaskManagerService.UpdateExecutedTime(vcssTask.VcssTaskInfo);
 }
예제 #12
0
 protected abstract void ExecuteTask(VcssTaskModel vcssTask);
예제 #13
0
 protected abstract VcssTaskCanExecuteResult CanExecute(VcssTaskModel vcssTask);
 protected override void ExecuteTask(VcssTaskModel vcssTask)
 {
     QuotesService.ClearIntradiaryDataByMarketID(vcssTask.VcssTaskInfo.market_id.Value);
 }