Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- foreach (Event iterEvent in eventsInfo)
- {
- // DateTime endPoint = iterEvent.starttime + iterEvent.timespan;
- // bool afterStart = iterEvent.endtime > start;
- // bool beforeEnd = iterEvent.starttime < end;
- if (iterEvent.endtime > start || iterEvent.starttime < end)
- {
- bool merge = true;
- bool consumed = false;
- foreach(Event tmpEvent in tmpEvents)
- {
- if(!consumed)
- {
- bool startOverStart = iterEvent.starttime > tmpEvent.starttime;
- bool endOverStart = iterEvent.endtime > tmpEvent.starttime;
- bool startOverEnd = iterEvent.starttime > tmpEvent.endtime;
- bool endOverEnd = iterEvent.endtime > tmpEvent.endtime;
- bool fullOverlap = !startOverStart && endOverEnd;
- // iterEvent ╔═══════════════════════════╗
- // ╚═══════════════════════════╝
- // tmpEvent ╔═══════════╗
- // ╚═══════════╝
- bool overlapAtStart = !startOverStart && endOverStart;
- // iterEvent ╔═══════════════
- // ╚═══════════════
- // tmpEvent ╔═══════════╗
- // ╚═══════════╝
- bool overlapAtEnd = !startOverEnd && endOverEnd;
- // iterEvent ═══════════════╗
- // ═══════════════╝
- // tmpEvent ╔═══════════╗
- // ╚═══════════╝
- bool insideNoOverlap = startOverStart && !endOverEnd;
- // tmpEvent ╔═══╗
- // ╚═══╝
- // tmpEvent ╔═══════════╗
- // ╚═══════════╝
- if( fullOverlap || overlapAtStart || overlapAtEnd || insideNoOverlap )
- {
- if(tmpEvent.starttime > iterEvent.starttime)
- {
- // iterEvent ╔═══════════════
- // ╚═══════════════
- // tmpEvent ╔ /____ ╔═══════════╗
- // ╚ \ ╚═══════════╝
- tmpEvent.setStart(iterEvent.starttime);
- }
- if(tmpEvent.endtime < iterEvent.endtime)
- {
- // iterEvent ═══════════════╗
- // ═══════════════╝
- // tmpEvent ═══════╗ ____\ ╗
- // ═══════╝ / ╝
- tmpEvent.setEnd(iterEvent.endtime);
- }
- merge = false;
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment