Beispiel #1
0
        public override XLWorkbook CreateWorkbook(IPlaylogRecordTable <IPlaylogRecordTableUnit> data)
        {
            var workbook = new XLWorkbook();

            ApplyReocrd(workbook.Worksheets.Add("Playlog"), data);

            return(workbook);
        }
Beispiel #2
0
        public override PlaylogRecordTable CreateJsonData(IPlaylogRecordTable <IPlaylogRecordTableUnit> data)
        {
            var jsonObject = new PlaylogRecordTable();

            foreach (var unit in data.GetTableUnits())
            {
                var recordUnit = new PlaylogRecordTableUnit();
                recordUnit.Set(unit);
                jsonObject.TableUnits.Add(recordUnit);
            }

            return(jsonObject);
        }
Beispiel #3
0
        public override string CreateCsv(IPlaylogRecordTable <IHistoryUnit> data)
        {
            var builder = new StringBuilder();

            Append(builder, "No");
            Append(builder, "ID");
            Append(builder, "楽曲名");
            Append(builder, "ジャンル");
            Append(builder, "難易度");
            Append(builder, "スコア");
            Append(builder, "ランク");
            Append(builder, "譜面定数");
            Append(builder, "プレイレート");
            Append(builder, "NEW RECORD");
            Append(builder, "CLEAR");
            Append(builder, "コンボ");
            Append(builder, "チェイン");
            Append(builder, "トラック");
            Append(builder, "プレイ日時");
            Append(builder, "表示レート");
            Append(builder, "ベスト枠", true);

            foreach (var unit in data.GetTableUnits())
            {
                if (unit == null)
                {
                    continue;
                }

                Append(builder, unit.Number);
                Append(builder, unit.Id);
                Append(builder, unit.Name);
                Append(builder, unit.Genre);
                Append(builder, Utility.ToDifficultyText(unit.Difficulty));
                Append(builder, unit.Score);
                Append(builder, Utility.ToRankText(unit.Rank));
                Append(builder, unit.BaseRating);
                Append(builder, unit.Rating);
                Append(builder, unit.IsNewRecord);
                Append(builder, unit.IsClear);
                Append(builder, Utility.ToComboStatusText(unit.ComboStatus));
                Append(builder, Utility.ToChainStatusText(unit.ChainStatus));
                Append(builder, unit.Track);
                Append(builder, unit.PlayDate);
                Append(builder, unit.DisplayRating);
                Append(builder, unit.TotalBestRating, true);
            }

            return(builder.ToString());
        }
