Exemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public NextEventContract GetNextEvent(Guid id)
        {
            var db = new TimeTableDbContext();

            var currentEvent = db.Activities.OfType <Event>().SingleOrDefault(ev => ev.Id == id);

            var now = DateTime.Now.AddMinutes(-1);

            // Gib mir von dem Event das Ende des nächsten Termins in der Zukunft
            var currentDate = currentEvent.Dates.Where(d => d.End >= now).OrderBy(d => d.End).FirstOrDefault();

            // Gib mir jetzt das Event, mit dem zeitlich am nächst gelegenen Beginn zum aktuellen Datum
            var eventList =
                db.Activities.OfType <Event>()
                .Where(ev => ev.Published == true && ev.Id != id &&
                       ev.Dates.Any(d => d.End >= currentDate.Begin)).ToList();

            ActivityDate nextDate = null;

            foreach (var @event in eventList)
            {
                var testDate = @event.Dates.Where(d => d.End >= now).OrderBy(d => d.Begin).FirstOrDefault();

                if (nextDate == null)
                {
                    nextDate = testDate;
                }
                else
                {
                    if (testDate.Begin < nextDate.Begin)
                    {
                        nextDate = testDate;
                    }
                }
            }

            if (nextDate == null)
            {
                return(GetNextEvent());
            }


            var nextEvent = new NextEventContract
            {
                EventId     = nextDate.Activity.Id,
                Title       = nextDate.Activity.Name,
                Description = nextDate.Activity.Description,
                From        = nextDate.Begin,
                Location    = nextDate.Rooms.Any() ? nextDate.Rooms.First().Number : string.Empty,
            };

            return(nextEvent);
        }
Exemplo n.º 2
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public NextEventContract GetNextEvent()
        {
            var db = new TimeTableDbContext();

            var now = DateTime.Now;

            var eventList =
                db.Activities.OfType <Event>()
                .Where(ev => ev.Published == true && ev.Dates.Any(d => d.End >= now)).ToList();

            ActivityDate nextDate = null;

            foreach (var @event in eventList)
            {
                var testDate = @event.Dates.Where(d => d.End >= now).OrderBy(d => d.Begin).FirstOrDefault();

                if (nextDate == null)
                {
                    nextDate = testDate;
                }
                else
                {
                    if (testDate.Begin < nextDate.Begin)
                    {
                        nextDate = testDate;
                    }
                }
            }

            if (nextDate != null)
            {
                var nextEvent = new NextEventContract
                {
                    EventId     = nextDate.Activity.Id,
                    Title       = nextDate.Activity.Name,
                    Description = nextDate.Activity.Description,
                    From        = nextDate.Begin,
                    Location    = nextDate.Rooms.Any() ? nextDate.Rooms.First().Number : string.Empty,
                };
                return(nextEvent);
            }
            else
            {
                return(new NextEventContract
                {
                    Title = "Derzeit keine Veranstaltung",
                });
            }
        }