// Create 2 files
        // 1. Series - Books
        // 2. Books - Sales
        public static void AssembleSalesData(string pathDataDir)
        {
            Console.WriteLine("Starting to assemble comics sales data . . .");

            SeriesSalesData seriesSales = new SeriesSalesData();
            string pathSalesData = Path.Combine(pathDataDir, FileManager.DEFAULT_SALES_DIR);

            foreach (string pathSalesFile in Directory.EnumerateFiles(pathSalesData, "*", SearchOption.TopDirectoryOnly))
            {
                Console.WriteLine(String.Format("Processing data from {0}.", pathSalesFile));
                FileManager.ReadSalesDataFromCSV(pathSalesFile, ref seriesSales);
            }

            Console.WriteLine("Saving assembled data . . .");

            string pathResultsDir = Path.Combine(pathDataDir, FileManager.DEFAULT_RESULTS_DIR);
            FileManager.WriteToCSV(seriesSales, Path.Combine(pathResultsDir, FileManager.RESULT_SERIES_COMICS_SALES), true);
            FileManager.WriteToCSV(seriesSales, Path.Combine(pathResultsDir, FileManager.RESULT_COMICS_SALES), false);

            Console.WriteLine(String.Format("---=== Statistics ===---\n# Series: {0}",
                              seriesSales.Count()));

            Console.WriteLine("Finished comics sales data assembling.");
        }
        public static void WriteToCSV(SeriesSalesData dataToWrite, string pathWrittenFile, bool groupBySeries)
        {
            using (StreamWriter writer = new StreamWriter(pathWrittenFile, false))
            {
                foreach (KeyValuePair<string, ComicsSalesData> seriesSales in dataToWrite.Sales)
                {
                    if (groupBySeries)
                    {
                        string allComicsAsString = String.Empty;
                        int totalSales = 0;

                        writer.Write(seriesSales.Key);

                        foreach (KeyValuePair<string, int> comicSales in seriesSales.Value.Sales)
                        {
                            allComicsAsString += "," + comicSales.Key;
                            totalSales += comicSales.Value;
                        }

                        writer.Write("," + totalSales);
                        writer.WriteLine(allComicsAsString);
                    }
                    else
                    {
                        foreach (KeyValuePair<string, int> comicSales in seriesSales.Value.Sales)
                        {
                            writer.WriteLine(String.Format("{0},{1},{2}", seriesSales.Key, comicSales.Key, comicSales.Value));
                        }
                    }
                }
            }
        }
        public static void ReadSalesDataFromCSV(string pathDataDir, ref SeriesSalesData seriesSalesData)
        {
            using (StreamReader reader = new StreamReader(pathDataDir))
            {
                while (!reader.EndOfStream)
                {
                    string input = reader.ReadLine();

                    if (!input.Equals(String.Empty))
                    {
                        string[] data = input.Split(',');

                        seriesSalesData.Add(data[0], new Comic(data[1], Int32.Parse(data[2])));
                    }
                }
            }
        }