Beispiel #1
0
        public async Task SetLogin(string login)
        {
            var loginCell = _config.CurrentValue.RaidbotsAccountData.LoginCellAddress;

            await _googleService.WriteDataAsync(loginCell, login);

            await Context.Channel.SendMessageAsync("Pomyślnie zaktualizowano login dla serwisu Raidbots");

            await Context.Message.DeleteAsync();
        }
        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));
        }