using System; using System.Collections.Generic; using System.Linq; using BS.Shared; using BeWo.Data.Access; using BeWo.Data.Entities; namespace BeWo.Report.ReportObjects { public class AdditionalServiceBookingRO : AbstractBeWoReportObject { public String Month { get; set; } public int Year { get; set; } public String AdditionalServiceRegion { get; set; } public String AdditionalService { get; set; } public List Rows { get; set; } public static AdditionalServiceBookingRO Create(AdditionalServiceRegion region, Monat month, int year) { var result = new AdditionalServiceBookingRO { Rows = new List(), AdditionalServiceRegion = region.Name, AdditionalService = region.AdditionalService.Name, Month = month.ToString(), Year = year }; var additionalServiceBookings = DAOFactory.GenericDAO.GetAll() .Where( booking => booking.AdditionalServiceRegion == region && booking.Datum.Value.Month == (int)month && booking.Datum.Value.Year == year); var c2aodList = new Dictionary(); foreach (var item in additionalServiceBookings) { if (item.Datum == null) continue; foreach (var e in item.Customer2AddServiceBookings) { var customer = DAOFactory.GenericDAO.GetByID(e.CustomerOid); var key = customer.Person.LastName + ", " + customer.Person.FirstName; if (c2aodList.ContainsKey(key)) { c2aodList[key][item.Datum.Value.Day - 1] = (e.Participated ? "P" : ""); } else { var attendancies = new string[31]; attendancies[item.Datum.Value.Day - 1] = (e.Participated ? "P" : ""); c2aodList.Add(key, attendancies); } } } foreach (var item in c2aodList) { result.Rows.Add(new AdditionalServiceBookingRow { Customer = item.Key, AttendanceOnDay1 = item.Value[0] ?? "", AttendanceOnDay2 = item.Value[1] ?? "", AttendanceOnDay3 = item.Value[2] ?? "", AttendanceOnDay4 = item.Value[3] ?? "", AttendanceOnDay5 = item.Value[4] ?? "", AttendanceOnDay6 = item.Value[5] ?? "", AttendanceOnDay7 = item.Value[6] ?? "", AttendanceOnDay8 = item.Value[7] ?? "", AttendanceOnDay9 = item.Value[8] ?? "", AttendanceOnDay10 = item.Value[9] ?? "", AttendanceOnDay11 = item.Value[10] ?? "", AttendanceOnDay12 = item.Value[11] ?? "", AttendanceOnDay13 = item.Value[12] ?? "", AttendanceOnDay14 = item.Value[13] ?? "", AttendanceOnDay15 = item.Value[14] ?? "", AttendanceOnDay16 = item.Value[15] ?? "", AttendanceOnDay17 = item.Value[16] ?? "", AttendanceOnDay18 = item.Value[17] ?? "", AttendanceOnDay19 = item.Value[18] ?? "", AttendanceOnDay20 = item.Value[19] ?? "", AttendanceOnDay21 = item.Value[20] ?? "", AttendanceOnDay22 = item.Value[21] ?? "", AttendanceOnDay23 = item.Value[22] ?? "", AttendanceOnDay24 = item.Value[23] ?? "", AttendanceOnDay25 = item.Value[24] ?? "", AttendanceOnDay26 = item.Value[25] ?? "", AttendanceOnDay27 = item.Value[26] ?? "", AttendanceOnDay28 = item.Value[27] ?? "", AttendanceOnDay29 = item.Value[28] ?? "", AttendanceOnDay30 = item.Value[29] ?? "", AttendanceOnDay31 = item.Value[30] ?? "" }); } result.Rows.Sort((a, b) => a.Customer.CompareTo(b.Customer)); return result; } } public class AdditionalServiceBookingRow { public string Customer { get; set; } // Nachname, Vorname public string AttendanceOnDay1 { get; set; } // O -> nicht anwesend, P -> anwesend public string AttendanceOnDay2 { get; set; } public string AttendanceOnDay3 { get; set; } public string AttendanceOnDay4 { get; set; } public string AttendanceOnDay5 { get; set; } public string AttendanceOnDay6 { get; set; } public string AttendanceOnDay7 { get; set; } public string AttendanceOnDay8 { get; set; } public string AttendanceOnDay9 { get; set; } public string AttendanceOnDay10 { get; set; } public string AttendanceOnDay11 { get; set; } public string AttendanceOnDay12 { get; set; } public string AttendanceOnDay13 { get; set; } public string AttendanceOnDay14 { get; set; } public string AttendanceOnDay15 { get; set; } public string AttendanceOnDay16 { get; set; } public string AttendanceOnDay17 { get; set; } public string AttendanceOnDay18 { get; set; } public string AttendanceOnDay19 { get; set; } public string AttendanceOnDay20 { get; set; } public string AttendanceOnDay21 { get; set; } public string AttendanceOnDay22 { get; set; } public string AttendanceOnDay23 { get; set; } public string AttendanceOnDay24 { get; set; } public string AttendanceOnDay25 { get; set; } public string AttendanceOnDay26 { get; set; } public string AttendanceOnDay27 { get; set; } public string AttendanceOnDay28 { get; set; } public string AttendanceOnDay29 { get; set; } public string AttendanceOnDay30 { get; set; } public string AttendanceOnDay31 { get; set; } } }