Ejemplo n.º 1
0
        private TaskControl_TimeRange Merge(TaskControl_TimeRange timeRange1, TaskControl_TimeRange timeRange2)
        {
            //ha frodított a sorrend, akkor megfordítva hívom meg
            if (timeRange2.DateTimeStart < timeRange1.DateTimeStart)
            {
                return(Merge(timeRange2, timeRange1));
            }


            var timeRange1End = timeRange1.EndOfTimeRange(TimeUnit);
            var timeRange2End = timeRange2.EndOfTimeRange(TimeUnit);


            //timeRange1 teljesen befedi timeRange2-t, akkor timeRange1-et adom vissza
            if (timeRange1End >= timeRange2End)
            {
                return(timeRange1);
            }


            if (timeRange1End < timeRange2.DateTimeStart)
            {            //Ha nem érnek össze az időszakok, akkor nem lehet mergelni
                throw new Exception($"Merge Error.");
            }
            else
            {            //ha egymásra lógnak, vagy összeérnek az időszakok
                var res = newTaskControl_TimeRange(timeRange1.DateTimeStart, TimeCountBetween(timeRange1.DateTimeStart, timeRange2End));
                return(res);
            }
        }
Ejemplo n.º 2
0
        private bool Mergeble(TaskControl_TimeRange timeRange1, TaskControl_TimeRange timeRange2)
        {
            //ha frodított a sorrend, akkor megfordítva hívom meg
            if (timeRange2.DateTimeStart < timeRange1.DateTimeStart)
            {
                return(Mergeble(timeRange2, timeRange1));
            }

            return(timeRange1.EndOfTimeRange(TimeUnit) >= timeRange2.DateTimeStart);
        }
Ejemplo n.º 3
0
        private Tuple <TaskControl_TimeRange, TaskControl_TimeRange?> Split(TaskControl_TimeRange timeRange, DateTime splittime)
        {
            if (!Splitable(timeRange, splittime))
            {
                throw new Exception("Cannot split");
            }

            TaskControl_TimeRange timeRange1 = newTaskControl_TimeRange(timeRange.DateTimeStart, TimeCountBetween(timeRange.DateTimeStart, splittime));

            TaskControl_TimeRange timeRange2 = newTaskControl_TimeRange(splittime, TimeCountBetween(splittime, timeRange.EndOfTimeRange(TimeUnit)));

            return(new Tuple <TaskControl_TimeRange, TaskControl_TimeRange?>(timeRange1, timeRange2));
        }
Ejemplo n.º 4
0
 private bool Splitable(TaskControl_TimeRange timeRange, DateTime splittime)
 {
     return(splittime > timeRange.DateTimeStart && splittime < timeRange.EndOfTimeRange(TimeUnit));
 }