Example #1
0
        private void ProcessTimeRange(string s)
        {
            int d = 0;

            if (Int32.TryParse(s, out d))
            {
                if (d > 0 && d <= 24)
                {
                    _lastRange = new __TimeRange((short)OpenTime, (short)(OpenTime + d * 60));
                    if (_lastRange.EndTime > Utills.MinutesInDay)
                    {
                        _lastRange.EndTime = Utills.MinutesInDay;
                    }
                    _ranges.Add(_lastRange);
                    return;
                }
                if (s.Length == 8)
                {
                    _lastRange = TextParser.StringToTimeRange(s);
                    if (_lastRange.EndTime > Utills.MinutesInDay)
                    {
                        _lastRange.EndTime = Utills.MinutesInDay;
                    }
                    _ranges.Add(_lastRange);
                }
            }
        }
Example #2
0
        public void ParserText(string text)
        {
            string prepare_text = PrepareString(text);

            if (String.IsNullOrEmpty(prepare_text))
            {
                return;
            }

            _values.Clear();
            _lastIndex = -1;
            _ranges.Clear();
            _lastRange        = null;
            _lastLeksem       = null;
            _lastValue.Length = 0;
            _ranges.Clear();
            foreach (char c in prepare_text)
            {
                ProcessChar(c);
            }
            ProcessChar(' ');
            if (_values.Count == 0)
            {
                return;
            }

            ProcessLeksems();

            if (_ranges != null)
            {
                foreach (__TimeRange r in _ranges)
                {
                    if (String.IsNullOrEmpty(r.AbsenceCode))
                    {
                        r.Rounded();
                    }
                    else
                    {
                        Absence absence = Manager.GetByAbbreviation(r.AbsenceCode);
                        if (absence != null && !absence.IsFixed)
                        {
                            r.Rounded();
                        }
                    }
                }
            }

            TimeRangeValidator v = new TimeRangeValidator();

            v.AddAndValidate(_ranges);
        }
Example #3
0
 private void AddRange(__TimeRange range)
 {
     if (range.Validation())
     {
         Ranges.Add(range);
         Ranges.Sort();
         short end = Ranges[0].EndTime;
         for (int i = 1; i < Ranges.Count; i++)
         {
             if (Ranges[i].BeginTime < end && end <= Ranges[i].EndTime)
             {
                 Ranges[i].BeginTime = end;
             }
             end = Ranges[i].EndTime;
         }
     }
 }
Example #4
0
        private void ProcessAbsence(string s)
        {
            Absence absence = Manager.GetByAbbreviation(s);

            if (absence != null)
            {
                if (absence.IsFixed)
                {
                    if (_lastRange == null)
                    {
                        _lastRange = new __TimeRange((short)OpenTime, (short)(OpenTime + DayTime), s, false);
                        _ranges.Add(_lastRange);
                    }
                    else
                    {
                        _lastRange.AbsenceCode = s;
                    }
                    _lastRange = null;
                }
                else if (absence.Value > 0)
                {
                    if (_lastRange == null)
                    {
                        _lastRange = new __TimeRange((short)OpenTime, (short)(OpenTime + absence.Value * 60), s);
                        _ranges.Add(_lastRange);
                    }
                    else
                    {
                        _lastRange.AbsenceCode = s;
                    }

                    _lastRange = null;
                }
                else
                {
                    if (_lastRange != null)
                    {
                        _lastRange.AbsenceCode = s;
                        //_ranges.Add(_lastRange);
                        //_lastRange = null;
                    }
                    _lastRange = null;
                }
            }
        }
Example #5
0
        private void JoinEqualRanges()
        {
            if (Ranges.Count <= 1)
            {
                return;
            }
            __TimeRange range = Ranges[Ranges.Count - 1];

            for (int i = Ranges.Count - 2; i >= 0; i--)
            {
                if (Ranges[i].EndTime == range.BeginTime && range.AbsenceId == Ranges[i].AbsenceId)
                {
                    range.BeginTime = Ranges[i].BeginTime;
                    Ranges.RemoveAt(i);
                }
                else
                {
                    range = Ranges[i];
                }
            }
        }
