public void CalculateDeadLineTest()
        {
            //Arrange
            DateTime date1 = new DateTime(2017, 2, 6);
            DateTime date2 = new DateTime(2017, 2, 7);
            DateTime date3 = new DateTime(2017, 2, 8);
            DateTime date4 = new DateTime(2017, 2, 9);
            DateTime date5 = new DateTime(2017, 2, 10);

            int      allotedHours1 = 14;
            int      allotedHours2 = 9;
            int      allotedHours3 = 35;
            int      allotedHours4 = 20;
            int      allotedHours5 = 16;
            DateTime startDate     = new DateTime(2017, 2, 6);

            BusinessCalendarService businessCalendarService = new BusinessCalendarService();
            BusinessCalendar        businessCalendar        = new BusinessCalendar(businessCalendarService);

            //Act

            DateTime deadline1 = businessCalendar.CalculateDeadLine(allotedHours1, date1);
            DateTime deadline2 = businessCalendar.CalculateDeadLine(allotedHours2, date1);
            DateTime deadline3 = businessCalendar.CalculateDeadLine(allotedHours2, date3);
            DateTime deadline4 = businessCalendar.CalculateDeadLine(allotedHours3, date1);
            DateTime deadline5 = businessCalendar.CalculateDeadLine(allotedHours4, date1);
            DateTime deadline6 = businessCalendar.CalculateDeadLine(allotedHours5, date2);

            //Assert
            Assert.Equal(deadline1, (new DateTime(2017, 2, 7, 16, 30, 0)));
            Assert.Equal(deadline2, (new DateTime(2017, 2, 7, 10, 30, 0)));
            Assert.Equal(deadline3, (new DateTime(2017, 2, 10, 10, 30, 0)));
            Assert.Equal(deadline4, (new DateTime(2017, 2, 15, 16, 30, 0)));
            Assert.Equal(deadline5, (new DateTime(2017, 2, 9, 15, 30, 0)));
        }
示例#2
0
        protected internal virtual void initializeTaskDueDate(TaskEntity task, VariableScope variableScope)
        {
            Expression dueDateExpression = taskDefinition.DueDateExpression;

            if (dueDateExpression != null)
            {
                object dueDate = dueDateExpression.getValue(variableScope);
                if (dueDate != null)
                {
                    if (dueDate is DateTime)
                    {
                        task.DueDate = (DateTime)dueDate;
                    }
                    else if (dueDate is string)
                    {
                        BusinessCalendar businessCalendar = BusinessCalender;
                        task.DueDate = businessCalendar.resolveDuedate((string)dueDate);
                    }
                    else
                    {
                        throw new ProcessEngineException("Due date expression does not resolve to a Date or Date string: " + dueDateExpression.ExpressionText);
                    }
                }
            }
        }
示例#3
0
        public ActionResult prevMonth(string id)
        {
            IBusinessCalendar changeMonth = new BusinessCalendar();
            Month             m2          = changeMonth.preMonth(int.Parse(id));

            return(Json(m2, JsonRequestBehavior.AllowGet));
        }
        public void CalculateTimeTest()
        {
            //Arrange

            DateTime date1 = new DateTime(2017, 2, 6);
            DateTime date2 = new DateTime(2017, 2, 7);
            DateTime date3 = new DateTime(2017, 2, 8);
            DateTime date4 = new DateTime(2017, 2, 9);
            DateTime date5 = new DateTime(2017, 2, 10);

            //Act
            BusinessCalendarService businessCalendarService = new BusinessCalendarService();
            BusinessCalendar        businessCalendar        = new BusinessCalendar(businessCalendarService);

            int sumTimeHours1 = businessCalendar.CalculateWorkTime(date1, date5);
            int sumTimeHours2 = businessCalendar.CalculateWorkTime(date1, date4);
            int sumTimeHours3 = businessCalendar.CalculateWorkTime(date2, date4);
            int sumTimeHours4 = businessCalendar.CalculateWorkTime(date2, date5);


            //Assert
            Assert.Equal(28, sumTimeHours1);
            Assert.Equal(21, sumTimeHours2);
            Assert.Equal(14, sumTimeHours3);
            Assert.Equal(21, sumTimeHours4);
        }
示例#5
0
        public virtual string resolveAndSetDuedate(ExecutionEntity context, TimerEntity job, bool creationDateBased)
        {
            BusinessCalendar businessCalendar = Context.ProcessEngineConfiguration.BusinessCalendarManager.getBusinessCalendar(type.calendarName);

            if (description == null)
            {
                throw new ProcessEngineException("Timer '" + context.ActivityId + "' was not configured with a valid duration/time");
            }

            string   dueDateString = null;
            DateTime duedate       = null;

            // ACT-1415: timer-declaration on start-event may contain expressions NOT
            // evaluating variables but other context, evaluating should happen nevertheless
            VariableScope scopeForExpression = context;

            if (scopeForExpression == null)
            {
                scopeForExpression = StartProcessVariableScope.SharedInstance;
            }

            object dueDateValue = description.getValue(scopeForExpression);

            if (dueDateValue is string)
            {
                dueDateString = (string)dueDateValue;
            }
            else if (dueDateValue is DateTime)
            {
                duedate = (DateTime)dueDateValue;
            }
            else
            {
                throw new ProcessEngineException("Timer '" + context.ActivityId + "' was not configured with a valid duration/time, either hand in a java.util.Date or a String in format 'yyyy-MM-dd'T'hh:mm:ss'");
            }

            if (duedate == null)
            {
                if (creationDateBased)
                {
                    if (job.CreateTime == null)
                    {
                        throw new ProcessEngineException("Timer '" + context.ActivityId + "' has no creation time and cannot be recalculated based on creation date. Either recalculate on your own or trigger recalculation with creationDateBased set to false.");
                    }
                    duedate = businessCalendar.resolveDuedate(dueDateString, job.CreateTime);
                }
                else
                {
                    duedate = businessCalendar.resolveDuedate(dueDateString);
                }
            }

            job.Duedate = duedate;
            return(dueDateString);
        }
