private static int CompareTimeSchedule(OneEvent k1, OneEvent k2) { int result = k1.TotalSeconds.CompareTo(k2.TotalSeconds); if (result == 0) { result = k1.EventSortKey.CompareTo(k2.EventSortKey); if (result == 0) { result = k1.GroupSortKey.CompareTo(k2.GroupSortKey); } } return(result); }
// GET: /Liveboard/Event/ public ActionResult Event(Guid meetId, Guid eventId, string groupId = null, int dayNo = 0) { using (MARS_Meet_dbEntities meetDb = new MARS_Meet_dbEntities()) { meetDb.Database.Log = s => MyLogger.Log("Event", s); mars_MMeet meet = (from m in meetDb.mars_MMeet where m.MeetId == meetId select m).SingleOrDefault(); if (meet == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } mars_MEventEntries query = (from e in meetDb.mars_MEventEntries where e.MeetId == meetId && e.EventEntryId == eventId select e).SingleOrDefault(); if (query == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } OneMeet oneMeet = createMeet(meet, Selection.OneEvent); oneMeet.CurrentGroupId = groupId; oneMeet.CurrentEventId = eventId; oneMeet.CurrentDay = dayNo; loadEvents(meetDb, oneMeet); if (query.LiveResults.IsNotNull()) { List <mars_MTeams> q = (from t in meetDb.mars_MTeams where t.MeetId == meetId select t).ToList(); OneEvent oneEvent = oneMeet.Events[0]; oneEvent.Staevne = XmlHelper <Staevne> .GetObject(query.LiveResults); Mars2Loader.AfterLoad(oneEvent.Staevne); oneEvent.BuildRecordList(); oneEvent.BuildStartList(q); oneEvent.BuildResultList(q); } return(View(oneMeet)); } }
private void loadEvents(MARS_Meet_dbEntities meetDb, OneMeet oneMeet) { var query = from ev in meetDb.mars_MEventEntries join gr in meetDb.mars_MGroups on new { ev.MeetId, ev.GroupId } equals new { gr.MeetId, gr.GroupId } where ev.MeetId == oneMeet.MeetId && ev.HeatGroupNo == 0 && (oneMeet.CurrentDay == 0 || ev.DayNo == oneMeet.CurrentDay) orderby gr.SortKey, ev.SortKey, ev.RoundNo select new { ev.EventEntryId, ev.GroupId, ev.EventId, ev.RoundNo, ev.NoOfRounds, ev.DayNo, ev.Seconds, ev.Text, ev.RoundText, ev.State, GroupText = gr.Text, GroupSortKey = gr.SortKey, EventSortKey = ev.SortKeyEventId }; oneMeet.Groups = new List <OneGroup>(); oneMeet.Events = new List <OneEvent>(); OneGroup currentGroup = null; foreach (var e in query) { if (currentGroup == null || currentGroup.GroupId != e.GroupId) { currentGroup = new OneGroup { GroupId = e.GroupId, GroupText = e.GroupText, SortKey = e.GroupSortKey, Events = new List <OneEvent>() }; oneMeet.Groups.Add(currentGroup); } OneEvent t = new OneEvent { Id = e.EventEntryId, EventId = e.EventId, GroupId = e.GroupId, EventText = e.Text, GroupText = e.GroupText, RoundText = e.RoundText, RoundNo = e.RoundNo, NoOfRounds = (int)e.NoOfRounds, Day = (int)e.DayNo, Seconds = (int)e.Seconds, State = e.State, GroupSortKey = e.GroupSortKey, EventSortKey = e.EventSortKey }; currentGroup.Events.Add(t); if (oneMeet.CurrentEventId == t.Id) { oneMeet.Events.Add(t); } else { if (oneMeet.CurrentEventId == Guid.Empty) { if (oneMeet.CurrentGroupId == null || oneMeet.CurrentGroupId == currentGroup.GroupId) { oneMeet.Events.Add(t); } } } } oneMeet.Events.Sort(CompareTimeSchedule); }