コード例 #1
0
        async Task <dynamic> ShowPlayersAsync(DateConstraint dateConstraint, CancellationToken token)
        {
            var models = await CreateModelsAsync(dateConstraint);

            ViewBag.Date = dateConstraint;
            return(View["players.cshtml", models]);
        }
コード例 #2
0
        async Task <List <PlayerModel> > CreateModelsAsync(DateConstraint constraint)
        {
            const string PlayerQuery = @"
                select Player.* from Player
                inner join (
                    select TeamSwitch.PlayerId, max(date(TeamSwitch.Time)) as Time from TeamSwitch
                    group by TeamSwitch.PlayerId) LatestTeamSwitch on Player.Id = LatestTeamSwitch.PlayerId
                where LatestTeamSwitch.Time >= @Start and LatestTeamSwitch.Time < @End";

            IEnumerable <Player> players;

            if (constraint.Start == DateTime.MinValue && constraint.End == DateTime.MaxValue)
            {
                players = await DatabaseProvider.Connection.GetAllAsync <Player>();
            }
            else
            {
                players = await DatabaseProvider.Connection.QueryAsync <Player>(PlayerQuery, new { constraint.Start, constraint.End });
            }

            var models = new List <PlayerModel>();

            foreach (var player in players)
            {
                models.Add(await PlayerModel.CreateAsync(player, constraint));
            }
            return(models);
        }
コード例 #3
0
        private float ComputeRouteWeight(DateConstraint constraint, DateTime date, RouteSegment[] route)
        {
            const float maxPenality = 1.2f;

            float duration = (float)(route.Last().DateTo - route.First().DateFrom).TotalSeconds;

            // Changes count
            float changes = MathUtil.Clamp(MathUtil.Map(route.Length, 0, 4, 1, maxPenality), 1, maxPenality);

            // Priority to use trams
            float buses = MathUtil.Clamp(MathUtil.Map(route.Count(s => s.Line.Type != LineType.Tram), 0, 4, 1, maxPenality), 1, maxPenality);

            // Changes duration
            float changeDuration = Enumerable.Range(1, route.Length - 1).Select(i => route[i].DateFrom - route[i - 1].DateTo).Sum(d => (float)d.TotalSeconds);

            // Diff from asked
            float diff = 1;

            switch (constraint)
            {
            case DateConstraint.Now: diff = (float)MathUtil.Clamp(MathUtil.Map((route.First().DateFrom - date).TotalMinutes, 0, 15, 1, maxPenality), 1, maxPenality); break;

            case DateConstraint.From: diff = (float)MathUtil.Clamp(MathUtil.Map(Math.Abs((route.First().DateFrom - date).TotalMinutes), 0, 15, 1, maxPenality), 1, maxPenality); break;

            case DateConstraint.To: diff = (float)MathUtil.Clamp(MathUtil.Map(Math.Abs((route.Last().DateTo - date).TotalMinutes), 0, 15, 1, maxPenality), 1, maxPenality); break;
            }

            return((duration + changeDuration) * changes * buses * diff);
        }
コード例 #4
0
        public static IHtmlString GameLink(Game game, string cssClasses = null, DateConstraint dateConstraint = null)
        {
            string classesFragment = null;

            if (cssClasses != null)
            {
                classesFragment = $"class=\"{cssClasses}\"";
            }
            var markup = $"<a {classesFragment} href=\"{DateConstrainedLink($"{GameModule.BasePath}/{game.Id}", dateConstraint)}\">{game.Map}</a>";

            return(new NonEncodedHtmlString(markup));
        }
コード例 #5
0
ファイル: GamesModule.cs プロジェクト: rthome/ItsGoStats
        async Task <dynamic> ShowGamesAsync(DateConstraint dateConstraint, CancellationToken token)
        {
            var games = await QueryGamesAsync(dateConstraint);

            var models = new List <GameModel>();

            foreach (var game in games)
            {
                models.Add(await GameModel.CreateAsync(game));
            }

            ViewBag.Date = dateConstraint;
            return(View["games.cshtml", models]);
        }
