예제 #1
0
        public OpeningTimes SetRegularOpening(DayOfWeek Weekday,
                                              HourMin Begin,
                                              HourMin End)
        {
            _RegularOpenings[(int)Weekday] = new RegularHours(Weekday, Begin, End);

            return(this);
        }
예제 #2
0
        public OpeningTimes(DayOfWeek FromWeekday,
                            DayOfWeek ToWeekday,
                            HourMin Begin,
                            HourMin End,
                            String FreeText = "")

            : this(FreeText, IsOpen24Hours : false)

        {
            SetRegularOpening(FromWeekday, ToWeekday, Begin, End);
        }
예제 #3
0
        /// <summary>
        /// Create a new specification of a regular recurring operation or access hours.
        /// </summary>
        /// <param name="Weekday">Day of the week, from Monday till Sunday.</param>
        /// <param name="Begin">Begin of the regular period given in hours and minutes. Must be in 24h format.</param>
        /// <param name="End">End of the regular period, syntax as for period_begin. Must be later than the begin.</param>
        public RegularHours(DayOfWeek Weekday,
                            HourMin Begin,
                            HourMin End)
        {
            #region Initial checks

            if (Begin > End)
            {
                throw new ArgumentException("Begin time must be before the end time!");
            }

            #endregion

            this._Weekday = Weekday;
            this._Begin   = Begin;
            this._End     = End;
        }
예제 #4
0
        public OpeningTimes SetRegularOpening(DayOfWeek FromWeekday,
                                              DayOfWeek ToWeekday,
                                              HourMin Begin,
                                              HourMin End)
        {
            var _FromWeekday = (int)FromWeekday;
            var _ToWeekday   = (int)ToWeekday;

            if (_ToWeekday < _FromWeekday)
            {
                _ToWeekday += 7;
            }

            for (var weekday = _FromWeekday; weekday <= _ToWeekday; weekday++)
            {
                _RegularOpenings[weekday % 7] = new RegularHours((DayOfWeek)(weekday % 7), Begin, End);
            }

            return(this);
        }
예제 #5
0
        public static Boolean TryParse(String Text, out OpeningTimes OpeningTimes)
        {
            OpeningTimes = null;

            var match = Regex.Match(Text, "([a-zA-Z]+) - ([a-zA-Z]+) (([0-9]{2}:[0-9]{2})h - ([0-9]{2}:[0-9]{2})h|closed)");

            if (!match.Success)
            {
                return(false);
            }

            #region Parse weekdays

            DayOfWeek FromWeekday;

            switch (match.Groups[1].Value.ToLower())
            {
            case "mo":
            case "mon":
            case "monday":
                FromWeekday = DayOfWeek.Monday;
                break;

            case "tu":
            case "di":
            case "tue":
            case "tuesday":
                FromWeekday = DayOfWeek.Tuesday;
                break;

            case "we":
            case "mi":
            case "wed":
            case "wednesday":
                FromWeekday = DayOfWeek.Wednesday;
                break;

            case "th":
            case "do":
            case "thu":
            case "thursday":
                FromWeekday = DayOfWeek.Thursday;
                break;

            case "fr":
            case "fri":
            case "friday":
                FromWeekday = DayOfWeek.Friday;
                break;

            case "sa":
            case "sat":
            case "saturday":
                FromWeekday = DayOfWeek.Saturday;
                break;

            case "su":
            case "so":
            case "sun":
            case "sunday":
                FromWeekday = DayOfWeek.Sunday;
                break;

            default:
                return(false);
            }

            DayOfWeek ToWeekday;

            switch (match.Groups[2].Value.ToLower())
            {
            case "mo":
            case "mon":
            case "monday":
                ToWeekday = DayOfWeek.Monday;
                break;

            case "tu":
            case "di":
            case "tue":
            case "tuesday":
                ToWeekday = DayOfWeek.Tuesday;
                break;

            case "we":
            case "mi":
            case "wed":
            case "wednesday":
                ToWeekday = DayOfWeek.Wednesday;
                break;

            case "th":
            case "do":
            case "thu":
            case "thursday":
                ToWeekday = DayOfWeek.Thursday;
                break;

            case "fr":
            case "fri":
            case "friday":
                ToWeekday = DayOfWeek.Friday;
                break;

            case "sa":
            case "sat":
            case "saturday":
                ToWeekday = DayOfWeek.Saturday;
                break;

            case "su":
            case "so":
            case "sun":
            case "sunday":
                ToWeekday = DayOfWeek.Sunday;
                break;

            default:
                return(false);
            }

            #endregion

            #region Parse hours...

            HourMin Begin;
            HourMin End;

            if (HourMin.TryParse(match.Groups[4].Value, out Begin) &&
                HourMin.TryParse(match.Groups[5].Value, out End))
            {
                OpeningTimes = new OpeningTimes(FromWeekday, ToWeekday, Begin, End);
                return(true);
            }

            #endregion

            #region ...or parse "closed"

            else if (match.Groups[3].Value == "closed")
            {
                OpeningTimes = OpeningTimes.FromFreeText(Text, IsOpen24Hours: false);
                return(true);
            }

            #endregion

            return(false);
        }