コード例 #1
0
        private async void ImportVendorExpenses(object sender, System.EventArgs e)
        {
            var xml = await XMLSerializer.ReadXML(SelectFileName(false));
            //MessageBox.Show(xml.Vendors.Length.ToString());

            var context = new DatabaseManager.Data.SupermarketsContext();
            int vendorsCount = 0;
            int expensesCount = 0;
            foreach (var vendor in xml.Vendors)
            {
                var dbVendor = context.Vendors.Where(v => v.Name == vendor.Name).FirstOrDefault();
                if (dbVendor != null)
                {
                    vendorsCount++;
                    foreach (var expense in vendor.Summaries)
                    {
                        var newExpense = new DatabaseManager.Models.Expense()
                        {
                            Date = DateTime.Parse(expense.Month),
                            Ammount = decimal.Parse(expense.Price)
                        };
                        dbVendor.Expenses.Add(newExpense);
                        expensesCount++;
                    }
                }
            }
            context.SaveChanges();
            this.logList.Items.Add(string.Format("Adding {0} expenses for {1} vendors...",
                expensesCount, vendorsCount));
            this.logList.Items.Add("Done!");
        }
コード例 #2
0
        private async Task<SalesReportsWrapper> BuildSalesReports(DateTime startDate, DateTime endDate)
        {
            using (var context = new DatabaseManager.Data.SupermarketsContext())
            {
                var saleReportsQuery = from sale in context.Sales
                                       where sale.Date >= startDate
                                       where sale.Date <= endDate
                                       group new { sale.UnitPrice, sale.Date } by new { sale.Product.Vendor.Name } into salesGroup
                                       select new
                                       {
                                           Vendor = salesGroup.Key,
                                           Sales = from sale in salesGroup
                                                   group sale.UnitPrice by sale.Date into datesGroup
                                                   select new { Date = datesGroup.Key, TotalSum = datesGroup.Sum() }
                                       };

                var vendorGroups = await saleReportsQuery.ToArrayAsync();
                string monthFormat = @"MMM-yyyy";
                string currencyFormat = @"# ###.00";
                var salesReports = vendorGroups.Select(vg =>
                {
                    var summaries = vg.Sales.
                        Select(s => new Summary()
                        {
                            Date = s.Date.ToString(monthFormat),
                            TotalPrice = s.TotalSum.ToString(currencyFormat)
                        });
                    var salesReport = new SalesReport()
                        {
                            Vendor = vg.Vendor.Name,
                            Summaries = summaries.ToArray()
                        };
                    return salesReport;
                });
                var salesReportsWrapper =
                    new SalesReportsWrapper() { SaleReports = salesReports.ToArray() };
                return salesReportsWrapper;
            }
        }