Пример #1
0
        private async void SubstractFlasks(List <Friendly> characters, int count, DateTime fightDate)
        {
            var googleSettings = _config.CurrentValue.GoogleSettings;
            var nerdRoster     = await _googleService.GetNerdsAsync();

            var curentValues = await _googleService.ReadDataAsync <FlaskModel>(googleSettings.FlaskData.ReportValuesAddres);

            var newMembersLastRow = (await _googleService.ReadCellAsync(googleSettings.NewMembers.ConfigLastRow)).GetInt();

            var newMembers = new List <Friendly>();

            foreach (var character in characters)
            {
                var raider = nerdRoster.FirstOrDefault(x => x.AllNicks.Contains(character.Name, StringComparer.InvariantCultureIgnoreCase));
                if (raider != null)
                {
                    if (raider.Handled)
                    {
                        continue;                // skip if already counted
                    }
                    var flaskData = curentValues.First(x => x.WowNick == raider.MainNick);

                    if (flaskData != null)
                    {
                        flaskData.FlaskCount -= count;
                    }
                    else
                    {
                        newMembers.Add(character);    // missing data
                    }
                    raider.Handled = true;
                }
                else
                {
                    newMembers.Add(character);
                }
            }

            var rangeToSave  = string.Format(googleSettings.FlaskData.ReportFlaskCountAddresTemplate, curentValues.Count + 1);
            var valuesToSave = curentValues.Select(x => x.FlaskCount).ToList();

            var newMembersRangeToSave  = string.Format(googleSettings.NewMembers.NewMembersAddresTemplate, newMembersLastRow, newMembersLastRow + newMembers.Count);
            var newMembersValuesToSave = newMembers.Select(x => new { fightDate = fightDate.ToString("yyyy-MM-dd"), x.Name, x.Server, x.Type }).ToList();

            await _googleService.WriteDataAsync(rangeToSave, valuesToSave);

            await _googleService.WriteDataAsync(newMembersRangeToSave, newMembersValuesToSave);

            await _googleService.WriteDataAsync(googleSettings.FlaskData.ReportSubstarctDateAddres, DateTime.Now.ToString(googleSettings.FlaskData.ReportDateFormat));
        }
Пример #2
0
        public async Task AllRegisteredNerds()
        {
            var nerds = await _googleService.GetNerdsAsync();

            var sb = new StringBuilder();

            sb.AppendLine("Zarejestrowani nerdzi to:".Decorate(Decorator.Underline_bold));

            var counter = 1;

            foreach (var nerd in nerds.OrderBy(x => x.MainNick))
            {
                var msg = $"{counter++.ToString().Decorate(Decorator.Bold)} {nerd.DiscordTag.Decorate(Decorator.Underline)}  ";
                msg = nerd.AllNicks.Aggregate(msg, (current, nick) => current + (nick.Decorate(Decorator.Inline_code) + " "));

                sb.AppendLine(msg);
            }

            foreach (var msg in sb.ToString().DiscordMessageSplit())
            {
                await Context.Channel.SendMessageAsync(msg);
            }
        }