コード例 #6
0
        public static string DateConstrainedLink(string baseLink, DateConstraint dateConstraint)
        {
            if (dateConstraint == null)
            {
                return(baseLink);
            }

            var joiner = string.Empty;

            if (!baseLink.EndsWith("/"))
            {
                joiner = "/";
            }

            return(baseLink + joiner + dateConstraint.UrlFragment);
        }
コード例 #7
0
        public PlayerModule()
            : base(BasePath)
        {
            async Task <PlayerModel> CreateModelAsync(string steamId, DateConstraint constraint)
            {
                var player = await DatabaseProvider.GetPlayerAsync(steamId);

                if (player == null)
                {
                    return(null);
                }

                var model = await PlayerModel.CreateAsync(player, constraint);

                return(model);
            }

            async Task <dynamic> ShowPlayerAsync(string steamId, DateConstraint dateConstraint, CancellationToken token)
            {
                var model = await CreateModelAsync(steamId, dateConstraint);

                if (model == null)
                {
                    return(HttpStatusCode.NotFound);
                }

                ViewBag.Date = dateConstraint;
                return(View[model]);
            }

            Get["/{SteamId}"] = parameters => Response.AsRedirect($"/Player/{parameters.SteamId}/Today");

            Get["/{SteamId}/{Date:dateform}", runAsync : true] = async(parameters, token) => await ShowPlayerAsync(parameters.SteamId, (DateConstraint)parameters.Date, token);

            Get["/{SteamId}/From/{StartDate}/To/{EndDate}", runAsync : true] = async(parameters, token) =>
            {
                if (DateConstraint.TryParse(parameters.StartDate, parameters.EndDate, out DateConstraint dateConstraint))
                {
                    return(await ShowPlayerAsync(parameters.SteamId, dateConstraint, token));
                }
                else
                {
                    return(HttpStatusCode.NotFound);
                }
            };
        }
コード例 #8
0
ファイル: GamesModule.cs プロジェクト: rthome/ItsGoStats
        public GamesModule()
            : base(BasePath)
        {
            Get["/"] = _ => Response.AsRedirect("/Games/Today");

            Get["/{Date:dateform}", runAsync : true] = async(parameters, token) => await ShowGamesAsync((DateConstraint)parameters.Date, token);

            Get["/From/{StartDate}/To/{EndDate}", runAsync : true] = async(parameters, token) =>
            {
                if (DateConstraint.TryParse(parameters.StartDate, parameters.EndDate, out DateConstraint dateConstraint))
                {
                    return(await ShowGamesAsync(dateConstraint, token));
                }
                else
                {
                    return(HttpStatusCode.NotFound);
                }
            };
        }
コード例 #9
0
ファイル: PlayerModel.cs プロジェクト: rthome/ItsGoStats
        public static async Task <PlayerModel> CreateAsync(Player player, DateConstraint constraint)
        {
            var parameters = new { player.Id, constraint.Start, constraint.End };
            var kills      = await DatabaseProvider.Connection.ExecuteScalarAsync <int>("select count(*) from Kill where Kill.KillerId = @Id and Kill.Time >= @Start and Kill.Time < @End", parameters);

            var deaths = await DatabaseProvider.Connection.ExecuteScalarAsync <int>("select count(*) from Kill where Kill.VictimId = @Id and Kill.Time >= @Start and Kill.Time < @End", parameters);

            var assists = await DatabaseProvider.Connection.ExecuteScalarAsync <int>("select count(*) from Assist where Assist.AssisterId = @Id and Assist.Time >= @Start and Assist.Time < @End", parameters);

            // TODO: Check player activity with team switches during the given time range
            var firstSeen = await DatabaseProvider.Connection.QueryFirstOrDefaultAsync <DateTime?>("select date(Time) from TeamSwitch where TeamSwitch.PlayerId = @Id order by TeamSwitch.Time asc limit 1", parameters);

            var lastSeen = await DatabaseProvider.Connection.QueryFirstOrDefaultAsync <DateTime?>("select date(Time) from TeamSwitch where TeamSwitch.PlayerId = @Id order by TeamSwitch.Time desc limit 1", parameters);

            return(new PlayerModel
            {
                Player = player,
                FirstSeen = firstSeen,
                LastSeen = lastSeen,
                Kills = kills,
                Deaths = deaths,
                Assists = assists,
            });
        }
コード例 #10
0
ファイル: FormatHelper.cs プロジェクト: rthome/ItsGoStats
        public static IHtmlString FormatTeam(IEnumerable <Player> players, Team team, DateConstraint dateConstraint = null)
        {
            string className = null;

            switch (team)
            {
            case Team.Terrorists:
                className = "terrorist";
                break;

            case Team.CounterTerrorists:
                className = "counter-terrorist";
                break;
            }

            var links    = players.Select(p => RoutingHelper.PlayerLink(p, className, dateConstraint));
            var linkList = string.Join("<br />", links.Select(l => l.ToHtmlString()));

            return(new NonEncodedHtmlString(linkList));
        }
コード例 #11
0
        public override bool ShowObject(string settingsXml)
        {
            XmlDocument xmlDocument = new XmlDocument();

            xmlDocument.LoadXml(settingsXml);

            int  dataSource     = 1;
            bool saveObjectType = false;
            bool manageSiblings = false;
            bool byUrl          = true;

            if (WidgetHost.ParentPageType == PageType.None)
            {
                if (WidgetHost.ParentObjectType == 1)
                {
                    dataSource = XmlHelper.GetElementValue(xmlDocument.DocumentElement, "DataSource", 3);
                }
                else if (WidgetHost.ParentObjectType == 19)
                {
                    dataSource = XmlHelper.GetElementValue(xmlDocument.DocumentElement, "DataSource", 0);
                }

                byUrl = XmlHelper.GetElementValue(xmlDocument.DocumentElement, "ByUrl", false);
            }
            else if (WidgetHost.ParentPageType == PageType.Overview || WidgetHost.ParentPageType == PageType.Homepage)
            {
                if (WidgetHost.ParentObjectType == 1)
                {
                    dataSource = XmlHelper.GetElementValue(xmlDocument.DocumentElement, "DataSource", 3);
                }
                else if (WidgetHost.ParentObjectType == 19)
                {
                    dataSource = XmlHelper.GetElementValue(xmlDocument.DocumentElement, "DataSource", 0);
                }
                byUrl = XmlHelper.GetElementValue(xmlDocument.DocumentElement, "ByUrl", true);
            }
            else if (WidgetHost.ParentPageType == PageType.Detail)
            {
                if (WidgetHost.ParentObjectType == 1)
                {
                    dataSource = XmlHelper.GetElementValue(xmlDocument.DocumentElement, "DataSource", 3);
                }
                else if (WidgetHost.ParentObjectType == 19)
                {
                    dataSource = XmlHelper.GetElementValue(xmlDocument.DocumentElement, "DataSource", 0);
                }
                else if (!string.IsNullOrEmpty(Request.QueryString["OID"]))
                {
                    dataSource = 4;
                }
                byUrl = XmlHelper.GetElementValue(xmlDocument.DocumentElement, "ByUrl", true);
            }
            else
            {
                dataSource = XmlHelper.GetElementValue(xmlDocument.DocumentElement, "DataSource", 1);
                byUrl      = XmlHelper.GetElementValue(xmlDocument.DocumentElement, "ByUrl", false);
            }

            string             objectType      = XmlHelper.GetElementValue(xmlDocument.DocumentElement, "ObjectType", "0");
            string             userId          = XmlHelper.GetElementValue(xmlDocument.DocumentElement, "UserId", string.Empty);
            string             communitId      = XmlHelper.GetElementValue(xmlDocument.DocumentElement, "CommunityId", string.Empty);
            int                pageSize        = XmlHelper.GetElementValue(xmlDocument.DocumentElement, "MaxNumber", 5);
            QuickSort          sortBy          = (QuickSort)XmlHelper.GetElementValue(xmlDocument.DocumentElement, "SortBy", (int)QuickSort.StartDate);
            QuickSortDirection sortDirection   = (QuickSortDirection)XmlHelper.GetElementValue(xmlDocument.DocumentElement, "SortDirection", (int)QuickSortDirection.Desc);
            bool               showPagerTop    = XmlHelper.GetElementValue(xmlDocument.DocumentElement, "ShowPagerTop", true);
            bool               showPagerBottom = XmlHelper.GetElementValue(xmlDocument.DocumentElement, "ShowPagerBottom", true);
            int                featured        = XmlHelper.GetElementValue(xmlDocument.DocumentElement, "Featured", 0);
            DateConstraint     dateConstraint  = (DateConstraint)Enum.Parse(typeof(DateConstraint), XmlHelper.GetElementValue(xmlDocument.DocumentElement, "DateConstraint", "None"));
            bool               renderHtml      = XmlHelper.GetElementValue(xmlDocument.DocumentElement, "RenderHtml", false);

            if (objectType == "0")
            {
                if (string.IsNullOrEmpty(Request.QueryString["OT"]))
                {
                    return(false);
                }
                else
                {
                    objectType = Request.QueryString["OT"];
                }
            }
            else
            {
                saveObjectType = true;
            }

            string template = "SmallOutputObject.ascx";
            string repeater = "DataObjectLists.ascx";

            if (WidgetHost.OutputTemplate != null)
            {
                if (!string.IsNullOrEmpty(WidgetHost.OutputTemplate.OutputTemplateControl))
                {
                    template = WidgetHost.OutputTemplate.OutputTemplateControl;
                }

                if (!string.IsNullOrEmpty(WidgetHost.OutputTemplate.RepeaterControl))
                {
                    repeater = WidgetHost.OutputTemplate.RepeaterControl;
                }
            }

            QuickParameters paras = new QuickParameters();

            if (WidgetHost.ParentObjectType == 1) // Community
            {
                paras.QuerySourceType = QuerySourceType.Community;
            }
            else if (WidgetHost.ParentObjectType == 19)  // Profile
            {
                paras.QuerySourceType = QuerySourceType.Profile;
            }
            else if (WidgetHost.ParentObjectType == 20) // Page
            {
                paras.QuerySourceType = QuerySourceType.Page;
            }
            else
            {
                paras.QuerySourceType = QuerySourceType.MyContent;
            }

            if (XmlHelper.GetElementValue(xmlDocument.DocumentElement, "Anonymous", false))
            {
                paras.Udc = UserDataContext.GetUserDataContext(Constants.ANONYMOUS_USERNAME);
            }
            else
            {
                paras.Udc = UserDataContext.GetUserDataContext();
            }

            paras.ObjectType = Helper.GetObjectTypeNumericID(objectType);

            if (featured > 0)
            {
                paras.Featured = featured;
            }

            if (dataSource != 4)
            {
                paras.Tags1 = QuickParameters.GetDelimitedTagIds(XmlHelper.GetElementValue(xmlDocument.DocumentElement, "TagList1", string.Empty), Constants.TAG_DELIMITER);
                paras.Tags2 = QuickParameters.GetDelimitedTagIds(XmlHelper.GetElementValue(xmlDocument.DocumentElement, "TagList2", string.Empty), Constants.TAG_DELIMITER);
                paras.Tags3 = QuickParameters.GetDelimitedTagIds(XmlHelper.GetElementValue(xmlDocument.DocumentElement, "TagList3", string.Empty), Constants.TAG_DELIMITER);
            }

            if (dataSource == 0)
            {
                DataObject profil = DataObject.Load <DataObject>(this.WidgetHost.ParentCommunityID);
                paras.UserID = profil.UserID;
                byUrl        = false;
            }
            else if (!string.IsNullOrEmpty(userId))
            {
                paras.UserID = userId.ToGuid();
            }
            else if (dataSource == 2)
            {
                paras.Communities = communitId.Replace(",", "|");
            }
            else if (dataSource == 3)
            {
                paras.CommunityID = this.WidgetHost.ParentCommunityID;
            }
            else if (dataSource == 4)
            {
                DataObject detail = DataObject.Load <DataObject>(Request.QueryString["OID"].ToGuid());
                paras.CommunityID = detail.CommunityID;
                //paras.ExcludeObjectIds = detail.ObjectID.ToString();
                byUrl          = false;
                manageSiblings = true;
            }
            else if (dataSource != 1)
            {
                return(false);
            }

            if ((!showPagerTop && !showPagerBottom) || sortBy == QuickSort.Random)
            {
                paras.Amount        = pageSize;
                paras.DisablePaging = true;
                if (sortBy == QuickSort.Random)
                {
                    paras.IgnoreCache = true;
                }
            }
            else
            {
                paras.PageNumber = 1;
                paras.PageSize   = pageSize;
            }

            paras.SortBy    = sortBy;
            paras.Direction = sortDirection;

            paras.ShowState = ObjectShowState.Published;

            switch (dateConstraint)
            {
            case DateConstraint.UntilYesterday:
                paras.FromStartDate    = SqlDateTime.MinValue.Value;
                paras.ToStartDate      = DateTime.Today.GetEndOfDay() - new TimeSpan(1, 0, 0, 0);
                paras.FromEndDate      = SqlDateTime.MinValue.Value;
                paras.ToEndDate        = DateTime.Today.GetEndOfDay() - new TimeSpan(1, 0, 0, 0);
                paras.DateQueryMethode = QuickDateQueryMethode.BetweenStartRangeEndRange;
                break;

            case DateConstraint.UntilToday:
                paras.FromStartDate    = SqlDateTime.MinValue.Value;
                paras.ToStartDate      = DateTime.Today.GetEndOfDay();
                paras.FromEndDate      = SqlDateTime.MinValue.Value;
                paras.ToEndDate        = DateTime.Today.GetEndOfDay();
                paras.DateQueryMethode = QuickDateQueryMethode.BetweenStartRangeEndRange;
                break;

            case DateConstraint.Today:
                paras.FromStartDate    = SqlDateTime.MinValue.Value;
                paras.ToStartDate      = DateTime.Today.GetEndOfDay();
                paras.FromEndDate      = DateTime.Today.GetStartOfDay();
                paras.ToEndDate        = SqlDateTime.MaxValue.Value;
                paras.DateQueryMethode = QuickDateQueryMethode.BetweenStartRangeEndRange;
                break;

            case DateConstraint.FromToday:
                paras.FromStartDate    = DateTime.Today.GetStartOfDay();
                paras.ToStartDate      = SqlDateTime.MaxValue.Value;
                paras.FromEndDate      = DateTime.Today.GetStartOfDay();
                paras.ToEndDate        = SqlDateTime.MaxValue.Value;
                paras.DateQueryMethode = QuickDateQueryMethode.BetweenStartRangeEndRange;
                break;

            case DateConstraint.FromTomorrow:
                paras.FromStartDate    = DateTime.Today.GetStartOfDay() + new TimeSpan(1, 0, 0, 0);
                paras.ToStartDate      = SqlDateTime.MaxValue.Value;
                paras.FromEndDate      = DateTime.Today.GetStartOfDay() + new TimeSpan(1, 0, 0, 0);
                paras.ToEndDate        = SqlDateTime.MaxValue.Value;
                paras.DateQueryMethode = QuickDateQueryMethode.BetweenStartRangeEndRange;
                break;
            }

            if (byUrl)
            {
                paras.FromNameValueCollection(Request.QueryString);
                if (saveObjectType)
                {
                    paras.ObjectType = Helper.GetObjectTypeNumericID(objectType);
                }
            }

            if (paras.SortBy != QuickSort.Title && paras.SortBySecond == QuickSort.NotSorted)
            {
                paras.SortBySecond    = QuickSort.Title;
                paras.DirectionSecond = QuickSortDirection.Asc;
            }

            IRepeater overview = CreateControl(paras, showPagerTop, showPagerBottom, repeater, template, manageSiblings, renderHtml);

            if (overview != null)
            {
                this.Ph.Controls.Add((Control)overview);
                return(overview.HasContent);
            }

            return(false);
        }
