Exemple #1
0
        static public CalendarEvent InstantiateRepeatedCandidate(EventID EventIDEntry, string EventName, TimeSpan Event_Duration, DateTimeOffset EventStart, DateTimeOffset EventDeadline, DateTimeOffset OriginalStartData, TimeSpan EventPrepTime, TimeSpan Event_PreDeadline, bool EventRigidFlag, Repetition EventRepetitionEntry, int EventSplit, Location_Elements EventLocation, bool enabledFlag, EventDisplay UiData, MiscData NoteData, bool CompletionFlag, long RepeatIndex, ConcurrentDictionary <DateTimeOffset, CalendarEvent> OrginalStartToCalendarEvent, CalendarEvent RepeatRootData)
        {
            DB_CalendarEventFly RetValue = new DB_CalendarEventFly();

            RetValue.EventName          = EventName;
            RetValue.StartDateTime      = EventStart;
            RetValue.EndDateTime        = EventDeadline;
            RetValue.EventDuration      = Event_Duration;
            RetValue.Enabled            = enabledFlag;
            RetValue.EventRepetition    = EventRepetitionEntry;
            RetValue.PrepTime           = EventPrepTime;
            RetValue.EventPreDeadline   = Event_PreDeadline;
            RetValue.RigidSchedule      = EventRigidFlag;
            RetValue.LocationInfo       = EventLocation;
            RetValue.UniqueID           = EventIDEntry;
            RetValue.UiParams           = UiData;
            RetValue.DataBlob           = NoteData;
            RetValue.Complete           = CompletionFlag;
            RetValue.RepetitionSequence = RepeatIndex;
            RetValue.OriginalStart      = OriginalStartData;
            RetValue.Splits             = EventSplit;
            RetValue.TimePerSplit       = TimeSpan.FromTicks(((RetValue.EventDuration.Ticks / RetValue.Splits)));
            RetValue.FromRepeatEvent    = true;

            /*
             * if (RetValue.EventRepetition.Enable)
             * {
             *  RetValue.Splits = EventSplit;
             *  RetValue.TimePerSplit = new TimeSpan();
             * }
             * else
             * {
             *  RetValue.Splits = EventSplit;
             * }
             */
            RetValue.SubEvents = new Dictionary <EventID, SubCalendarEvent>();

            if (!RetValue.EventRepetition.Enable)
            {
                for (int i = 0; i < RetValue.Splits; i++)
                {
                    //(TimeSpan Event_Duration, DateTimeOffset EventStart, DateTimeOffset EventDeadline, TimeSpan EventPrepTime, string myParentID, bool Rigid, Location EventLocation =null, TimeLine RangeOfSubCalEvent = null)
                    EventID          SubEventID     = EventID.GenerateSubCalendarEvent(RetValue.UniqueID.ToString(), i + 1);
                    SubCalendarEvent newSubCalEvent = new DB_SubCalendarEventFly(SubEventID, RetValue.EventName, (RetValue.EndDateTime - RetValue.TimePerSplit), RetValue.EndDateTime, RetValue.Priority, RetValue.myLocation, RetValue.OriginalStart, RetValue.Preparation, RetValue.PreDeadline, RetValue.Rigid, RetValue.UIParam.createCopy(), RetValue.Notes.createCopy(), false, RetValue.ProcrastinationInfo, RetValue.NowInfo, RetValue.RangeTimeLine, true, false, true, RetValue.UserIDs, i);

                    //SubCalendarEvent newSubCalEvent = new SubCalendarEvent(RetValue.TimePerSplit, (RetValue.EndDateTime - RetValue.TimePerSplit), RetValue.End, new TimeSpan(), OriginalStartData, RetValue.UniqueID.ToString(), RetValue.RigidSchedule, RetValue.isEnabled, RetValue.UiParams, RetValue.Notes, RetValue.Complete, i+1, EventLocation, RetValue.RangeTimeLine);
                    RetValue.SubEvents.Add(newSubCalEvent.SubEvent_ID, newSubCalEvent);
                }
            }
            RetValue.EventSequence = new TimeLine(RetValue.StartDateTime, RetValue.EndDateTime);
            RetValue.RepeatRoot    = RepeatRootData;
            RetValue.UpdateLocationMatrix(RetValue.LocationInfo);


            while (!OrginalStartToCalendarEvent.TryAdd(OriginalStartData, RetValue))
            {
                Thread.Sleep(10);
            }


            return(RetValue);
        }
Exemple #2
0
        public void UpdateModifiable(IEnumerable <SubCalendarEvent> Modifiables)
        {
            foreach (SubCalendarEvent eachSubCalendarEvent in Modifiables)
            {
                //SubCalendarEvent mySubCalEvent=getSubEvent(eachSubCalendarEvent.SubEvent_ID);
                //mySubCalEvent.UpdateThis(eachSubCalendarEvent);
                //DeviatingSubEvents.Add(eachSubCalendarEvent.ID, eachSubCalendarEvent);
                DB_CalendarEventFly RefCalEvent = (DB_CalendarEventFly)getCalEventByOrginalStart(eachSubCalendarEvent.OrginalStartInfo);


                if (eachSubCalendarEvent.isComplete)
                {
                    if ((RefCalEvent.CompletedSofar < (RefCalEvent.Splits - RefCalEvent.DeletedSofar)))
                    {
                        DB_SubCalendarEventFly myDB_SubCalendarEventFly = (DB_SubCalendarEventFly)RefCalEvent.ActiveSubEvents.Last();
                        myDB_SubCalendarEventFly.InitializeCompleted(eachSubCalendarEvent);
                        try
                        {
                            RefCalEvent.updateDeviationList(1, myDB_SubCalendarEventFly);
                            ++RefCalEvent.CompletedSofar;
                            RefCalEvent.CompletedCount = RefCalEvent.CompletedSofar;
                            continue;
                        }
                        catch (Exception e)
                        {
                        }
                    }
                }

                if (!eachSubCalendarEvent.isEnabled)
                {
                    if ((RefCalEvent.DeletedSofar < (RefCalEvent.Splits - RefCalEvent.CompletedSofar)))
                    {
                        DB_SubCalendarEventFly myDB_SubCalendarEventFly = (DB_SubCalendarEventFly)RefCalEvent.ActiveSubEvents.Last();
                        myDB_SubCalendarEventFly.InitializeDisabled(eachSubCalendarEvent);
                        try
                        {
                            RefCalEvent.updateDeviationList(0, myDB_SubCalendarEventFly);
                            ++RefCalEvent.DeletedSofar;
                            RefCalEvent.DeletedCount = RefCalEvent.DeletedSofar;
                            continue;
                        }
                        catch (Exception e)
                        {
                        }
                    }
                }

                if (eachSubCalendarEvent.NowInfo.isInitialized)
                {
                    SubCalendarEvent[] AllActives = RefCalEvent.ActiveSubEvents;
                    if (AllActives.Length > 0)
                    {
                        try
                        {
                            DB_SubCalendarEventFly myDB_SubCalendarEventFly = (DB_SubCalendarEventFly)AllActives.Last();
                            myDB_SubCalendarEventFly.InitializeNowProfile(eachSubCalendarEvent);
                            RefCalEvent.updateDeviationList(2, myDB_SubCalendarEventFly);
                            continue;
                        }
                        catch (Exception e)
                        {
                        }
                    }
                }
            }
        }