コード例 #1
0
ファイル: LiveboardController.cs プロジェクト: mzaideel/MARS
        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);
        }
コード例 #2
0
ファイル: LiveboardController.cs プロジェクト: mzaideel/MARS
        // 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));
            }
        }
コード例 #3
0
ファイル: LiveboardController.cs プロジェクト: mzaideel/MARS
        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);
        }