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);
        }