public async Task <List <WebUserItem> > WebGetUsers(UserStatusEnum userType, HRMAccessFilter filter) { IOrderedEnumerable <AuthUserEntity> list; switch (userType) { //case UserStatusEnum.Initial: //break; case UserStatusEnum.Awaiting: list = (await SQLHelper.GetAuthUsers()) .Where(a => a.IsPending && IsValidUserForInteraction(filter, a)) .OrderBy(a => a.Data.CharacterName); break; case UserStatusEnum.Authed: list = (await SQLHelper.GetAuthUsers((int)userType)) .Where(a => !a.IsAltChar && IsValidUserForInteraction(filter, a)) .OrderBy(a => a.Data.CharacterName); break; case UserStatusEnum.Dumped: list = (await SQLHelper.GetAuthUsers((int)userType)) .Where(a => IsValidUserForInteraction(filter, a)).OrderBy(a => a.Data.CharacterName); break; case UserStatusEnum.Spying: list = (await SQLHelper.GetAuthUsers((int)userType)) .Where(a => IsValidUserForInteraction(filter, a)).OrderBy(a => a.Data.CharacterName); break; case UserStatusEnum.Alts: list = (await SQLHelper.GetAuthUsers((int)userType)) .Where(a => a.IsAltChar && IsValidUserForInteraction(filter, a)) .OrderBy(a => a.Data.CharacterName); break; default: throw new ArgumentOutOfRangeException(nameof(userType), userType, null); } return(list.Select(a => new WebUserItem { Id = a.CharacterId, CharacterName = a.Data.CharacterName, CorporationName = a.Data.CorporationName, AllianceName = a.Data.AllianceName, CorporationTicker = a.Data.CorporationTicker, AllianceTicker = a.Data.AllianceTicker, RegDate = a.CreateDate, IconUrl = $"https://imageserver.eveonline.com/Character/{a.CharacterId}_64.jpg" }).ToList()); }
private static async Task <string[]> GenerateDumpListHtml(string authCode, HRMAccessFilter accessFilter, long filterId, GenMemType genType) { var list = (await SQLHelper.GetAuthUsers((int)UserStatusEnum.Dumped)).Where(a => IsValidUserForInteraction(accessFilter, a)).OrderBy(a => a.Data.CharacterName); return(await GenerateActualMemberEntries(list, authCode, accessFilter, (int)UserStatusEnum.Dumped, filterId, genType)); }
private static async Task <string[]> GenerateActualMemberEntries(IEnumerable <AuthUserEntity> list, string authCode, HRMAccessFilter accessFilter, int authState, long filterId, GenMemType genType) { try { var corpFilters = new Dictionary <string, string>(); var allyFilters = new Dictionary <string, string>(); var tmpFilters = new List <long>(); var sb = new StringBuilder(); var inspectCondi = accessFilter.CanAccessUser(authState); var isDumpedList = authState == (int)UserStatusEnum.Dumped; var canSpy = accessFilter.CanInspectSpyUsers; list = filterId == 0 ? list : list.Where(a => a.Data.CorporationId == filterId || a.Data.AllianceId == filterId); var deleteTooltip = isDumpedList || !SettingsManager.Settings.HRMModule.UseDumpForMembers ? LM.Get("hrmDeleteAuthButtonTooltip") : LM.Get("hrmDumpAuthButtonTooltip"); foreach (var item in list) { if (genType == GenMemType.All || genType == GenMemType.Members) { var noEsi = !item.HasToken; bool invalidToken = false; if (item.HasToken && SettingsManager.Settings.HRMModule.ValidateTokensWhileLoading) { var token = await APIHelper.ESIAPI.RefreshToken(item.RefreshToken, SettingsManager.Settings.WebServerModule.CcpAppClientId, SettingsManager.Settings.WebServerModule.CcpAppSecret, $"From HRM | Char ID: {item.CharacterId} | Char name: {item.Data.CharacterName}"); invalidToken = token.Result == null; } var charUrl = !inspectCondi ? "#" : WebServerModule.GetHRMInspectURL(item.CharacterId, authCode); sb.Append($"<div class=\"row-fluid\" style=\"margin-top: 5px;align-items:center;\">"); if (noEsi) { sb.Append($"<i class=\"fas fa-2x fa-comment-slash solo_tooltip\" tooltip-title=\"{LM.Get("hrmTooltipNoESI")}\"></i>"); } else if (invalidToken) { sb.Append($"<i class=\"fas fa-2x fa-exclamation-triangle solo_tooltip\" tooltip-title=\"{LM.Get("hrmTooltipInvalidESIToken")}\" style=\"color: red;\"></i>"); } sb.Append($"<img src=\"https://imageserver.eveonline.com/Character/{item.CharacterId}_64.jpg\" style=\"width:64px;height:64px;\"/>"); sb.Append($@"<a class=""btn btn-outline-info btn-block"" href=""{charUrl}"">"); sb.Append( $@"<div class=""container""><div class=""row""><b>{item.Data.CharacterName}</b></div><div class=""row"">{item.Data.CorporationName} [{item.Data.CorporationTicker}]{(item.Data.AllianceId > 0 ? $" - {item.Data.AllianceName}[{item.Data.AllianceTicker}]" : null)}</div></div>"); sb.Append(@"</a>"); if (isDumpedList && canSpy && item.HasToken) { sb.Append( $@"<a class=""btn btn-outline-primary flex-content{(accessFilter.CanMoveToSpies ? null : " d-none")}"" href=""{WebServerModule.GetHRM_MoveToSpiesURL(item.CharacterId, authCode)}"" style=""width:64px;height:64px;"" data-toggle=""confirmation"" tooltip-title=""{LM.Get("hrmSpyButtonTooltip")}"" confirm-title=""{LM.Get("hrmMoveToSpiesConfirm")}"" data-singleton=""true"" data-popout=""true"" data-placement=""top"">"); sb.Append(@" <span class=""fas fa-user-secret fa-2x""></span>"); sb.Append(@"</a>"); } if (isDumpedList) { sb.Append( $@"<a class=""btn btn-outline-primary flex-content{(accessFilter.CanRestoreDumped ? null : " d-none")}"" href=""{WebServerModule.GetHRM_RestoreDumpedURL(item.CharacterId, authCode)}"" style=""width:64px;height:64px;"" data-toggle=""confirmation"" tooltip-title=""{LM.Get("hrmRestoreButtonTooltip")}"" confirm-title=""{LM.Get("hrmRestoreConfirm")}"" data-singleton=""true"" data-popout=""true"" data-placement=""top"">"); sb.Append(@" <span class=""fas fa-trash-restore fa-2x""></span>"); sb.Append(@"</a>"); } sb.Append( $@"<a class=""btn btn-outline-danger flex-content{(accessFilter.CanKickUsers ? null : " d-none")}"" href=""{WebServerModule.GetHRM_DeleteCharAuthURL(item.CharacterId, authCode)}"" style=""width:64px;height:64px;"" data-toggle=""confirmation"" tooltip-title=""{deleteTooltip}"" confirm-title=""{LM.Get("hrmButDeleteUserAuthConfirm")}"" data-singleton=""true"" data-popout=""true"">"); sb.Append(@" <span class=""fas fa-times-circle fa-2x""></span>"); sb.Append(@"</a>"); sb.Append($"</div>"); } if (genType == GenMemType.All || genType == GenMemType.Filter) { if (!tmpFilters.Contains(item.Data.CorporationId)) { tmpFilters.Add(item.Data.CorporationId); var name = $"{item.Data.CorporationName}[{item.Data.CorporationTicker}]"; var value = $@"<option value=""{item.Data.CorporationId}"">{name}</option>"; corpFilters.AddOnlyNew(name, value); } if (item.Data.AllianceId > 0 && !tmpFilters.Contains(item.Data.AllianceId)) { tmpFilters.Add(item.Data.AllianceId); var name = $"{item.Data.AllianceName}[{item.Data.AllianceTicker}]"; var value = $@"<option value=""{item.Data.CorporationId}"">{name}</option>"; allyFilters.AddOnlyNew(name, value); } } } var filterSb = new StringBuilder(); if (genType == GenMemType.All || genType == GenMemType.Filter) { filterSb.Append($@"<option value=""0"" selected>{LM.Get("hrmEverything")}</option>"); foreach (var filter in allyFilters.OrderBy(a => a.Key).Select(a => a.Value)) { filterSb.Append(filter); filterSb.Append(Environment.NewLine); } foreach (var filter in corpFilters.OrderBy(a => a.Key).Select(a => a.Value)) { filterSb.Append(filter); filterSb.Append(Environment.NewLine); } } return(new[] { sb.ToString(), filterSb.ToString() }); } catch (Exception ex) { await LogHelper.LogEx(nameof(GenerateActualMemberEntries), ex, LogCat.HRM); await LogHelper.LogError("There was problem generating users list!", LogCat.HRM); return(new string[] { null, null }); } }
public async Task <List <WebUserItem> > WebGetUsers(UserStatusEnum userType, HRMAccessFilter filter) { IOrderedEnumerable <AuthUserEntity> list; switch (userType) { //case UserStatusEnum.Initial: //break; case UserStatusEnum.Awaiting: list = (await SQLHelper.GetAuthUsers()) .Where(a => a.IsPending && IsValidUserForInteraction(filter, a)) .OrderBy(a => a.Data.CharacterName); break; case UserStatusEnum.Authed: list = (await SQLHelper.GetAuthUsers((int)userType)) .Where(a => !a.IsAltChar && IsValidUserForInteraction(filter, a)) .OrderBy(a => a.Data.CharacterName); break; case UserStatusEnum.Dumped: list = (await SQLHelper.GetAuthUsers((int)userType)) .Where(a => IsValidUserForInteraction(filter, a)).OrderBy(a => a.Data.CharacterName); break; case UserStatusEnum.Spying: list = (await SQLHelper.GetAuthUsers((int)userType)) .Where(a => IsValidUserForInteraction(filter, a)).OrderBy(a => a.Data.CharacterName); break; case UserStatusEnum.Alts: list = (await SQLHelper.GetAuthUsers((int)userType)) .Where(a => a.IsAltChar && IsValidUserForInteraction(filter, a)) .OrderBy(a => a.Data.CharacterName); break; default: throw new ArgumentOutOfRangeException(nameof(userType), userType, null); } var result = new List <WebUserItem>(); foreach (var a in list) { bool invalidToken = false; if (a.HasToken && SettingsManager.Settings.HRMModule.ValidateTokensWhileLoading) { var token = await APIHelper.ESIAPI.RefreshToken(a.RefreshToken, SettingsManager.Settings.WebServerModule.CcpAppClientId, SettingsManager.Settings.WebServerModule.CcpAppSecret, $"From HRM | Char ID: {a.CharacterId} | Char name: {a.Data.CharacterName}"); invalidToken = token.Result == null; } result.Add(new WebUserItem { Id = a.CharacterId, CharacterName = a.Data.CharacterName, CorporationName = a.Data.CorporationName, AllianceName = a.Data.AllianceName, CorporationTicker = a.Data.CorporationTicker, AllianceTicker = a.Data.AllianceTicker, RegDate = a.CreateDate, IconUrl = $"https://imageserver.eveonline.com/Character/{a.CharacterId}_64.jpg", HasNoToken = !a.HasToken, HasInvalidToken = invalidToken }); } return(result); }