示例#6
0
 /// <summary>
 /// Creates a consolidated business calendar for a given set of business centers
 /// </summary>
 /// <param name="cache">The cache.</param>
 /// <param name="centers">The centers.</param>
 /// <param name="nameSpace">The clients namespace</param>
 /// <returns></returns>
 public static IBusinessCalendar ToBusinessCalendar(ICoreCache cache, string[] centers, string nameSpace)
 {
     if (centers != null)
     {
         var dps                  = GetDateRuleParser(cache, centers, nameSpace);
         var significantDays      = GetBusinessCentreHolidayDates(cache, Dedupe(dps.FpmlName), nameSpace);
         IBusinessCalendar result = new BusinessCalendar(significantDays, dps);
         return(result);
     }
     return(null);
 }
示例#7
0
        public ActionResult preMonth()
        {
            IBusinessCalendar changeMonth = new BusinessCalendar();
            Month             m1          = changeMonth.preMonth(5);

            ViewBag.days  = m1.days;
            ViewBag.month = m1.name;
            ViewBag.year  = "2020";
            ViewBag.mData = m1;
            return(View());
        }
示例#8
0
 /// <summary>
 /// Creates a consolidated business calendar for a given set of business centers
 /// </summary>
 /// <param name="centers">The centers.</param>
 /// <param name="cache">The cache.</param>
 /// <param name="nameSpace">The clients namespace</param>
 /// <returns></returns>
 public static IBusinessCalendar ToBusinessCalendar(ICoreCache cache, BusinessCenters centers, string nameSpace)
 {
     if (centers != null)
     {
         var calendars            = centers.businessCenter.Select(businessCenter => businessCenter.Value).ToArray();
         var dps                  = GetDateRuleParser(cache, calendars, nameSpace);
         var significantDays      = GetBusinessCentreHolidayDates(cache, Dedupe(dps.FpmlName), nameSpace);
         IBusinessCalendar result = new BusinessCalendar(significantDays, dps);
         return(result);
     }
     return(null);
 }
示例#9
0
        public void ApplyOffsets()
        {
            const string offsetsString = "+2B;-4D;1W";
            var          calendar      = new BusinessCalendar(new DateTime(2020, 02, 03));

            Assert.IsTrue(DateOffsets.TryParse(offsetsString, calendar, out DateOffsets offsets));

            Assert.AreEqual((2, DateOffsetKind.BusinessDays), offsets.Items[0]);
            Assert.AreEqual((-4, DateOffsetKind.Days), offsets.Items[1]);
            Assert.AreEqual((1, DateOffsetKind.Weekdays), offsets.Items[2]);

            Assert.AreEqual(new DateTime(2020, 02, 03), offsets.ApplyTo(new DateTime(2020, 02, 02)));
            Assert.AreEqual(offsetsString[1..], offsets.ToString()); // plus sign is acceptable in input, but not included in output
        protected void Button1_Click(object sender, EventArgs e)
        {
            try
            {
                DateTime startDate = DateTime.Parse(TextBoxStartDate.Text);
                int      hour      = Int32.Parse(TextBoxHour.Text);

                BusinessCalendarService businessCalendarService = new BusinessCalendarService();
                BusinessCalendar        businessCalendar        = new BusinessCalendar(BusinessCalendarServiceProvider.Current);
                DateTime deadLine = businessCalendar.CalculateDeadLine(hour, startDate);

                finishDate.Text    = deadLine.ToString();
                ErrorLabel.Visible = false;
            }
            catch (System.FormatException)
            {
                ErrorLabel.Visible = true;
            }
        }
示例#11
0
        /// <summary>
        /// Render the <see cref="System.Web.UI.WebControls.Calendar"/>
        /// </summary>
        /// <param name="cs"><see cref="ControlStruct"/></param>
        /// <returns><see cref="System.Web.UI.WebControls.Calendar"/></returns>
        protected static Calendar RenderCalendar(ControlStruct cs)
        {
            BusinessCalendar calendar = new BusinessCalendar();

            if (cs != null)
            {
                calendar.ID = "cal" + cs.Name;
                //calendar.CssClass = ControlCellStyle.CssClass;
                calendar.Enabled = cs.Enabled;
                calendar.Width = Unit.Percentage(cs.Width);
            }
            return calendar;
        }
示例#12
0
 public virtual BusinessCalendarManager addBusinessCalendar(string businessCalendarRef, BusinessCalendar businessCalendar)
 {
     businessCalendars[businessCalendarRef] = businessCalendar;
     return(this);
 }
示例#13
0
        public virtual DateTime calculateRepeat()
        {
            BusinessCalendar businessCalendar = Context.ProcessEngineConfiguration.BusinessCalendarManager.getBusinessCalendar(CycleBusinessCalendar.NAME);

            return(businessCalendar.resolveDuedate(repeat));
        }