예제 #1
0
 static void Main(string[] args)
 {
     using (var sqlite = new SQLiteTaxesEntities())
     {
         ExcelWriter.GenerateExcel(sqlite.VendorFinancialResults, @"..\..\Products-Total-Report.xlsx");
     }
 }
        public static void Load(SQLiteTaxesEntities sqlite)
        {
            var connectionStr = @"mongodb://*****:*****@ds063297.mongolab.com:63287/db-project-product-reports";
            var client = new MongoClient(connectionStr);
            var server = client.GetServer();
            var db = server.GetDatabase("db-project-product-reports");

            MongoCollection<BsonDocument> products = db.GetCollection<BsonDocument>("products");
            MongoCollection<BsonDocument> vendorExpenses = db.GetCollection<BsonDocument>("vendor-expenses");

            // fixme: toDictionary?
            var expenses = vendorExpenses.AsQueryable().ToList();

            var byVendor = products.AsQueryable().ToList().GroupBy(p => p["vendor-name"].ToString());

            var taxes = sqlite.ProductTaxes.ToList();

            foreach (var gr in byVendor)
            {
                var expenseStr = expenses.Where(e => e["vendor-name"].ToString() == gr.Key).First()["expenses"].ToString();
                var vfr = new VendorFinancialResult
                {
                    VendorName = gr.Key,
                    Expanses = decimal.Parse(expenseStr),
                };

                var totalIncome = 0.0m;
                var tax = 0.0m;
                foreach (var productData in gr)
                {
                    var income = decimal.Parse(productData["total-incomes"].ToString());

                    var taxPercentage = taxes
                                             .Where(p => p.ProductName == productData["product-name"].ToString())
                                             .First()
                                             .Tax;

                    var taxAmount = income * taxPercentage / 100;

                    totalIncome += income;
                    tax += taxAmount;
                }

                vfr.Incomes = totalIncome;
                vfr.Taxes = tax;
                vfr.FinancialResult = totalIncome - tax - vfr.Expanses;
                sqlite.VendorFinancialResults.Add(vfr);
            }

            sqlite.SaveChanges();
            /*     BsonDocument vendorExpense = new BsonDocument
            {
            { "vendor-name", expense.Vendor.Name },
            { "month", expense.Month + "-" + expense.Year },
            { "expenses", expense.Expenses.ToString() },
            };
            */
            /*
            *                         { "product-id", item.ProductId },
            { "product-name", item.ProductName },
            { "vendor-name", item.VendorName },
            { "total-quantity-sold", item.TotalQuantitySold.ToString() },
            { "total-incomes", item.TotalIncomes.ToString() }
            */
        }