Пример #1
0
        public async Task Configuration()
        {
            var config      = _epgpConfigurationService.GetConfiguration();
            var pageBuilder = new PageFormatBuilder()
                              .AddColumn("Configuration Property Key")
                              .AddColumn("Property Name")
                              .AddColumn("Value")
                              .AlternateRowColors();

            var properties = config.GetType().GetProperties()
                             .Where(pi => Attribute.IsDefined(pi, typeof(ConfigurationKeyAttribute)));

            foreach (var propertyInfo in properties)
            {
                var    key         = propertyInfo.GetCustomAttribute <ConfigurationKeyAttribute>().Key;
                var    name        = propertyInfo.Name;
                var    value       = propertyInfo.GetValue(config);
                string valueString = string.Empty;
                if (((int)value).ToString() != value.ToString())
                {
                    valueString = $" ({value.ToString()})";
                }
                pageBuilder.AddRow(new[] { key.ToString(), name, $"{(int)value}{valueString}" });
            }

            await _pageService.SendPages(Context.Channel, pageBuilder.Build());
        }
Пример #2
0
        public async Task Template()
        {
            var config = _epgpConfigurationService.GetConfiguration();

            if (!config.Templates.Any())
            {
                await ReplyAsync($"No raid templates are currently configured. Try !{GroupName} help");

                return;
            }
            var pageBuilder = new PageFormatBuilder()
                              .AddColumn("Template ID")
                              .AddColumn("EP Start Bonus")
                              .AddColumn("EP End Bonus")
                              .AddColumn("Duration")
                              .AlternateRowColors();

            foreach (var template in config.Templates)
            {
                pageBuilder.AddRow(new[]
                {
                    template.TemplateId,
                    $"{template.StartBonus} EP",
                    $"{template.EndBonus} EP",
                    TimeSpan.FromMinutes(template.RaidDurationMinutes).ToString("g")
                });
            }

            await _pageService.SendPages(Context.Channel, pageBuilder.Build());
        }
Пример #3
0
        public EpgpTransaction GetTransaction(EpgpAlias alias, int value, string memo, TransactionType transactionType)
        {
            var config       = _configurationService.GetConfiguration();
            var currencyType = transactionType.GetAttributeOfType <CurrencyAttribute>().Currency;
            int change;

            switch (currencyType)
            {
            case Currency.Ep:
                change = alias.EffortPoints + value < config.EpMinimum ? config.EpMinimum - alias.EffortPoints : value;
                break;

            case Currency.Gp:
                change = alias.GearPoints + value < config.GpMinimum ? config.GpMinimum - alias.GearPoints : value;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(new EpgpTransaction
            {
                Id = Guid.NewGuid(),
                AliasId = alias.Id,
                Memo = memo,
                TransactionDateTime = DateTime.UtcNow,
                TransactionType = transactionType,
                Value = change
            });
        }
Пример #4
0
        private void AliasAdded(object?sender, EpgpAlias e)
        {
            var config = _configurationService.GetConfiguration();
            var ep     = config.EpMinimum;
            var gp     = config.GpMinimum;

            Set(e.Name, ep, gp, "User initialization");
        }
Пример #5
0
        public async Task <EpgpRaid> CreateNew(string templateId)
        {
            var nexusCrystalData =
                await _buzzBotDbContext.LiveItemData.FirstOrDefaultAsync(itm => itm.ItemId == NexusCrystalId);

            var nexusCrystalPrice = nexusCrystalData?.MarketValue ?? 10000;
            //var cts = new CancellationTokenSource(TimeSpan.FromSeconds(1));

            //int nexusCrystalPrice;
            //try
            //{

            //    var nexusCrystalData = await _nexusHubClient.GetItem(NexusCrystalId, cts.Token);
            //    nexusCrystalPrice = nexusCrystalData?.Stats?.Current?.MarketValue ?? 100000;
            //}
            //catch (TaskCanceledException)
            //{
            //    nexusCrystalPrice = 100000;
            //}
            var template = _configurationService.GetConfiguration().Templates
                           .FirstOrDefault(t => t.TemplateId.Equals(templateId));

            if (template == null)
            {
                return(null);
            }
            var startTime = DateTime.UtcNow + TimeSpan.FromMinutes(template.SignUpDurationMinutes);

            //var startTimeEst = TimeZoneInfo.ConvertTimeFromUtc(startTime, tzi);
            return(new EpgpRaid
            {
                NexusCrystalValue = nexusCrystalPrice,
                StartBonus = template.StartBonus,
                EndBonus = template.EndBonus,
                Duration = TimeSpan.FromMinutes(template.RaidDurationMinutes),
                TimeBonusDuration = TimeSpan.FromMinutes(template.TimeBonusDurationMinutes),
                Capacity = template.RaidCapacity,
                StartTime = startTime,
                TimeBonus = template.TimeBonus
            });
        }