示例#1
0
        public static string GenerateXmlReport(DateTime startDate, DateTime endDate, string exportFolder)
        {
            ValidateDates(startDate, endDate);

            using (var context = new SqlMarketContext())
            {
                var doc = new XDocument();
                var rootNode = new XElement("sales");

                var vendors =
                    context.Sales.Where(s => s.Date >= startDate && s.Date <= endDate)
                        .GroupBy(
                            v => v.Product.Vendor.Name,
                            (key, val) => new { Name = key, Sales = val.Select(d => new { d.Date, d.TotalSum }) });

                foreach (var vendor in vendors)
                {
                    var currVendorNode = new XElement("sale");
                    currVendorNode.Add(new XAttribute("vendor", vendor.Name));

                    var sales = vendor.Sales.GroupBy(
                        s => s.Date,
                        (key, val) => new { Date = key, TotalSum = val.Sum(t => t.TotalSum) });
                    foreach (var sale in sales)
                    {
                        var currSaleNode = new XElement("summary");
                        currSaleNode.Add(new XAttribute("date", sale.Date.ToString("dd-MMM-yyyy")));
                        currSaleNode.Add(new XAttribute("total-sum", string.Format("{0:F2}", sale.TotalSum)));

                        currVendorNode.Add(currSaleNode);
                    }

                    rootNode.Add(currVendorNode);
                }

                doc.Add(rootNode);

                doc.Save(exportFolder + ResultFileName);
            }

            return exportFolder + ResultFileName;
        }
示例#2
0
 public ExcelSalesExtractor(string archivePath, SqlMarketContext context)
 {
     this.ArchivePath = archivePath;
     this.SqlMarketContext = context;
     this.SqlManager = new MsSqlManager();
 }
 public XmlVendorExprensesImport(string expensesImportPath, SqlMarketContext context)
 {
     this.ExpensesImportPath = expensesImportPath;
     this.SqlMarketContext = context;
 }