private static void WriteProductReportsToSQLite(List <ProductReport> reports)
 {
     using (ProductTaxesDbContext context = new ProductTaxesDbContext())
     {
         foreach (var report in reports)
         {
             string query = "INSERT INTO ProductReports VALUES({0}, {1}, {2}, {3}, {4})";
             context.Database.ExecuteSqlCommand(query,
                                                report.ProductId, report.ProductName, report.VendorName,
                                                report.QuantitySold,
                                                report.TotalIncome);
         }
     }
 }
        public static List <ProductTotalReport> GetTotalReportsFromMongoAndLite()
        {
            var productReports = MongoDbProvider.db.LoadData <ProductReport>().ToList();

            WriteProductReportsToSQLite(productReports);
            ProductTaxesDbContext taxesContext = new ProductTaxesDbContext();
            var taxes        = taxesContext.ProductTaxes.ToList();
            var vendors      = MongoDbProvider.db.LoadData <VendorExpenseMongoDB>().ToList();
            var totalReports = (from p in productReports
                                join t in taxes on p.ProductName equals t.ProductName
                                join v in vendors on p.VendorName equals v.VendorName
                                select new ProductTotalReport()
            {
                Expenses = v.Expenses.Sum(e => e.Sum),
                Incomes = p.TotalIncome,
                Taxes = (double)t.Tax,
                Vendor = p.VendorName
            }).Distinct(new ReportEqualityComparer()).ToList();

            return(totalReports);
        }