Exemplo n.º 1
0
        private DateTime _AddOffset(ProcessVariablesContainer variables, string unit, int value, DateTime dateTime)
        {
            switch (unit.ToLower())
            {
            case "year":
            case "years":
                return(dateTime.AddYears(value));

            case "month":
            case "months":
                return(dateTime.AddMonths(value));

            case "week":
            case "weeks":
                return(dateTime.AddDays(value * 7));

            case "day":
            case "days":
                return(dateTime.AddDays(value));

            case "hour":
            case "hours":
                return(dateTime.AddHours(value));

            case "minute":
            case "minutes":
                return(dateTime.AddMinutes(value));

            case "second":
            case "seconds":
                return(dateTime.AddSeconds(value));

            default:
                variables.WriteLogLine(LogLevels.Error, "Internal error: Unhandled relative date/time case.");
                throw new Exception("Internal error: Unhandled relative date/time case.");
            }
        }
Exemplo n.º 2
0
        public DateTime GetTime(ProcessVariablesContainer variables)
        {
            Log.Info("Attempting to parse DateString [{0}]", new object[] { _value });
            DateTime ret     = DateTime.Now;
            bool     isFirst = true;
            string   buffer  = "";
            Match    m;

            foreach (char c in _value)
            {
                switch (c)
                {
                case ' ':
                    if (_variableRegex.IsMatch(buffer))
                    {
                        m      = _variableRegex.Match(buffer);
                        buffer = buffer.Replace("${" + m.Groups[1].Value + "}", string.Format("{0}", variables[m.Groups[1].Value]));
                    }
                    if (isFirst)
                    {
                        switch (buffer.ToLower())
                        {
                        case "now":
                        case "today":
                            buffer  = "";
                            ret     = DateTime.Now;
                            isFirst = false;
                            break;

                        case "tomorrow":
                            buffer  = "";
                            ret     = DateTime.Now.AddDays(1);
                            isFirst = false;
                            break;

                        case "yesterday":
                            buffer  = "";
                            ret     = DateTime.Now.AddDays(-1);
                            isFirst = false;
                            break;
                        }
                    }
                    if (buffer != "")
                    {
                        if (_basicRelativeRegex.IsMatch(buffer))
                        {
                            m      = _basicRelativeRegex.Match(buffer);
                            ret    = _AddOffset(m.Groups[2].Value, (m.Groups[1].Value.ToLower() == "next" ? 1 : -1), ret);
                            buffer = "";
                        }
                        else if (_simpleRelativeRegex.IsMatch(buffer))
                        {
                            m      = _simpleRelativeRegex.Match(buffer);
                            ret    = _AddOffset(m.Groups[2].Value, int.Parse(m.Groups[1].Value), ret);
                            buffer = "";
                        }
                        else if (_completeRelativeRegex.IsMatch(buffer))
                        {
                            m      = _completeRelativeRegex.Match(buffer);
                            ret    = _AddOffset(m.Groups[2].Value, int.Parse(m.Groups[1].Value) * (m.Groups[3].Value != "" ? -1 : 1), ret);
                            buffer = "";
                        }
                        else if (isFirst)
                        {
                            DateTime tmp;
                            if (DateTime.TryParse(buffer, out tmp))
                            {
                                isFirst = false;
                                buffer  = "";
                                ret     = tmp;
                            }
                            else
                            {
                                buffer += c;
                            }
                        }
                        else
                        {
                            buffer += c;
                        }
                    }
                    break;

                default:
                    buffer += c;
                    break;
                }
            }
            if (buffer != "")
            {
                throw Log._Exception(new Exception(string.Format("Invalid Date String Specified [{0}]", buffer)));
            }
            return(ret);
        }
Exemplo n.º 3
0
 internal ReadOnlyProcessVariablesContainer(ProcessVariablesContainer variables)
 {
     _variables = variables;
 }
Exemplo n.º 4
0
 internal ReadOnlyProcessVariablesContainer(string elementID, ProcessState state, BusinessProcess process, Exception error)
 {
     _variables = new BpmEngine.ProcessVariablesContainer(elementID, state, process);
     _error     = error;
 }