/// <summary>
 /// Initializes new instance of <see cref="TermCalculationLogStore"/>.
 /// </summary>
 /// <param name="calculationParameters">Parameters to term calculation.</param>
 /// <param name="calculationTermKind">Kind of calculation term.</param>
 public TermCalculationLogStore(CaseCalculationLoggerRequest calculationParameters, CaseTermStates calculationTermKind, CultureInfo userCulture)
 {
     CalculationParameters = calculationParameters.Parameters;
     RegistrationDate      = DateTime.Parse(calculationParameters.RegistrationDate).ToString();
     CalculationTermKind   = calculationTermKind;
     UserCulture           = userCulture;
     CurrentDateTime       = DateTime.UtcNow.ToString();
 }
        private ServiceTermResponse ExecuteCalculateTerms(DateTime startDate, CaseTermInterval termInterval,
                                                          TimeZoneInfo userTimeZone, CaseTermStates mask)
        {
            var calendarutility = new CalendarUtility(UserConnection);
            var response        = new ServiceTermResponse();

            response.ReactionTime = mask.HasFlag(CaseTermStates.ContainsResponse)
                                ? calendarutility.Add(startDate, termInterval.ResponseTerm, userTimeZone) as DateTime?
                                : null;
            response.SolutionTime = mask.HasFlag(CaseTermStates.ContainsResolve)
                                ? calendarutility.Add(startDate, termInterval.ResolveTerm, userTimeZone) as DateTime?
                                : null;
            return(response);
        }
Example #3
0
        /// <summary>
        /// Returns time interval for this strategy.
        /// </summary>
        /// <param name="mask">Flags which indicate which values are already filled.</param>
        /// <returns>Time interval.</returns>
        public override CaseTermInterval GetTermInterval(CaseTermStates mask)
        {
            var            result             = new CaseTermInterval();
            var            esq                = new EntitySchemaQuery(UserConnection.EntitySchemaManager, EntitySchemaName);
            TimeColumnData timeColumns        = AddTimeColumns(ref esq);
            string         calendarColumnName = esq.AddColumn("Calendar.Id").Name;

            ApplyFilters(ref esq);
            EntityCollection entityCollection = esq.GetEntityCollection(UserConnection);

            if (entityCollection.IsNotEmpty())
            {
                var  entity     = entityCollection[0];
                Guid calendarId = entity.GetTypedColumnValue <Guid>(calendarColumnName) == default(Guid) ?
                                  GetCalendarId() : entity.GetTypedColumnValue <Guid>(calendarColumnName);
                if (calendarId == default(Guid))
                {
                    return(result);
                }
                result = PrepareResult(entity, mask, timeColumns, calendarId);
            }
            return(result);
        }
        private ServiceTermResponse ExecuteRecalculateTerms(DateTime startDate, CaseTermInterval termInterval,
                                                            IEnumerable <DateTimeInterval> intervals, TimeZoneInfo userTimeZone, CaseTermStates mask)
        {
            var calendarutility = new CalendarUtility(UserConnection);
            var response        = new ServiceTermResponse();
            var dateTime        = ConvertFromUtc(DateTime.UtcNow, userTimeZone);

            response.ReactionTime = mask.HasFlag(CaseTermStates.ContainsResponse)
                                ? calendarutility.Add(dateTime, termInterval.ResponseTerm, intervals, userTimeZone) as DateTime?
                                : null;
            response.SolutionTime = mask.HasFlag(CaseTermStates.ContainsResolve)
                                ? calendarutility.Add(dateTime, termInterval.ResolveTerm, intervals, userTimeZone) as DateTime?
                                : null;
            return(response);
        }