Beispiel #4
0
        private void ApplyReocrd(IXLWorksheet worksheet, IPlaylogRecordTable <IPlaylogRecordTableUnit> record)
        {
            if (worksheet == null || record == null)
            {
                return;
            }

            var header = new Header().GetColumnsMappedByParameter();

            worksheet.Cell(1, header[Header.Parameter.Id].Index).Value          = header[Header.Parameter.Id].Text;
            worksheet.Cell(1, header[Header.Parameter.Name].Index).Value        = header[Header.Parameter.Name].Text;
            worksheet.Cell(1, header[Header.Parameter.Genre].Index).Value       = header[Header.Parameter.Genre].Text;
            worksheet.Cell(1, header[Header.Parameter.Difficulty].Index).Value  = header[Header.Parameter.Difficulty].Text;
            worksheet.Cell(1, header[Header.Parameter.Score].Index).Value       = header[Header.Parameter.Score].Text;
            worksheet.Cell(1, header[Header.Parameter.Rank].Index).Value        = header[Header.Parameter.Rank].Text;
            worksheet.Cell(1, header[Header.Parameter.BaseRating].Index).Value  = header[Header.Parameter.BaseRating].Text;
            worksheet.Cell(1, header[Header.Parameter.Rating].Index).Value      = header[Header.Parameter.Rating].Text;
            worksheet.Cell(1, header[Header.Parameter.IsNewRecord].Index).Value = header[Header.Parameter.IsNewRecord].Text;
            worksheet.Cell(1, header[Header.Parameter.IsClear].Index).Value     = header[Header.Parameter.IsClear].Text;
            worksheet.Cell(1, header[Header.Parameter.ComboStatus].Index).Value = header[Header.Parameter.ComboStatus].Text;
            worksheet.Cell(1, header[Header.Parameter.ChainStatus].Index).Value = header[Header.Parameter.ChainStatus].Text;
            worksheet.Cell(1, header[Header.Parameter.Track].Index).Value       = header[Header.Parameter.Track].Text;
            worksheet.Cell(1, header[Header.Parameter.PlayDate].Index).Value    = header[Header.Parameter.PlayDate].Text;

            var playlogRecordUnits = record.GetTableUnits().Reverse().ToList();

            for (var i = 0; i < playlogRecordUnits.Count; i++)
            {
                var row = i + 2;
                worksheet.Cell(row, header[Header.Parameter.Id].Index).Value          = playlogRecordUnits[i].Id;
                worksheet.Cell(row, header[Header.Parameter.Name].Index).Value        = playlogRecordUnits[i].Name;
                worksheet.Cell(row, header[Header.Parameter.Genre].Index).Value       = playlogRecordUnits[i].Genre;
                worksheet.Cell(row, header[Header.Parameter.Difficulty].Index).Value  = Utility.ToDifficultyText(playlogRecordUnits[i].Difficulty);
                worksheet.Cell(row, header[Header.Parameter.Score].Index).Value       = playlogRecordUnits[i].Score;
                worksheet.Cell(row, header[Header.Parameter.Rank].Index).Value        = Utility.ToRankText(Utility.GetRank(playlogRecordUnits[i].Score));
                worksheet.Cell(row, header[Header.Parameter.BaseRating].Index).Value  = playlogRecordUnits[i].BaseRating;
                worksheet.Cell(row, header[Header.Parameter.Rating].Index).Value      = playlogRecordUnits[i].Rating;
                worksheet.Cell(row, header[Header.Parameter.IsNewRecord].Index).Value = playlogRecordUnits[i].IsNewRecord;
                worksheet.Cell(row, header[Header.Parameter.IsClear].Index).Value     = playlogRecordUnits[i].IsClear;
                worksheet.Cell(row, header[Header.Parameter.ComboStatus].Index).Value = playlogRecordUnits[i].ComboStatus;
                worksheet.Cell(row, header[Header.Parameter.ChainStatus].Index).Value = playlogRecordUnits[i].ChainStatus;
                worksheet.Cell(row, header[Header.Parameter.Track].Index).Value       = playlogRecordUnits[i].Track;
                worksheet.Cell(row, header[Header.Parameter.PlayDate].Index).Value    = playlogRecordUnits[i].PlayDate;
            }
        }
        public static void AreEqual(IPlaylogRecordTable <IPlaylogRecordTableUnit> expected, IPlaylogRecordTable <IPlaylogRecordTableUnit> actual)
        {
            Assert.IsNotNull(expected, "expected");
            Assert.IsNotNull(actual, "actual");

            var expectedTableUnits = expected.GetTableUnits().ToList();
            var actualTableUnits   = actual.GetTableUnits().ToList();

            Assert.IsNotNull(expectedTableUnits, "expected.GetTableUnits()");
            Assert.IsNotNull(actualTableUnits, "actual.GetTableUnits()");
            Assert.AreEqual(expectedTableUnits.Count, actualTableUnits.Count, "件数");

            var count = expectedTableUnits.Count;

            for (var i = 0; i < count; i++)
            {
                AreEqual(expectedTableUnits[i], actualTableUnits[i]);
            }
        }
