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