public async Task Test_AdministeredPenaltyResourceQueryHelper_QueryResource_TakesAppropriateCount() { var queryHelper = serviceProvider.GetRequiredService <AdministeredPenaltyResourceQueryHelper>(); var request = new ClientPaginationRequest { Count = 1, Before = DateTime.UtcNow, ClientId = 1 }; var result = await queryHelper.QueryResource(request); Assert.AreEqual(request.Count, result.RetrievedResultCount); }
public async Task Test_ReceivedPenaltyResourceQueryHelper_QueryResource_IncludesLinkedPenalty() { var queryHelper = serviceProvider.GetRequiredService <ReceivedPenaltyResourceQueryHelper>(); var request = new ClientPaginationRequest { Count = 3, Before = DateTime.UtcNow, ClientId = 3, }; var result = await queryHelper.QueryResource(request); Assert.AreEqual(request.Count, result.RetrievedResultCount); }
public async Task Test_AdministeredPenaltyResourceQueryHelper_QueryResource_OrdersDescending() { var queryHelper = serviceProvider.GetRequiredService <AdministeredPenaltyResourceQueryHelper>(); var request = new ClientPaginationRequest { Count = 2, Before = DateTime.UtcNow, ClientId = 1, Direction = SortDirection.Descending }; var result = await queryHelper.QueryResource(request); Assert.Less(result.Results.Last().When.ToFileTimeUtc(), result.Results.First().When.ToFileTimeUtc()); }
public async Task <IViewComponentResult> InvokeAsync(int clientId, int count, int offset, DateTime?startAt, MetaType?metaType) { var level = (EFClient.Permission)Enum.Parse(typeof(EFClient.Permission), UserClaimsPrincipal.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Role)?.Value ?? "User"); var request = new ClientPaginationRequest { ClientId = clientId, Count = count, Offset = offset, Before = startAt, }; var meta = await GetClientMeta(_metaService, metaType, level, request); ViewBag.Localization = SharedLibraryCore.Utilities.CurrentLocalization.LocalizationIndex; return(View("_List", meta)); }
public async Task <IEnumerable <IClientMeta> > GetRuntimeMeta(ClientPaginationRequest request) { var meta = new List <IClientMeta>(); foreach (var(type, actions) in _metaActions) { // information is not listed chronologically if (type != MetaType.Information) { var metaItems = await actions[0](request); meta.AddRange(metaItems); } } return(meta.OrderByDescending(_meta => _meta.When) .Take(request.Count) .ToList()); }
public async Task <IActionResult> Meta(int id, int count, int offset, long?startAt, MetaType?metaFilterType) { var request = new ClientPaginationRequest { ClientId = id, Count = count, Offset = offset, Before = DateTime.FromFileTimeUtc(startAt ?? DateTime.UtcNow.ToFileTimeUtc()) }; var meta = await ProfileMetaListViewComponent.GetClientMeta(_metaService, metaFilterType, Client.Level, request); if (meta.Count() == 0) { return(Ok()); } return(View("Components/ProfileMetaList/_List", meta)); }
public async Task <IEnumerable <T> > GetRuntimeMeta <T>(ClientPaginationRequest request, MetaType metaType) where T : IClientMeta { IEnumerable <T> meta; if (metaType == MetaType.Information) { var allMeta = new List <T>(); foreach (var individualMetaRegistration in _metaActions[metaType]) { allMeta.AddRange(await individualMetaRegistration(request)); } return(ProcessInformationMeta(allMeta)); } else { meta = await _metaActions[metaType][0](request) as IEnumerable <T>; } return(meta); }
private async Task <IEnumerable <InformationResponse> > GetProfileMeta(ClientPaginationRequest request) { var metaList = new List <InformationResponse>(); var lastMapMeta = await _metaService.GetPersistentMeta("LastMapPlayed", new EFClient() { ClientId = request.ClientId }); if (lastMapMeta != null) { metaList.Add(new InformationResponse() { ClientId = request.ClientId, MetaId = lastMapMeta.MetaId, Key = Utilities.CurrentLocalization.LocalizationIndex["WEBFRONT_CLIENT_META_LAST_MAP"], Value = lastMapMeta.Value, ShouldDisplay = true, Type = MetaType.Information, Column = 1, Order = 6 }); } var lastServerMeta = await _metaService.GetPersistentMeta("LastServerPlayed", new EFClient() { ClientId = request.ClientId }); if (lastServerMeta != null) { metaList.Add(new InformationResponse() { ClientId = request.ClientId, MetaId = lastServerMeta.MetaId, Key = Utilities.CurrentLocalization.LocalizationIndex["WEBFRONT_CLIENT_META_LAST_SERVER"], Value = lastServerMeta.Value, ShouldDisplay = true, Type = MetaType.Information, Column = 0, Order = 6 }); } var client = await _clientEntityService.Get(request.ClientId); if (client == null) { _logger.LogWarning("No client found with id {clientId} when generating profile meta", request.ClientId); return(metaList); } metaList.Add(new InformationResponse() { ClientId = client.ClientId, Key = _transLookup["WEBFRONT_PROFILE_META_PLAY_TIME"], Value = TimeSpan.FromHours(client.TotalConnectionTime / 3600.0).HumanizeForCurrentCulture(), ShouldDisplay = true, Column = 1, Order = 0, Type = MetaType.Information }); metaList.Add(new InformationResponse() { ClientId = client.ClientId, Key = _transLookup["WEBFRONT_PROFILE_META_FIRST_SEEN"], Value = (DateTime.UtcNow - client.FirstConnection).HumanizeForCurrentCulture(), ShouldDisplay = true, Column = 1, Order = 1, Type = MetaType.Information }); metaList.Add(new InformationResponse() { ClientId = client.ClientId, Key = _transLookup["WEBFRONT_PROFILE_META_LAST_SEEN"], Value = (DateTime.UtcNow - client.LastConnection).HumanizeForCurrentCulture(), ShouldDisplay = true, Column = 1, Order = 2, Type = MetaType.Information }); metaList.Add(new InformationResponse() { ClientId = client.ClientId, Key = Utilities.CurrentLocalization.LocalizationIndex["WEBFRONT_CLIENT_META_CONNECTIONS"], Value = client.Connections.ToString("#,##0", new System.Globalization.CultureInfo(Utilities.CurrentLocalization.LocalizationName)), ShouldDisplay = true, Column = 1, Order = 3, Type = MetaType.Information }); metaList.Add(new InformationResponse() { ClientId = client.ClientId, Key = Utilities.CurrentLocalization.LocalizationIndex["WEBFRONT_CLIENT_META_MASKED"], Value = client.Masked ? Utilities.CurrentLocalization.LocalizationIndex["WEBFRONT_CLIENT_META_TRUE"] : Utilities.CurrentLocalization.LocalizationIndex["WEBFRONT_CLIENT_META_FALSE"], IsSensitive = true, Column = 1, Order = 4, Type = MetaType.Information }); return(metaList); }
private async Task <IEnumerable <ConnectionHistoryResponse> > GetConnectionHistoryMeta(ClientPaginationRequest request) { var connections = await _connectionHistoryHelper.QueryResource(request); return(connections.Results); }
private async Task <IEnumerable <UpdatedAliasResponse> > GetUpdatedAliasMeta(ClientPaginationRequest request) { var aliases = await _updatedAliasHelper.QueryResource(request); return(aliases.Results); }
private async Task <IEnumerable <AdministeredPenaltyResponse> > GetAdministeredPenaltiesMeta(ClientPaginationRequest request) { var penalties = await _administeredPenaltyHelper.QueryResource(request); return(penalties.Results); }
public static async Task <IEnumerable <IClientMeta> > GetClientMeta(IMetaService metaService, MetaType?metaType, EFClient.Permission level, ClientPaginationRequest request) { IEnumerable <IClientMeta> meta = null; if (metaType == null) // all types { meta = await metaService.GetRuntimeMeta(request); } else { switch (metaType) { case MetaType.Information: meta = await metaService.GetRuntimeMeta <InformationResponse>(request, metaType.Value); break; case MetaType.AliasUpdate: meta = await metaService.GetRuntimeMeta <UpdatedAliasResponse>(request, metaType.Value); break; case MetaType.ChatMessage: meta = await metaService.GetRuntimeMeta <MessageResponse>(request, metaType.Value); break; case MetaType.Penalized: meta = await metaService.GetRuntimeMeta <AdministeredPenaltyResponse>(request, metaType.Value); break; case MetaType.ReceivedPenalty: meta = await metaService.GetRuntimeMeta <ReceivedPenaltyResponse>(request, metaType.Value); break; default: break; } } if (level < EFClient.Permission.Trusted) { meta = meta.Where(_meta => !_meta.IsSensitive); } return(meta); }