コード例 #12
0
ファイル: GamesModule.cs プロジェクト: rthome/ItsGoStats
        async Task <List <Game> > QueryGamesAsync(DateConstraint constraint)
        {
            var games = await DatabaseProvider.Connection.QueryAsync <Game>("select * from Game where Game.Time >= @Start and Game.Time < @End", new { constraint.Start, constraint.End });

            return(games.AsList());
        }
コード例 #13
0
        public static IHtmlString PlayerLink(Player player, string cssClasses = null, DateConstraint dateConstraint = null)
        {
            string classesFragment = null;

            if (cssClasses != null)
            {
                classesFragment = $"class=\"{cssClasses}\"";
            }
            var markup = $"<a {classesFragment} href=\"{DateConstrainedLink($"{PlayerModule.BasePath}/{player.SteamId}", dateConstraint)}\">{player.Name}</a>";

            return(new NonEncodedHtmlString(markup));
        }
コード例 #14
0
        private async Task Search(Stop from, Stop to, DateConstraint constraint, DateTime date)
        {
            swipeRefresh?.Post(() => swipeRefresh.Refreshing = true);

            await Task.Run(() =>
            {
                routeSegments.Clear();

                // Build a new route searcher
                RouteSearch routeSearch             = new RouteSearch();
                routeSearch.Settings.AllowWalkLinks = false;
                routeSearch.Prepare(TramUrWayApplication.Lines);

                // Start enumeration
                DateTime end = DateTime.Now + TimeSpan.FromSeconds(5);

                IEnumerable <RouteLink[]> routesEnumerable = routeSearch.FindRoutes(from, to);
                IEnumerator <RouteLink[]> routesEnumerator = routesEnumerable.GetEnumerator();

                while (true)
                {
                    Task <bool> moveNextTask = Task.Run(() => routesEnumerator.MoveNext());

                    // Exit if timed out
                    TimeSpan timeout = end - DateTime.Now;
                    if (!moveNextTask.Wait(timeout))
                    {
                        break;
                    }

                    // Exit if enumeration finished
                    if (moveNextTask.Result == false)
                    {
                        break;
                    }

                    RouteLink[] route  = routesEnumerator.Current;
                    TimeSpan tolerance = TimeSpan.FromMinutes(15);

                    // We found a route, try to find times
                    if (constraint == DateConstraint.Now)
                    {
                        routeSegments.AddRange(routeSearch.SimulateTimeStepsFrom(route, date, TimeSpan.Zero, tolerance));
                    }
                    else if (constraint == DateConstraint.From)
                    {
                        routeSegments.AddRange(routeSearch.SimulateTimeStepsFrom(route, date, tolerance, tolerance));
                    }
                    else if (constraint == DateConstraint.To)
                    {
                        throw new NotImplementedException();
                    }
                    else if (constraint == DateConstraint.Last)
                    {
                        throw new NotImplementedException();
                    }

                    // Filter out too long times
                    TimeSpan maxTime = TimeSpan.FromMinutes(0.05 * (to.Position - from.Position));

                    routeSegments.RemoveAll(r => r.Last().DateTo - r.First().DateFrom > maxTime);
                    routeSegments.Sort((r1, r2) => (int)(ComputeRouteWeight(constraint, date, r1) - ComputeRouteWeight(constraint, date, r2)));

                    // Group routes by from and to time steps
                    RouteSegment[][] routeSegmentsCopy = routeSegments.GroupBy(r => GetRouteHash(r)).Select(g => g.First()).ToArray();
                    RunOnUiThread(() => routeSegmentAdapter.RouteSegments = routeSegmentsCopy);
                }

                RunOnUiThread(() =>
                {
                    noResultsView.Visibility = routeSegments.Count == 0 ? ViewStates.Visible : ViewStates.Gone;
                    recyclerView.Visibility  = routeSegments.Count > 0 ? ViewStates.Visible : ViewStates.Gone;

                    swipeRefresh?.PostDelayed(() => swipeRefresh.Refreshing = false, 200);
                });
            });
        }
