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)); }
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); } }