Beispiel #6
0
 public PlaylogRecordTable(IPlaylogRecordTable <IPlaylogRecordTableUnit> record)
 {
     Set(record);
 }
        public async Task UpdatePlaylogAsync()
        {
            await LoadGlobalMusicDataTable();

            DebugLogger.WriteLine("PlaylogDetailRecord更新の開始");
            List <TableUnit> savedPlaylogDetailRecordUnits = null;

            {
                var   readAsync = ReadPlaylogDetailRecordAsync("./test.csv");
                await readAsync;
                savedPlaylogDetailRecordUnits = readAsync.Result;
            }

            DebugLogger.WriteLine("Playlog の取得");
            IPlaylogRecordTable <IPlaylogRecordTableUnit> playlogRecord = null;
            {
                var   playlogSend = chunithmNetConnector.GetPlaylogAsync();
                await playlogSend;

                if (!playlogSend.Result.Success)
                {
                    throw new Exception("Playlogの取得に失敗しました");
                }

                var _playlogRecord = new PlaylogRecordTable();
                _playlogRecord.Add(playlogSend.Result.Playlog);
                playlogRecord = _playlogRecord;
            }

            List <TableUnit> updatedPlaylogDetailRecordUnits = null;

            {
                var   getAsync = GetUpdatedPlaylogDetailRecordUnitsAsync(playlogRecord, savedPlaylogDetailRecordUnits.LastOrDefault());
                await getAsync;
                updatedPlaylogDetailRecordUnits = getAsync.Result;
            }

            if (updatedPlaylogDetailRecordUnits.Count == 0)
            {
                DebugLogger.WriteLine("更新データなし");
                return;
            }

            DebugLogger.WriteLine("楽曲別レコードテーブル生成");
            var playlogDetailRecordUnitsGroupByMusic = GroupByMusic(updatedPlaylogDetailRecordUnits);

            DebugLogger.WriteLine("楽曲別レコードテーブル書き込み");
            await WritePlaylogDetailRecordByMusic(updatedPlaylogDetailRecordUnits);

            DebugLogger.WriteLine("更新データ書き込み");
            {
                var record = new Table();

                foreach (var recordUnit in savedPlaylogDetailRecordUnits)
                {
                    record.RecordUnits.Add(recordUnit);
                }

                foreach (var recordUnit in updatedPlaylogDetailRecordUnits)
                {
                    record.RecordUnits.Add(recordUnit);
                }

                var writer = new TableCsvWriter();
                writer.Set(record);
                writer.Write("./test.csv");
            }

            DebugLogger.WriteLine("Done.");
        }
        private async Task <List <TableUnit> > GetUpdatedPlaylogDetailRecordUnitsAsync(IPlaylogRecordTable <IPlaylogRecordTableUnit> playlogRecord, TableUnit lastPlaylogDetailRecordUnit)
        {
            var updatedPlaylogDetailRecordUnits = new List <TableUnit>();
            var lastPlayDate   = lastPlaylogDetailRecordUnit?.PlaylogDetail?.PlayDate ?? new DateTime();
            var startNumber    = lastPlaylogDetailRecordUnit?.Number + 1 ?? 1;
            var startPlayCount = lastPlaylogDetailRecordUnit?.PlayCount + 1 ?? 1;

            var tableUnits = playlogRecord.GetTableUnits().ToList();

            for (var i = 0; i < tableUnits.Count; i++)
            {
                if (tableUnits[i].PlayDate <= lastPlayDate)
                {
                    continue;
                }

                var index = tableUnits.Count - (i + 1);
                DebugLogger.WriteLine("PlaylogDetailの取得 Index : {0}", index);
                var   sendAsync = chunithmNetConnector.GetPlaylogDetailAsync(index);
                await sendAsync;

                var playlogDetail = sendAsync.Result;
                if (!playlogDetail.Success)
                {
                    throw new Exception($"PlaylogDetail[{index}]の取得に失敗しました");
                }

                var recordUnit = new TableUnit();
                recordUnit.Number        = startNumber + updatedPlaylogDetailRecordUnits.Count;
                recordUnit.PlayCount     = startPlayCount + updatedPlaylogDetailRecordUnits.Count;
                recordUnit.PlaylogDetail = playlogDetail.PlaylogDetail;
                updatedPlaylogDetailRecordUnits.Add(recordUnit);
            }

            return(updatedPlaylogDetailRecordUnits);
        }
 public History(IPlaylogRecordTable <IHistoryUnit> record)
 {
     Set(record);
 }