コード例 #15
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string queryString = Helper.GetFilteredQueryString(Request.QueryString, new List <string> {
                "DC", "PN", "FE"
            }, true);

            lnkToday1.NavigateUrl         = string.Format("{0}?{1}&DC={2}&FE=1", Request.GetRawPath(), queryString, DateConstraint.Today);
            lnkToday1.ID                  = null;
            lnkToday2.NavigateUrl         = string.Format("{0}?{1}&DC={2}&FE=2", Request.GetRawPath(), queryString, DateConstraint.Today);
            lnkToday2.ID                  = null;
            lnkFromTomorrow.NavigateUrl   = string.Format("{0}?{1}&DC={2}", Request.GetRawPath(), queryString, DateConstraint.FromTomorrow);
            lnkFromTomorrow.ID            = null;
            lnkUntilYesterday.NavigateUrl = string.Format("{0}?{1}&DC={2}", Request.GetRawPath(), queryString, DateConstraint.UntilYesterday);
            lnkUntilYesterday.ID          = null;

            pager.PageSize = pageSize;

            quickParameters           = new QuickParameters();
            quickParameters.SortBy    = QuickSort.StartDate;
            quickParameters.Direction = QuickSortDirection.Asc;
            quickParameters.FromNameValueCollection(Request.QueryString);
            quickParameters.PageSize  = pageSize;
            quickParameters.Udc       = UserDataContext.GetUserDataContext();
            quickParameters.ShowState = ObjectShowState.Published;

            DateConstraint dateConstraint = (DateConstraint)Enum.Parse(typeof(DateConstraint), Request.QueryString["DC"] ?? "Today");

            switch (dateConstraint)
            {
            case DateConstraint.UntilYesterday:
                quickParameters.FromStartDate    = SqlDateTime.MinValue.Value;
                quickParameters.ToStartDate      = DateTime.Today.GetEndOfDay() - new TimeSpan(1, 0, 0, 0);
                quickParameters.FromEndDate      = SqlDateTime.MinValue.Value;
                quickParameters.ToEndDate        = DateTime.Today.GetEndOfDay() - new TimeSpan(1, 0, 0, 0);
                quickParameters.DateQueryMethode = QuickDateQueryMethode.BetweenStartRangeEndRange;
                quickParameters.Direction        = QuickSortDirection.Desc;
                LitTitle.Text           = language.GetString("TitleEvent" + DateConstraint.UntilYesterday);
                lnkToday1.Visible       = true;
                lnkToday2.Visible       = true;
                lnkFromTomorrow.Visible = true;
                break;

            case DateConstraint.Today:
                quickParameters.FromStartDate    = SqlDateTime.MinValue.Value;
                quickParameters.ToStartDate      = DateTime.Today.GetEndOfDay();
                quickParameters.FromEndDate      = DateTime.Today.GetStartOfDay();
                quickParameters.ToEndDate        = SqlDateTime.MaxValue.Value;
                quickParameters.DateQueryMethode = QuickDateQueryMethode.BetweenStartRangeEndRange;
                if (quickParameters.Featured == 1 || !quickParameters.Featured.HasValue)
                {
                    quickParameters.Featured = 1;
                    LitTitle.Text            = language.GetString("TitleEvent" + DateConstraint.Today);
                    lnkToday2.Visible        = true;
                }
                else
                {
                    LitTitle.Text     = language.GetString("TitleEventTodayMultiDay");
                    lnkToday1.Visible = true;
                }
                lnkUntilYesterday.Visible = true;
                lnkFromTomorrow.Visible   = true;
                break;

            case DateConstraint.FromTomorrow:
                quickParameters.FromStartDate    = DateTime.Today.GetStartOfDay() + new TimeSpan(1, 0, 0, 0);
                quickParameters.ToStartDate      = SqlDateTime.MaxValue.Value;
                quickParameters.FromEndDate      = DateTime.Today.GetStartOfDay() + new TimeSpan(1, 0, 0, 0);
                quickParameters.ToEndDate        = SqlDateTime.MaxValue.Value;
                quickParameters.DateQueryMethode = QuickDateQueryMethode.BetweenStartRangeEndRange;
                LitTitle.Text             = language.GetString("TitleEvent" + DateConstraint.FromTomorrow);
                lnkToday1.Visible         = true;
                lnkToday2.Visible         = true;
                lnkUntilYesterday.Visible = true;
                break;
            }

            currentPage = quickParameters.PageNumber;

            if (Request.IsAuthenticated)
            {
                lnkCreate.Visible     = true;
                lnkCreate.NavigateUrl = "/M/Admin/EditEvent.aspx";
                lnkCreate.ID          = null;
            }

            Reload();
        }