Beispiel #1
0
        /// <summary>
        /// Prepares query columns and returns their names.
        /// </summary>
        /// <param name="esq"><seealso cref="EntitySchemaQuery"/> instance.</param>
        /// <param name="state">Case term state.</param>
        /// <returns>Time unit columns names.</returns>
        private TimeUnitColumnsNames PrepareEntitySchemaQuery(EntitySchemaQuery esq, CaseTermStates state)
        {
            TimeUnitColumnsNames names = new TimeUnitColumnsNames();

            esq.AddColumn("Calendar");
            if (!state.HasFlag(CaseTermStates.ContainsResponse))
            {
                names.ReactionType = esq.AddColumn("[TimeUnit:Id:ReactionTimeUnit].Code").Name;
                esq.AddColumn("ReactionTimeValue");
            }
            if (!state.HasFlag(CaseTermStates.ContainsResolve))
            {
                names.SolutionType = esq.AddColumn("[TimeUnit:Id:SolutionTimeUnit].Code").Name;
                esq.AddColumn("SolutionTimeValue");
            }
            return(names);
        }
Beispiel #2
0
        /// <summary>
        /// Gets case term interval for this strategy.
        /// </summary>
        /// <param name="state">Case term state.</param>
        /// <returns>Case term interval.</returns>
        public override CaseTermInterval GetTermInterval(CaseTermStates state)
        {
            var result = new CaseTermInterval();
            var esq    = new EntitySchemaQuery(UserConnection.EntitySchemaManager, "ServiceItem");
            TimeUnitColumnsNames names = PrepareEntitySchemaQuery(esq, state);
            var serviceItem            = esq.GetEntity(UserConnection, _serviceDataModel.ServiceItemId);

            if (serviceItem == null)
            {
                return(result);
            }
            var serviceItemCalendar = serviceItem.GetTypedColumnValue <Guid>("CalendarId");
            var calendarId          = serviceItemCalendar != default(Guid) ? serviceItemCalendar : GetCalendarBySysSetting();

            if (calendarId == default(Guid))
            {
                return(result);
            }
            if (!state.HasFlag(CaseTermStates.ContainsResponse))
            {
                var term = new TimeTerm();
                var reactionTimeUnitName = serviceItem.GetTypedColumnValue <string>(names.ReactionType);
                CalendarsTimeUnit timeUnit;
                if (Enum.TryParse(reactionTimeUnitName, out timeUnit))
                {
                    term.Type = timeUnit;
                }
                term.Value          = serviceItem.GetTypedColumnValue <int>("ReactionTimeValue");
                term.CalendarId     = calendarId;
                result.ResponseTerm = term.ConvertToMinutes();
            }
            if (!state.HasFlag(CaseTermStates.ContainsResolve))
            {
                var term = new TimeTerm();
                var solutionTimeUnitName = serviceItem.GetTypedColumnValue <string>(names.SolutionType);
                CalendarsTimeUnit timeUnit;
                if (Enum.TryParse(solutionTimeUnitName, out timeUnit))
                {
                    term.Type = timeUnit;
                }
                term.Value         = serviceItem.GetTypedColumnValue <int>("SolutionTimeValue");
                term.CalendarId    = calendarId;
                result.ResolveTerm = term.ConvertToMinutes();
            }
            return(result);
        }