private void createTenantReport(string tenantName) { BookingSummary summary; try { using (BookingServicePortTypeClient client = getBookingWSClient()) { summary = client.getBookingSummaryByTenant(tenantName, 25); } } catch (Exception e) { log.Error("cannot create booking report for " + tenantName, e); return; } if (summary == null || summary.NBookings == 0) { log.Info("no bookings found: " + tenantName); } else { using (PaymentEntities context = new PaymentEntities()) { Dictionary<string, int> departures = new Dictionary<string,int>(); Dictionary<string, int> destinations = new Dictionary<string, int>(); for (int i = 0; i < summary.departures.Length; i++) { departures.Add(summary.departures[i].name, (int)summary.departureCounts[i]); } for (int i = 0; i < summary.destinations.Length; i++) { destinations.Add(summary.destinations[i].name, (int)summary.destinationCounts[i]); } DateTime date = DateTime.Now; PaymentReportData prd = new PaymentReportData(date, summary.NBookings, decimal.Round((decimal)summary.totalSales, 2), destinations, departures); string prdXml = prd.ToXMLString(); if (log.IsDebugEnabled) { log.Debug("report as xml : " + prdXml); } AppData.Report report = AppData.Report.CreateReport(tenantName, date); report.xmlData = prdXml; context.AddToReport(report); int changes = context.SaveChanges(); if (log.IsDebugEnabled) { log.Debug("saved report: " + report + " changes: " + changes); } } } }
public void TestXmlSerializableDictionary() { DateTime now = DateTime.Now; int totalBookings = 123; decimal totalSales = 450000.50M; Dictionary<string, int> destinations = new Dictionary<string, int>(); destinations.Add("Destination1", 1); destinations.Add("Destination2", 2); destinations.Add("Destination3", 3); destinations.Add("Destination4", 4); destinations.Add("Destination5", 5); Dictionary<string, int> departures = new Dictionary<string, int>(); departures.Add("Departure1", 1); departures.Add("Departure2", 2); departures.Add("Departure3", 3); departures.Add("Departure4", 4); departures.Add("Departure5", 5); PaymentReportData prd = new PaymentReportData(now, totalBookings, totalSales, destinations, departures); string xml = prd.ToXMLString(); PaymentReportData prd2 = PaymentReportData.FromXML(xml); Assert.AreEqual(now, prd2.Date); Assert.AreEqual(totalBookings, prd2.TotalBookings); Assert.AreEqual(totalSales, prd2.TotalSales); Assert.AreEqual(destinations.Count, prd2.Destinations.Count); Assert.AreEqual(destinations["Destination1"], prd2.Destinations["Destination1"]); Assert.AreEqual(destinations["Destination2"], prd2.Destinations["Destination2"]); Assert.AreEqual(destinations["Destination3"], prd2.Destinations["Destination3"]); Assert.AreEqual(destinations["Destination4"], prd2.Destinations["Destination4"]); Assert.AreEqual(destinations["Destination5"], prd2.Destinations["Destination5"]); Assert.AreEqual(departures.Count, prd2.Departures.Count); Assert.AreEqual(departures["Departure1"], prd2.Departures["Departure1"]); Assert.AreEqual(departures["Departure2"], prd2.Departures["Departure2"]); Assert.AreEqual(departures["Departure3"], prd2.Departures["Departure3"]); Assert.AreEqual(departures["Departure4"], prd2.Departures["Departure4"]); Assert.AreEqual(departures["Departure5"], prd2.Departures["Departure5"]); }