Ejemplo n.º 1
0
        public static bool IsMarketOpen(int marketId)
        {
            bool     result = true;
            DateTime time   = MarketService.GetMarketCurrentLocalTime(marketId);

            if (time.DayOfWeek == DayOfWeek.Saturday || time.DayOfWeek == DayOfWeek.Sunday)
            {
                return(false);
            }

            using (ctaDBEntities entities = new ctaDBEntities())
            {
                entities.Database.Connection.Open();

                var isHoliday = entities.Holidays.Where(h => h.market_id == marketId && h.date.Year == time.Year && h.date.Month == time.Month && h.date.Day == time.Day);

                if (isHoliday.Count() > 0)
                {
                    result = false;
                }
                else
                {
                    string workHours = entities.Markets.Where(m => m.Id == marketId).Select(m => m.work_hours).FirstOrDefault();

                    if (workHours != null)
                    {
                        int startHour    = int.Parse(workHours.Split(';')[0].Split(':')[0]);
                        int startMinutes = int.Parse(workHours.Split(';')[0].Split(':')[1]);
                        int closeHour    = int.Parse(workHours.Split(';')[1].Split(':')[0]);
                        int closeMinutes = int.Parse(workHours.Split(';')[1].Split(':')[1]);

                        if (time.Hour < startHour)
                        {
                            result = false;
                        }
                        else if (time.Hour == startHour && time.Minute < startMinutes)
                        {
                            result = false;
                        }
                        else if (time.Hour > closeHour)
                        {
                            result = false;
                        }
                        else if (time.Hour == closeHour && time.Minute > closeMinutes)
                        {
                            result = false;
                        }
                    }
                }

                entities.Database.Connection.Close();
            }
            return(result);
        }
Ejemplo n.º 2
0
        public static List <MarketSyncInfo> GetMarketsSyncTimeInfo()
        {
            List <MarketSyncInfo> result = new List <MarketSyncInfo>();

            List <string> markets = MarketService.GetMarkets().Select(m => m.name).ToList();

            using (ctaDBEntities entities = new ctaDBEntities())
            {
                Config cfg;
                string lastSync = "";
                string nextSync = "";
                foreach (string marketName in markets)
                {
                    cfg = entities.Configs.Where(c => c.ConfigName == marketName + "_LastSync").FirstOrDefault();
                    if (cfg != null)
                    {
                        lastSync = cfg.ConfigValue;
                    }
                    cfg = entities.Configs.Where(c => c.ConfigName == marketName + "_NextSync").FirstOrDefault();
                    if (cfg != null)
                    {
                        nextSync = cfg.ConfigValue;
                    }
                    result.Add(new MarketSyncInfo()
                    {
                        Market = marketName, LastSync = lastSync, NextSync = nextSync
                    });
                }

                //adding the report sync
                var reportConfig_LastSync = entities.Configs.Where(c => c.ConfigName == "ReportDATA_LastSync").FirstOrDefault();
                var reportConfig_NextSync = entities.Configs.Where(c => c.ConfigName == "ReportDATA_NextSync").FirstOrDefault();

                result.Add(new MarketSyncInfo()
                {
                    Market   = "ReportDATA",
                    LastSync = reportConfig_LastSync.ConfigValue,
                    NextSync = reportConfig_NextSync.ConfigValue
                });
            }

            return(result);
        }
Ejemplo n.º 3
0
        public static string ReadMarketIntradiaryData(string market_name, int market_id, int utc_time_offset, out bool error, params string[] otherParams)
        {
            error = false;
            DateTime date = DateTime.UtcNow.AddHours(utc_time_offset);

            string status     = "O";
            bool   marketOpen = MarketService.IsMarketOpen(market_id, date, out status);

            if (marketOpen)
            {
                try
                {
                    //switch (market_name)
                    //{
                    //    case "NYSE":
                    //        QuotesFromEOD quotesFromEODny = new QuotesFromEOD();
                    //        quotesFromEODny.SaveQuotesToDB(market_name, market_id, utc_time_offset);
                    //        break;
                    //    case "NASDAQ":
                    //        QuotesFromEOD quotesFromEODna = new QuotesFromEOD();
                    //        quotesFromEODna.SaveQuotesToDB(market_name, market_id, utc_time_offset);
                    //        break;
                    //    case "BCBA":
                    //        QuotesFromBOLSAR quotesFromBolsar = new QuotesFromBOLSAR();
                    //        quotesFromBolsar.SaveQuotesToDB(market_name, market_id, utc_time_offset);
                    //        break;
                    //    default:
                    //        return "Quotes for other markets than NYSE, NASDAQ or BCBA are not implemented";
                    //}
                    return("Quotes Updated");
                }
                catch (Exception ex)
                {
                    error = true;
                    EmailSender.SendErrorUpdatingIntradiary("Message: " + ex.Message + Environment.NewLine + "Source: " + ex.Source + Environment.NewLine + "StackTrace: " + ex.StackTrace + Environment.NewLine + ((ex.InnerException != null) ? "Inner Message: " + ex.InnerException.Message + Environment.NewLine + "Inner Source: " + ex.InnerException.Source + Environment.NewLine + "Inner StackTrace: " + ex.InnerException.StackTrace : ""), market_name, date);
                    return("Error Updating Intradiry: " + ex.Message);
                }
            }
            else
            {
                error = true;
                if (date.Hour == 5 && status == "C")
                {
                    try
                    {
                        QuotesService.ClearIntradiaryDataByMarketID(market_name);
                        //EmailSender.DeletingIntradiaryData("Intradiry Deleted", market_name, date);
                        return("Market Close --> Intradiry Deleted");
                    }
                    catch (Exception ex)
                    {
                        EmailSender.SendErrorClearIntradiaryData("Message: " + ex.Message + Environment.NewLine + "Source: " + ex.Source + Environment.NewLine + "StackTrace: " + ex.StackTrace + Environment.NewLine + ((ex.InnerException != null) ? "Inner Message: " + ex.InnerException.Message + Environment.NewLine + "Inner Source: " + ex.InnerException.Source + Environment.NewLine + "Inner StackTrace: " + ex.InnerException.StackTrace : ""), market_name, date);
                        return("Error deleting Intradiry: " + ex.Message);
                    }
                }
                else
                {
                    //EmailSender.SendMarketCloseEmail(market_name, date, status);
                    return("Market Close");
                }
            }
        }
Ejemplo n.º 4
0
        public static DateTime GetMarketCurrentLocalTime(string marketName)
        {
            int utcoffset = MarketService.GetMarkets().Where(m => m.name == marketName).First().utc_offset;

            return(DateTime.UtcNow.AddHours(utcoffset));
        }