//using System.Collections.Generic; //using System.Linq; //using System.Threading.Tasks; //using Data.Models; //using Data.Models.Client; //using SharedLibraryCore; //using SharedLibraryCore.Commands; //using SharedLibraryCore.Configuration; //using SharedLibraryCore.Dtos; //using SharedLibraryCore.Interfaces; //namespace ClanTagRankCommands.Commands //{ // public class SetDonatorCommand : Command // { // private readonly IMetaServiceV2 _metaService; // public SetDonatorCommand(CommandConfiguration config, ITranslationLookup layout, IMetaServiceV2 metaService) : // base(config, layout) // { // Name = "SetDonator"; // Description = "Sets a player to Donator rank"; // Alias = "Donator"; // Permission = EFClient.Permission.Trusted; // RequiresTarget = true; // Arguments = new[] // { // new CommandArgument // { // Name = "Player", // Required = true // } // }; // _metaService = metaService; // } // public override async Task ExecuteAsync(GameEvent gameEvent) // { // var token = gameEvent.Owner.Manager.CancellationToken; // var availableTags = await _metaService.GetPersistentMetaValue>>(EFMeta.ClientTagNameV2, token); // var matchingTag = availableTags.FirstOrDefault(tag => tag.Value == "Donator".Trim()); // gameEvent.Target.Tag = matchingTag.Value; // await _metaService.SetPersistentMetaForLookupKey(EFMeta.ClientTagV2, EFMeta.ClientTagNameV2, matchingTag.Id, // gameEvent.Target.ClientId, token); // if (gameEvent.Target.Level < EFClient.Permission.Moderator) // { // gameEvent.Target.SetLevel(EFClient.Permission.Trusted, gameEvent.Origin); // } // gameEvent.Origin.Tell($"Set {gameEvent.Target.Name} to Donator"); // if (gameEvent.Target.IsIngame) // { // gameEvent.Target.Tell($"Your rank has been set to Donator!"); // } // else // { // var cmd = $"{Utilities.CommandPrefix}om {gameEvent.Target.ClientId} Your rank has been set to Donator!"; // var impersonatedCommandEvent = new GameEvent // { // Type = GameEvent.EventType.Command, // Origin = gameEvent.Origin, // ImpersonationOrigin = gameEvent.Origin, // Message = cmd, // Data = cmd, // Owner = gameEvent.Owner, // CorrelationId = gameEvent.CorrelationId // }; // gameEvent.Owner.Manager.AddEvent(impersonatedCommandEvent); // var result = await impersonatedCommandEvent.WaitAsync(Utilities.DefaultCommandTimeout, // gameEvent.Owner.Manager.CancellationToken); // await result.WaitAsync(Utilities.DefaultCommandTimeout, gameEvent.Owner.Manager.CancellationToken); // // remove the added command response // // todo: something weird happening making this change required // var responses = gameEvent.Owner.Manager.ProcessingEvents // .Where(ev => ev.Value.CorrelationId == impersonatedCommandEvent.CorrelationId) // .SelectMany(ev => ev.Value.Output) // .ToList(); // foreach (var output in responses) // await gameEvent.Origin.Tell(_translationLookup["COMMANDS_RUN_AS_SUCCESS"].FormatExt(output)) // .WaitAsync(); // } // } // } //}