Example #6
0
        public static List <__TimeRange> ParseText2(StoreDay storeday, string text)
        {
            if (String.IsNullOrEmpty(text))
            {
                return(null);
            }

            StringBuilder sb = new StringBuilder(PrepareString(text));

            if (sb.Length == 0)
            {
                return(null);
            }

            string[] values = sb.ToString().Split(' ');

            List <__TimeRange> result = new List <__TimeRange> ();
            __TimeRange        tr     = null;

            if (values.Length == 1)
            {
                if (IsNumber(values[0]) && values[0].Length == 8)
                {
                    tr = StringToTimeRange(values[0]);
                    if (tr != null)
                    {
                        result.Add(tr);
                    }
                }
                else if (IsNumber(values[0]) && values[0].Length < 3)
                {
                    double v = Convert.ToDouble(values[0]);

                    int endtime = (int)(v * 60 + storeday.OpenTime);
                    if (endtime > Utills.MinutesInDay)
                    {
                        endtime = Utills.MinutesInDay;
                    }
                    tr = new __TimeRange(storeday.OpenTime, (short)endtime);
                    result.Add(tr);
                }
                else
                {
                    //tr = new __TimeRange(storeday.OpenTime, storeday.CloseTime, values[0]);
                    tr = new __TimeRange(0, 0, values[0]);
                    result.Add(tr);
                }
            }
            else
            {
                foreach (string str in values)
                {
                    if (IsNumber(str))
                    {
                        if (str.Length == 8)
                        {
                            tr = StringToTimeRange(str);
                            if (tr != null)
                            {
                                result.Add(tr);
                            }
                        }
                        else
                        {
                            double v = Convert.ToDouble(values[0]);

                            int endtime = (int)(v * 60 + storeday.OpenTime);
                            if (endtime > Utills.MinutesInDay)
                            {
                                endtime = Utills.MinutesInDay;
                            }
                            tr = new __TimeRange(storeday.OpenTime, (short)endtime);
                            result.Add(tr);
                        }
                    }
                    else
                    {
                        if (tr != null)
                        {
                            tr.AbsenceCode = str;
                            tr             = null;
                        }
                        else
                        {
                            //tr = new __TimeRange(storeday.OpenTime, storeday.CloseTime, str);
                            tr = new __TimeRange(0, 0, str);
                            result.Add(tr);
                            tr = null;
                        }
                    }
                }
            }

            if (result.Count == 0)
            {
                result = null;
            }

            return(result);
        }
Example #7
0
        public static List <__TimeRange> ParseText(string text)
        {
            if (String.IsNullOrEmpty(text))
            {
                return(null);
            }

            StringBuilder sb = new StringBuilder(text.Trim());

            sb.Replace(System.Environment.NewLine, " ");
            sb.Replace("\t", " ");
            List <string> lstValues = new List <string>();

            char          c;
            StringBuilder sb_number = new StringBuilder(8);

            for (int i = 0; i < sb.Length; i++)
            {
                c = sb[i];
                if (Char.IsNumber(c))
                {
                    sb_number.Append(c);
                }
                else
                {
                    if (sb_number.Length == 8)
                    {
                        lstValues.Add(sb_number.ToString());
                        sb_number.Length = 0;
                    }
                    else
                    {
                        if (sb_number.Length > 0)
                        {
                            throw new Exception("Invalid string - " + sb_number.ToString());
                        }
                    }
                }
            }
            if (sb_number.Length == 8)
            {
                lstValues.Add(sb_number.ToString());
                sb_number.Length = 0;
            }
            else
            {
                if (sb_number.Length > 0)
                {
                    throw new Exception("Invalid string - " + sb_number.ToString());
                }
            }


            List <__TimeRange> result = null;

            foreach (string s in lstValues)
            {
                __TimeRange tr = StringToTimeRange(s);
                if (result == null)
                {
                    result = new List <__TimeRange>();
                }
                result.Add(tr);
            }

            return(result);
        }