public static async Task <bool> Export(IDataRepository data, IStatsConverter converter, GameFilter filter, string file)
        {
            return(await Task.Run(() =>
            {
                var games = data.GetAllGames();
                var filtered = filter.Apply(games);

                try
                {
                    if (filtered.Count <= 0)
                    {
                        throw new ConverterException("No stats found");
                    }

                    var stream = converter.ConvertToStream(filtered);
                    using (var f = File.Create(file))
                    {
                        stream.Seek(0, SeekOrigin.Begin);
                        stream.CopyTo(f);
                    }

                    return true;
                }
                catch (Exception e)
                {
                    StatsConverter.Logger.Error(e);
                    return false;
                }
            }));
        }
        public void Setup()
        {
            var g1 = new Game()
            {
                Deck        = new Deck(),
                Region      = Region.US,
                Mode        = GameMode.BRAWL,
                Result      = GameResult.WIN,
                PlayerClass = PlayerClass.HUNTER,
                StartTime   = new DateTime(2015, 01, 25, 19, 03, 26),
                EndTime     = new DateTime(2015, 01, 25, 19, 09, 14)
            };
            var g2 = new Game()
            {
                Id   = new Guid("11000000-0000-0000-0000-000000000022"),
                Deck = new Deck()
                {
                    Name = "A Deck"
                },
                DeckVersion   = new Version(1, 0),
                Region        = Region.EU,
                Mode          = GameMode.RANKED,
                Format        = GameFormat.STANDARD,
                Result        = GameResult.LOSS,
                StartTime     = new DateTime(2015, 01, 25, 19, 14, 36),
                EndTime       = new DateTime(2015, 01, 25, 19, 24, 17),
                Rank          = 12,
                PlayerClass   = PlayerClass.WARLOCK,
                PlayerName    = "ThePlayer",
                OpponentClass = PlayerClass.HUNTER,
                OpponentName  = "后海大白鲨",
                Turns         = 5,
                Minutes       = 6,
                PlayerGotCoin = true,
                WasConceded   = false,
                Note          = new Note("[Face] Some notes")
            };

            var data = new Mock <IDataRepository>();

            data.Setup(x => x.GetAllGamesWithDeck(It.IsAny <Guid>()))
            .Returns(new List <Game>());

            converter = new CSVConverter();
            games     = new List <Game>()
            {
                g1, g2
            };
        }
 public static async Task <bool> Import(IStatsConverter converter, string file)
 {
     try
     {
         return(await Task.Run(() =>
         {
             // create backup before any importing
             Backup.CreateBackup("BackupStatsConv");
             // import from file
             using (var fs = new FileStream(file, FileMode.Open))
             {
                 var games = converter.ConvertFromStream(fs);
                 StatsConverter.Data.AddGames(games);
                 return true;
             }
         }));
     }
     catch (Exception e)
     {
         StatsConverter.Logger.Error(e);
         return(false);
     }
 }