//using System; //using System.Collections.Generic; //using System.Linq; //using System.Text; //using BS.Shared; //using BS.Shared.Core; //using BS.Shared.DataContracts; //using BS.Shared.Services; //using BeWo.Data.Access; //using BeWo.Data.Entities; //using BeWo.Service.DCEntityMapper; //using BeWo.Service.Plugins; //using Castle.Components.DictionaryAdapter; //using NHibernate.Linq; //namespace BeWo.Service.Reporting //{ // public class AnnualReportEngine : AbstractIDSpecificDefaultClass // { // protected AnnualReportFilter reportFilter; // protected Dictionary> Cb2ScListPerCustomerOid { get; set; } // protected Dictionary CustomerByOid { get; set; } // protected Dictionary LiegtImStichtagByCustomerOid { get; set; } // protected Dictionary LiegtImStichtagByC2SOid { get; set; } // public virtual List CreateAnnualReport(AnnualReportFilter filter) // { // reportFilter = filter; // Cb2ScListPerCustomerOid = new Dictionary>(); // CustomerByOid = new Dictionary(); // LiegtImStichtagByC2SOid = new Dictionary(); // LiegtImStichtagByCustomerOid = new Dictionary(); // var reports = new List(); // //Dictionary customer2TerminationProcessed = new Dictionary(); // Dictionary countPerTerminationReasonAll = new Dictionary(); // Dictionary> countPerTerminationReasonNames = new Dictionary>(); // Dictionary countPerTerminationReasonMale = new Dictionary(); // Dictionary countPerTerminationReasonFemale = new Dictionary(); // Dictionary oid2VarfieldDef = new Dictionary(); // //Dictionary customer2VarfieldProcessed = new Dictionary(); // Dictionary countPerWohnformAll = new Dictionary(); // Dictionary> countPerWohnformNames = new Dictionary>(); // Dictionary countPerWohnformMale = new Dictionary(); // Dictionary countPerWohnformFemale = new Dictionary(); // Dictionary countPerCityAll = new Dictionary(); // Dictionary> countPerCityNames = new Dictionary>(); // Dictionary countPerCityMale = new Dictionary(); // Dictionary countPerCityFemale = new Dictionary(); // Dictionary countPerVarfielddef2All = new Dictionary(); // Dictionary> countPerVarfielddefNames = new Dictionary>(); // Dictionary countPerVarfielddef2Male = new Dictionary(); // Dictionary countPerVarfielddef2Female = new Dictionary(); // Dictionary year2NewSCCountAll = new Dictionary(); // Dictionary> year2NewSCNames = new Dictionary>(); // Dictionary year2NewSCCountMale = new Dictionary(); // Dictionary year2NewSCCountFemale = new Dictionary(); // Dictionary customerOid2Hours = new Dictionary(); // Dictionary> customerOid2ApprovalDateTimeSpan = new Dictionary>(); // bool hatWohnform = false; // bool hatWohnraumAngemietet = false; // var varFieldDefs = DAOFactory.GenericDAO.GetAllActive(); // foreach (var varFieldDef in varFieldDefs) // { // oid2VarfieldDef.Add(varFieldDef.Oid.Value, varFieldDef); // } // InitData(); // Dictionary customerOid2Days = new Dictionary(); // StringBuilder sb = new StringBuilder(); // foreach (var customerOid in Cb2ScListPerCustomerOid.Keys) // { // List csList = Cb2ScListPerCustomerOid[customerOid]; // Customer customer = CustomerByOid[customerOid]; // if (customerOid == 7) // { // int t = 0; // } // CostBearer2SupportConcept last = null; // int days = 0; // bool hatLaufendenHPAmStichtag = false; // foreach (var c2s in csList) // { // var startdate = c2s.StartDate; // if (last == null && customer.AssistanceBegin.HasValue && customer.AssistanceBegin.Value < startdate) // { // startdate = customer.AssistanceBegin; // } // DateTime enddate = DateTime.MaxValue; // if (last != null && last.EndDate.Value.Date < DateTime.MaxValue.Date) // enddate = last.EndDate.Value.Date.AddDays(1); // bool isNewSc = !(last != null && (enddate == c2s.StartDate.Value.Date)); // if (last == null) // { // if (startdate.Value.Year == 2015) // { // sb.AppendLine(String.Format("{0}, {1}: {2:dd.MM.yyyy} - {3:dd.MM.yyyy} ({4:dd.MM.yyyy} - {5:dd.MM.yyyy})", customer.Person.LastName, customer.Person.FirstName, startdate, enddate, c2s.StartDate, c2s.EndDate)); // } // days = 0; // if (!year2NewSCCountAll.ContainsKey(startdate.Value.Year)) // year2NewSCCountAll[startdate.Value.Year] = 0; // year2NewSCCountAll[startdate.Value.Year] += 1; // if (!year2NewSCNames.ContainsKey(startdate.Value.Year)) // { // year2NewSCNames[startdate.Value.Year] = new List(); // } // year2NewSCNames[startdate.Value.Year].Add(String.Format("{0}, {1}", c2s.SupportConcept.Customer.Person.LastName, c2s.SupportConcept.Customer.Person.FirstName)); // if (!year2NewSCCountMale.ContainsKey(startdate.Value.Year)) // year2NewSCCountMale[startdate.Value.Year] = 0; // if (!year2NewSCCountFemale.ContainsKey(startdate.Value.Year)) // year2NewSCCountFemale[startdate.Value.Year] = 0; // if (c2s.SupportConcept.Customer.Person.Sex.HasValue && c2s.SupportConcept.Customer.Person.Sex.Value == Sex.Male) // { // year2NewSCCountMale[startdate.Value.Year] += 1; // } // if (c2s.SupportConcept.Customer.Person.Sex.HasValue && c2s.SupportConcept.Customer.Person.Sex.Value == Sex.Female) // { // year2NewSCCountFemale[startdate.Value.Year] += 1; // } // } // if (LiegtImStichtagByC2SOid.ContainsKey(c2s.Oid.Value)) // { // days += (int)Stichtag.Subtract(startdate.Value).TotalDays + 1; // hatLaufendenHPAmStichtag = true; // if (customerOid == 49) // { // int test = 0; // } // if (!customerOid2Hours.ContainsKey(customerOid)) // customerOid2Hours.Add(customerOid, 0); // var calc = PluginLoader.FindClass(c2s.CostBearer.ID) ?? Calculations.GetInstance(c2s.CostBearer.ID); // SupportConceptCostBearerRelDC relDC = // MapperFactory.SupportConceptCostBearerRelDC_CostBearer2SupportConcept.MapToNewDC(c2s); // DateTimeSpan span = new DateTimeSpan(); // span.StartDateTime = relDC.StartDate ?? DateTime.MinValue; // span.EndDate = relDC.EndDate ?? DateTime.MaxValue; // DateTime dt = Stichtag; // if (!StichtagsbezogenAuswerten) // { // if (relDC.EndDate.HasValue && relDC.EndDate < dt && relDC.EndDate >= reportStartDate) // { // dt = relDC.EndDate.Value; // } // } // decimal hours = calc.GetApprovedHoursPerWeek(relDC, dt) ?? 0; // bool addHours = true; // if (!StichtagsbezogenAuswerten) // { // if (!customerOid2ApprovalDateTimeSpan.ContainsKey(customerOid)) // { // customerOid2ApprovalDateTimeSpan.Add(customerOid, new List()); // } // else // { // var spans = customerOid2ApprovalDateTimeSpan[customerOid]; // bool overlaps = false; // foreach (var span2 in spans) // { // if (span.Overlaps(span2)) // { // overlaps = true; // } // } // if (!overlaps) // { // addHours = false; // if (hours > customerOid2Hours[customerOid]) // { // customerOid2Hours[customerOid] = hours; // } // } // } // customerOid2ApprovalDateTimeSpan[customerOid].Add(span); // } // if (addHours) // { // customerOid2Hours[customerOid] += hours; // } // } // else // { // if (c2s.EndDate.Value < Stichtag) // days += (int)c2s.EndDate.Value.Subtract(startdate.Value).TotalDays + 1; // } // last = c2s; // } // //if (!customerOid2Days.ContainsKey(customerOid)) // // customerOid[customerOid] // if (hatLaufendenHPAmStichtag) // { // customerOid2Days[customerOid] = days; // } // if (customer.TerminationReason != null && customer.TerminationDate.HasValue && // customer.TerminationDate >= reportStartDate && customer.TerminationDate < reportEndDate) // { // if (!countPerTerminationReasonAll.ContainsKey(customer.TerminationReason)) // countPerTerminationReasonAll[customer.TerminationReason] = 0; // countPerTerminationReasonAll[customer.TerminationReason] += 1; // if (!countPerTerminationReasonMale.ContainsKey(customer.TerminationReason)) // countPerTerminationReasonMale[customer.TerminationReason] = 0; // if (customer.Person.Sex.HasValue && customer.Person.Sex.Value == Sex.Male) // { // countPerTerminationReasonMale[customer.TerminationReason] += 1; // } // if (!countPerTerminationReasonFemale.ContainsKey(customer.TerminationReason)) // countPerTerminationReasonFemale[customer.TerminationReason] = 0; // if (customer.Person.Sex.HasValue && customer.Person.Sex.Value == Sex.Female) // { // countPerTerminationReasonFemale[customer.TerminationReason] += 1; // } // if (!countPerTerminationReasonNames.ContainsKey(customer.TerminationReason)) // { // countPerTerminationReasonNames[customer.TerminationReason] = new List(); // } // countPerTerminationReasonNames[customer.TerminationReason].Add(String.Format("{0}, {1}", customer.Person.LastName, customer.Person.FirstName)); // } // if (customer.VarFieldValueList != null && customer.VarFieldValueList.Count > 0) // { // if (hatLaufendenHPAmStichtag) // { // foreach (var varfield in customer.VarFieldValueList) // { // if (oid2VarfieldDef.ContainsKey(varfield.VarFieldDefOid.Value)) // { // VarFieldDef def = oid2VarfieldDef[varfield.VarFieldDefOid.Value]; // if (!String.IsNullOrEmpty(def.Label)) // { // if (def.Label.Equals("Wohnform")) // { // hatWohnform = true; // Type type = Type.GetType(varfield.TypeName); // var varFieldValue = Utils.XMLDeserializeFromString(varfield.SerializedValue, type); // if (varFieldValue != null) // { // String str = varFieldValue.ToString(); // if (!countPerWohnformAll.ContainsKey(str)) // countPerWohnformAll[str] = 0; // countPerWohnformAll[str] += 1; // if (!countPerWohnformNames.ContainsKey(str)) // { // countPerWohnformNames[str] = new List(); // } // countPerWohnformNames[str].Add(String.Format("{0}, {1}", customer.Person.LastName, customer.Person.FirstName)); // if (!countPerWohnformMale.ContainsKey(str)) // countPerWohnformMale[str] = 0; // if (customer.Person.Sex.HasValue && customer.Person.Sex.Value == Sex.Male) // { // countPerWohnformMale[str] += 1; // } // if (!countPerWohnformFemale.ContainsKey(str)) // countPerWohnformFemale[str] = 0; // if (customer.Person.Sex.HasValue && customer.Person.Sex.Value == Sex.Female) // { // countPerWohnformFemale[str] += 1; // } // } // } // else if (def.Label.IndexOf("Wohnraum") >= 0 && // def.Label.IndexOf("angemietet") >= 0) // { // hatWohnraumAngemietet = true; // if (!countPerVarfielddef2All.ContainsKey(def)) // countPerVarfielddef2All[def] = 0; // countPerVarfielddef2All[def] += 1; // if (!countPerVarfielddefNames.ContainsKey(def)) // { // countPerVarfielddefNames[def] = new List(); // } // countPerVarfielddefNames[def].Add(String.Format("{0}, {1}", customer.Person.LastName, customer.Person.FirstName)); // if (!countPerVarfielddef2Male.ContainsKey(def)) // countPerVarfielddef2Male[def] = 0; // if (customer.Person.Sex.HasValue && customer.Person.Sex.Value == Sex.Male) // { // countPerVarfielddef2Male[def] += 1; // } // if (!countPerVarfielddef2Female.ContainsKey(def)) // countPerVarfielddef2Female[def] = 0; // if (customer.Person.Sex.HasValue && customer.Person.Sex.Value == Sex.Female) // { // countPerVarfielddef2Female[def] += 1; // } // } // } // } // //if (varfield.) // } // } // } // if (hatLaufendenHPAmStichtag) // { // //Auswertung nach City // String city = "Ohne Angabe"; // if (customer.Person.Address != null && !String.IsNullOrEmpty(customer.Person.Address.Town)) // { // city = customer.Person.Address.Town; // } // if (!countPerCityAll.ContainsKey(city)) // { // countPerCityAll[city] = 0; // } // countPerCityAll[city] += 1; // if (!countPerCityNames.ContainsKey(city)) // { // countPerCityNames[city] = new List(); // } // countPerCityNames[city].Add(String.Format("{0}, {1}", customer.Person.LastName, customer.Person.FirstName)); // if (!countPerCityMale.ContainsKey(city)) // countPerCityMale[city] = 0; // if (customer.Person.Sex.HasValue && customer.Person.Sex.Value == Sex.Male) // { // countPerCityMale[city] += 1; // } // if (!countPerCityFemale.ContainsKey(city)) // countPerCityFemale[city] = 0; // if (customer.Person.Sex.HasValue && customer.Person.Sex.Value == Sex.Female) // { // countPerCityFemale[city] += 1; // } // } // ProcessCustomer(customer, csList); // } // // anz Betreuungen // AnnualReportDC report; // if (StichtagsbezogenAuswerten) // { // report = CreateCountPerYearReport(); // reports.Add(report); // } // else // { // report = CreateCountPerYearReportGesamtJahr(); // reports.Add(report); // } // // anz Zugänge // report = new AnnualReportDC(); // report.Name = "Anzahl der Zugänge"; // reports.Add(report); // report.Data = new List(); // var startYear = new DateTime(reportStartDate.Year - 5, 1, 1); //reportStartDate.AddYears(-1); //Vorjahr // var index = 1; // while (startYear < reportEndDate) // { // AnnualReportDataDC data = new AnnualReportDataDC(); // report.Data.Add(data); // data.Index = index++; // data.Name = String.Format("{0:yyyy}", new DateTime(startYear.Year, 1, 1)); // data.Value = 0; // if (year2NewSCCountAll.ContainsKey(startYear.Year)) // data.Value = year2NewSCCountAll[startYear.Year]; // if (year2NewSCCountMale.ContainsKey(startYear.Year)) // data.Male = year2NewSCCountMale[startYear.Year]; // if (year2NewSCCountFemale.ContainsKey(startYear.Year)) // data.Female = year2NewSCCountFemale[startYear.Year]; // if (year2NewSCNames.ContainsKey(startYear.Year)) // data.CustomerNames = year2NewSCNames[startYear.Year]; // startYear = startYear.AddYears(1); // } // StringBuilder testsb = new StringBuilder(); // if (report.Data.Count > 5 && report.Data[5].CustomerNames != null) // { // foreach (var str in report.Data[5].CustomerNames.OrderBy(s => s)) // { // testsb.AppendLine(str); // } // } // var teststr = testsb.ToString(); // // anz Beendigungen // report = new AnnualReportDC(); // report.Name = "Anzahl der Beendigungen der Betreuungen"; // reports.Add(report); // report.Data = new List(); // index = 1; // foreach (var reason in countPerTerminationReasonAll.Keys) // { // AnnualReportDataDC data = new AnnualReportDataDC(); // report.Data.Add(data); // data.Index = index++; // data.Name = reason.Value; // data.Value = countPerTerminationReasonAll[reason]; // if (countPerTerminationReasonMale.ContainsKey(reason)) // data.Male = countPerTerminationReasonMale[reason]; // if (countPerTerminationReasonFemale.ContainsKey(reason)) // data.Female = countPerTerminationReasonFemale[reason]; // if (countPerTerminationReasonNames.ContainsKey(reason)) // data.CustomerNames = countPerTerminationReasonNames[reason]; // } // testsb = new StringBuilder(); // foreach (var dd in report.Data) // { // if (dd.CustomerNames != null) // { // foreach (var str in dd.CustomerNames.OrderBy(s => s)) // { // testsb.AppendLine(str); // } // } // } // teststr = testsb.ToString(); // // Betreuungsdauer // report = new AnnualReportDC(); // report.Name = "Aktuelle Betreuungsdauer der betreuten Personen"; // reports.Add(report); // report.Data = new List(); // index = 1; // int below3All = 0; // int three2FiveAll = 0; // int above5All = 0; // List below3AllNames = new List(); // List three2FiveAllNames = new List(); // List above5AllNames = new List(); // int below3Male = 0; // int three2FiveMale = 0; // int above5Male = 0; // int below3Female = 0; // int three2FiveFemale = 0; // int above5Female = 0; // foreach (var customerOid in customerOid2Days.Keys) // { // int days = customerOid2Days[customerOid]; // if (days > 0) // { // if (days < (365*3)) // below3All++; // else if (days < (365*5)) // three2FiveAll++; // else // { // above5All++; // } // if (CustomerByOid.ContainsKey(customerOid)) // { // Customer customer = CustomerByOid[customerOid]; // String customerName = String.Format("{0}, {1}", customer.Person.LastName, customer.Person.FirstName); // if (days < (365 * 3)) // below3AllNames.Add(customerName); // else if (days < (365 * 5)) // three2FiveAllNames.Add(customerName); // else // { // above5AllNames.Add(customerName); // } // if (customer.Person.Sex.HasValue && customer.Person.Sex.Value == Sex.Male) // { // if (days < (365*3)) // below3Male++; // else if (days < (365*5)) // three2FiveMale++; // else // { // above5Male++; // } // } // if (customer.Person.Sex.HasValue && customer.Person.Sex.Value == Sex.Female) // { // if (days < (365*3)) // below3Female++; // else if (days < (365*5)) // three2FiveFemale++; // else // { // above5Female++; // } // } // } // } // } // AnnualReportDataDC d = new AnnualReportDataDC(); // report.Data.Add(d); // d.Index = index++; // d.Name = "unter 3 Jahre"; // d.Value = below3All; // d.Male = below3Male; // d.Female = below3Female; // d.CustomerNames = below3AllNames; // d = new AnnualReportDataDC(); // report.Data.Add(d); // d.Index = index++; // d.Name = "3-5 Jahre"; // d.Value = three2FiveAll; // d.Male = three2FiveMale; // d.Female = three2FiveFemale; // d.CustomerNames = three2FiveAllNames; // d = new AnnualReportDataDC(); // report.Data.Add(d); // d.Index = index++; // d.Name = "über 5 Jahre"; // d.Value = above5All; // d.Male = above5Male; // d.Female = above5Female; // d.CustomerNames = above5AllNames; // // Betreuungsumfang // report = new AnnualReportDC(); // report.Name = "Betreuungsumfang der betreuten Personen in FLS pro Woche"; // reports.Add(report); // report.Data = new List(); // index = 1; // int less1All = 0; // int less1Male = 0; // int less1Female = 0; // List less1AllNames = new List(); // int less2All = 0; // int less2Male = 0; // int less2Female = 0; // List less2AllNames = new List(); // int less3All = 0; // int less3Male = 0; // int less3Female = 0; // List less3AllNames = new List(); // int less4All = 0; // int less4Male = 0; // int less4Female = 0; // List less4AllNames = new List(); // int less6All = 0; // int less6Male = 0; // int less6Female = 0; // List less6AllNames = new List(); // int less8All = 0; // int less8Male = 0; // int less8Female = 0; // List less8AllNames = new List(); // int greater8All = 0; // int greater8Male = 0; // int greater8Female = 0; // List greater8AllNames = new List(); // foreach (var customerOid in customerOid2Hours.Keys) // { // decimal hours = customerOid2Hours[customerOid]; // if (hours <= 1) // less1All++; // else if (hours <= 2) // less2All++; // else if (hours <= 3) // less3All++; // else if (hours <= 4) // less4All++; // else if (hours <= 6) // less6All++; // else if (hours <= 8) // less8All++; // else // greater8All++; // if (CustomerByOid.ContainsKey(customerOid)) // { // Customer customer = CustomerByOid[customerOid]; // String customerName = String.Format("{0}, {1}", customer.Person.LastName, customer.Person.FirstName); // if (hours <= 1) // less1AllNames.Add(customerName); // else if (hours <= 2) // less2AllNames.Add(customerName); // else if (hours <= 3) // less3AllNames.Add(customerName); // else if (hours <= 4) // less4AllNames.Add(customerName); // else if (hours <= 6) // less6AllNames.Add(customerName); // else if (hours <= 8) // less8AllNames.Add(customerName); // else // greater8AllNames.Add(customerName); // if (customer.Person.Sex.HasValue && customer.Person.Sex.Value == Sex.Male) // { // if (hours <= 1) // less1Male++; // else if (hours <= 2) // less2Male++; // else if (hours <= 3) // less3Male++; // else if (hours <= 4) // less4Male++; // else if (hours <= 6) // less6Male++; // else if (hours <= 8) // less8Male++; // else // greater8Male++; // } // if (customer.Person.Sex.HasValue && customer.Person.Sex.Value == Sex.Female) // { // if (hours <= 1) // less1Female++; // else if (hours <= 2) // less2Female++; // else if (hours <= 3) // less3Female++; // else if (hours <= 4) // less4Female++; // else if (hours <= 6) // less6Female++; // else if (hours <= 8) // less8Female++; // else // greater8Female++; // } // } // } // d = new AnnualReportDataDC(); // report.Data.Add(d); // d.Index = index++; // d.Name = "<= 1 FLS"; // d.Value = less1All; // d.Male = less1Male; // d.Female = less1Female; // d.CustomerNames = less1AllNames; // d = new AnnualReportDataDC(); // report.Data.Add(d); // d.Index = index++; // d.Name = "> 1 <= 2 FLS"; // d.Value = less2All; // d.Male = less2Male; // d.Female = less2Female; // d.CustomerNames = less2AllNames; // d = new AnnualReportDataDC(); // report.Data.Add(d); // d.Index = index++; // d.Name = "> 2 <= 3 FLS"; // d.Value = less3All; // d.Male = less3Male; // d.Female = less3Female; // d.CustomerNames = less3AllNames; // d = new AnnualReportDataDC(); // report.Data.Add(d); // d.Index = index++; // d.Name = "> 3 <= 4 FLS"; // d.Value = less4All; // d.Male = less4Male; // d.Female = less4Female; // d.CustomerNames = less4AllNames; // d = new AnnualReportDataDC(); // report.Data.Add(d); // d.Index = index++; // d.Name = "> 4 <= 6 FLS"; // d.Value = less6All; // d.Male = less6Male; // d.Female = less6Female; // d.CustomerNames = less6AllNames; // d = new AnnualReportDataDC(); // report.Data.Add(d); // d.Index = index++; // d.Name = "> 6 <= 8 FLS"; // d.Value = less8All; // d.Male = less8Male; // d.Female = less8Female; // d.CustomerNames = less8AllNames; // d = new AnnualReportDataDC(); // report.Data.Add(d); // d.Index = index++; // d.Name = "> 8 FLS"; // d.Value = greater8All; // d.Male = greater8Male; // d.Female = greater8Female; // d.CustomerNames = greater8AllNames; // // Nach Ort // report = new AnnualReportDC(); // report.Name = "Anzahl der betreuten Personen nach Ort"; // reports.Add(report); // report.Data = new List(); // index = 1; // foreach (var vd in countPerCityAll.Keys) // { // AnnualReportDataDC data = new AnnualReportDataDC(); // report.Data.Add(data); // data.Index = index++; // data.Name = vd; // data.Value = countPerCityAll[vd]; // data.Male = countPerCityMale[vd]; // data.Female = countPerCityFemale[vd]; // data.CustomerNames = countPerCityNames[vd]; // } // report.Data.Sort((a, b) => a.Name.CompareTo(b.Name)); // if (hatWohnform) // { // // anz der betreuten Personen // report = new AnnualReportDC(); // report.Name = "Anzahl der betreuten Personen nach Wohnform"; // reports.Add(report); // report.Data = new List(); // index = 1; // foreach (var wohnform in countPerWohnformAll.Keys) // { // AnnualReportDataDC data = new AnnualReportDataDC(); // report.Data.Add(data); // data.Index = index++; // data.Name = wohnform; // data.Value = countPerWohnformAll[wohnform]; // data.Male = countPerWohnformMale[wohnform]; // data.Female = countPerWohnformFemale[wohnform]; // data.CustomerNames = countPerWohnformNames[wohnform]; // } // } // if (hatWohnraumAngemietet) // { // // Wohnraum vom Leistungserbringer/Kooperationspartner des Leistungserbringers angemietet // report = new AnnualReportDC(); // report.Name = "Wohnraum vom Leistungserbringer/Kooperationspartner angemietet"; // reports.Add(report); // report.Data = new List(); // index = 1; // foreach (var vd in countPerVarfielddef2All.Keys) // { // AnnualReportDataDC data = new AnnualReportDataDC(); // report.Data.Add(data); // data.Index = index++; // data.Name = "anz"; // data.Value = countPerVarfielddef2All[vd]; // data.Male = countPerVarfielddef2Male[vd]; // data.Female = countPerVarfielddef2Female[vd]; // data.CustomerNames = countPerVarfielddefNames[vd]; // } // } // return reports; // } // public virtual void InitData() // { // foreach (var iCb2Sc in DAOFactory.GenericDAO.GetAllActiveAndArchived()) // { // if (CostBearer == null || iCb2Sc.CostBearer.Oid == CostBearer.Oid) // { // var sc = iCb2Sc.SupportConcept; // var customer = sc.Customer; // if (ShouldProcessSupportConcept(iCb2Sc, sc, customer)) // { // ProcessSupportConcept(iCb2Sc, sc, customer); // if (!CustomerByOid.ContainsKey(customer.Oid.Value)) // { // CustomerByOid.Add(customer.Oid.Value, customer); // } // List list; // if (Cb2ScListPerCustomerOid.ContainsKey(customer.Oid.Value)) // { // list = Cb2ScListPerCustomerOid[customer.Oid.Value]; // } // else // { // list = new List(); // Cb2ScListPerCustomerOid.Add(customer.Oid.Value, list); // } // //if (iCb2Sc.StartDate < ReportEndDate) // //{ // list.Add(iCb2Sc); // list.Sort((a, b) => a.StartDate.Value.CompareTo(b.StartDate.Value)); // //} // } // } // } // foreach (var customerOid in Cb2ScListPerCustomerOid.Keys) // { // var customer = CustomerByOid[customerOid]; // var c2sList = Cb2ScListPerCustomerOid[customerOid]; // bool isFirst = true; // foreach (var c2s in c2sList) // { // var startDate = c2s.StartDate; // if (isFirst && customer.AssistanceBegin.HasValue && customer.AssistanceBegin < startDate) // { // startDate = customer.AssistanceBegin; // } // isFirst = false; // var endDate = c2s.EndDate; // if (customer.TerminationDate.HasValue && customer.TerminationDate < endDate) // { // endDate = customer.TerminationDate; // } // if ((StichtagsbezogenAuswerten && startDate <= Stichtag && endDate >= Stichtag) // || (!StichtagsbezogenAuswerten && startDate <= Stichtag && endDate >= new DateTime(Stichtag.Year, 1, 1))) // { // if (!LiegtImStichtagByCustomerOid.ContainsKey(customer.Oid.Value)) // { // LiegtImStichtagByCustomerOid.Add(customer.Oid.Value, true); // } // if (!LiegtImStichtagByC2SOid.ContainsKey(c2s.Oid.Value)) // { // LiegtImStichtagByC2SOid.Add(c2s.Oid.Value, true); // } // } // } // } // } // //Stichtagsbezogene Auswertung nach Jahr // public virtual AnnualReportDC CreateCountPerYearReport() // { // var countPerYearEndAll = new Dictionary(); // var countPerYearEndMale = new Dictionary(); // var countPerYearEndFemale = new Dictionary(); // var countPerYearEndNames = new Dictionary>(); // var countPerYearMidAll = new Dictionary(); // var countPerYearMidMale = new Dictionary(); // var countPerYearMidFemale = new Dictionary(); // var countPerYearMidNames = new Dictionary>(); // countPerYearMidAll.Add(ReportStartDate.Year, 0); // countPerYearMidAll.Add(ReportStartDate.Year - 1, 0); // countPerYearMidAll.Add(ReportStartDate.Year - 2, 0); // countPerYearMidMale.Add(ReportStartDate.Year, 0); // countPerYearMidMale.Add(ReportStartDate.Year - 1, 0); // countPerYearMidMale.Add(ReportStartDate.Year - 2, 0); // countPerYearMidFemale.Add(ReportStartDate.Year, 0); // countPerYearMidFemale.Add(ReportStartDate.Year - 1, 0); // countPerYearMidFemale.Add(ReportStartDate.Year - 2, 0); // countPerYearMidNames.Add(ReportStartDate.Year, new List()); // countPerYearMidNames.Add(ReportStartDate.Year - 1, new List()); // countPerYearMidNames.Add(ReportStartDate.Year - 2, new List()); // countPerYearEndAll.Add(ReportStartDate.Year, 0); // countPerYearEndAll.Add(ReportStartDate.Year - 1, 0); // countPerYearEndAll.Add(ReportStartDate.Year - 2, 0); // countPerYearEndMale.Add(ReportStartDate.Year, 0); // countPerYearEndMale.Add(ReportStartDate.Year - 1, 0); // countPerYearEndMale.Add(ReportStartDate.Year - 2, 0); // countPerYearEndFemale.Add(ReportStartDate.Year, 0); // countPerYearEndFemale.Add(ReportStartDate.Year - 1, 0); // countPerYearEndFemale.Add(ReportStartDate.Year - 2, 0); // countPerYearEndNames.Add(ReportStartDate.Year, new List()); // countPerYearEndNames.Add(ReportStartDate.Year - 1, new List()); // countPerYearEndNames.Add(ReportStartDate.Year - 2, new List()); // var customerProcessed = new Dictionary(); // foreach (var customerOid in Cb2ScListPerCustomerOid.Keys) // { // var customer = CustomerByOid[customerOid]; // var c2sList = Cb2ScListPerCustomerOid[customerOid]; // for (int i = ReportStartDate.Year - 2; i <= ReportStartDate.Year; i++) // { // DateTime midYear = new DateTime(i, 6, 30); // DateTime endYear = new DateTime(i, 12, 31); // bool countedMid = false; // bool countedEnd = false; // bool isFirst = true; // foreach (var c2s in c2sList) // { // var startDate = c2s.StartDate; // if (isFirst && customer.AssistanceBegin.HasValue && customer.AssistanceBegin < startDate) // { // startDate = customer.AssistanceBegin; // } // isFirst = false; // var endDate = c2s.EndDate; // if (customer.TerminationDate.HasValue && customer.TerminationDate < endDate) // { // endDate = customer.TerminationDate; // } // if (!countedEnd && startDate <= endYear && endDate >= endYear) // { // countPerYearEndAll[i] += 1; // countPerYearEndNames[i].Add(String.Format("{0}, {1}", customer.Person.LastName, customer.Person.FirstName)); // if (customer.Person.Sex.HasValue && customer.Person.Sex.Value == Sex.Male) // { // countPerYearEndMale[i] += 1; // } // else if (customer.Person.Sex.HasValue && customer.Person.Sex.Value == Sex.Female) // { // countPerYearEndFemale[i] += 1; // } // countedEnd = true; // } // if (!countedMid && startDate <= midYear && endDate >= midYear) // { // countPerYearMidAll[i] += 1; // countPerYearMidNames[i].Add(String.Format("{0}, {1}", customer.Person.LastName, customer.Person.FirstName)); // if (customer.Person.Sex.HasValue && customer.Person.Sex.Value == Sex.Male) // { // countPerYearMidMale[i] += 1; // } // else if (customer.Person.Sex.HasValue && customer.Person.Sex.Value == Sex.Female) // { // countPerYearMidFemale[i] += 1; // } // countedMid = true; // } // } // } // } // var report = new AnnualReportDC(); // report.Name = "Anzahl der Betreuungen"; // report.Data = new List(); // DateTime startYear = new DateTime(2000, 1, 1); //reportStartDate.AddYears(-1); //Vorjahr // int index = 1; // while (startYear < ReportEndDate) // { // if (countPerYearMidAll.ContainsKey(startYear.Year)) // { // AnnualReportDataDC data = new AnnualReportDataDC(); // report.Data.Add(data); // data.CustomerNames = new List(); // data.Index = index++; // data.Name = String.Format("{0:dd/MM/yyyy}", new DateTime(startYear.Year, 6, 30)); // data.Value = countPerYearMidAll[startYear.Year]; // data.CustomerNames = countPerYearMidNames[startYear.Year]; // if (countPerYearMidMale.ContainsKey(startYear.Year)) // { // data.Male = countPerYearMidMale[startYear.Year]; // } // if (countPerYearMidFemale.ContainsKey(startYear.Year)) // { // data.Female = countPerYearMidFemale[startYear.Year]; // } // } // if (countPerYearEndAll.ContainsKey(startYear.Year)) // { // AnnualReportDataDC data = new AnnualReportDataDC(); // report.Data.Add(data); // data.Index = index++; // data.Name = String.Format("{0:dd/MM/yyyy}", new DateTime(startYear.Year, 12, 31)); // data.Value = countPerYearEndAll[startYear.Year]; // data.CustomerNames = countPerYearEndNames[startYear.Year]; // if (countPerYearEndMale.ContainsKey(startYear.Year)) // { // data.Male = countPerYearEndMale[startYear.Year]; // } // if (countPerYearEndFemale.ContainsKey(startYear.Year)) // { // data.Female = countPerYearEndFemale[startYear.Year]; // } // } // startYear = startYear.AddYears(1); // } // var testsb = new StringBuilder(); // foreach (var str in report.Data[report.Data.Count - 1].CustomerNames.OrderBy(s => s)) // { // testsb.AppendLine(str); // } // var teststr = testsb.ToString(); // testsb = new StringBuilder(); // foreach (var str in report.Data[report.Data.Count - 3].CustomerNames.OrderBy(s => s)) // { // testsb.AppendLine(str); // } // teststr = testsb.ToString(); // return report; // } // public virtual AnnualReportDC CreateCountPerYearReportGesamtJahr() // { // var countPerYearAll = new Dictionary(); // var countPerYearMale = new Dictionary(); // var countPerYearFemale = new Dictionary(); // countPerYearAll.Add(ReportStartDate.Year, 0); // countPerYearAll.Add(ReportStartDate.Year - 1, 0); // countPerYearAll.Add(ReportStartDate.Year - 2, 0); // countPerYearMale.Add(ReportStartDate.Year, 0); // countPerYearMale.Add(ReportStartDate.Year - 1, 0); // countPerYearMale.Add(ReportStartDate.Year - 2, 0); // countPerYearFemale.Add(ReportStartDate.Year, 0); // countPerYearFemale.Add(ReportStartDate.Year - 1, 0); // countPerYearFemale.Add(ReportStartDate.Year - 2, 0); // foreach (var customerOid in Cb2ScListPerCustomerOid.Keys) // { // var customer = CustomerByOid[customerOid]; // var c2sList = Cb2ScListPerCustomerOid[customerOid]; // for (int i = ReportStartDate.Year - 2; i <= ReportStartDate.Year; i++) // { // DateTime start = new DateTime(i, 1, 1); // DateTime end = new DateTime(i, 12, 31); // bool counted = false; // bool isFirst = true; // foreach (var c2s in c2sList) // { // var startDate = c2s.StartDate; // if (isFirst && customer.AssistanceBegin.HasValue && customer.AssistanceBegin < startDate) // { // startDate = customer.AssistanceBegin; // } // isFirst = false; // var endDate = c2s.EndDate; // if (customer.TerminationDate.HasValue && customer.TerminationDate < endDate) // { // endDate = customer.TerminationDate; // } // if (!counted && startDate <= end && endDate >= start) // { // countPerYearAll[i] += 1; // if (customer.Person.Sex.HasValue && customer.Person.Sex.Value == Sex.Male) // { // countPerYearMale[i] += 1; // } // else if (customer.Person.Sex.HasValue && customer.Person.Sex.Value == Sex.Female) // { // countPerYearFemale[i] += 1; // } // counted = true; // } // } // } // } // var report = new AnnualReportDC(); // report.Name = "Anzahl der Betreuungen"; // report.Data = new List(); // DateTime startYear = new DateTime(2000, 1, 1); //reportStartDate.AddYears(-1); //Vorjahr // int index = 1; // while (startYear < ReportEndDate) // { // if (countPerYearAll.ContainsKey(startYear.Year)) // { // AnnualReportDataDC data = new AnnualReportDataDC(); // report.Data.Add(data); // data.Index = index++; // data.Name = String.Format("{0:yyyy}", new DateTime(startYear.Year, 1, 1)); // data.Value = countPerYearAll[startYear.Year]; // if (countPerYearMale.ContainsKey(startYear.Year)) // { // data.Male = countPerYearMale[startYear.Year]; // } // if (countPerYearFemale.ContainsKey(startYear.Year)) // { // data.Female = countPerYearFemale[startYear.Year]; // } // } // startYear = startYear.AddYears(1); // } // return report; // } // //Auswertung nach Jahr, mindestens ein Tag irgendwann im Jahr reicht um gezählt zu werden // public virtual AnnualReportDC CreateCountPerWholeYearReport() // { // var countPerYearAll = new Dictionary(); // var countPerYearMale = new Dictionary(); // var countPerYearFemale = new Dictionary(); // var countPerYearNames = new Dictionary>(); // countPerYearAll.Add(ReportStartDate.Year, 0); // countPerYearAll.Add(ReportStartDate.Year - 1, 0); // countPerYearAll.Add(ReportStartDate.Year - 2, 0); // countPerYearMale.Add(ReportStartDate.Year, 0); // countPerYearMale.Add(ReportStartDate.Year - 1, 0); // countPerYearMale.Add(ReportStartDate.Year - 2, 0); // countPerYearFemale.Add(ReportStartDate.Year, 0); // countPerYearFemale.Add(ReportStartDate.Year - 1, 0); // countPerYearFemale.Add(ReportStartDate.Year - 2, 0); // countPerYearNames.Add(ReportStartDate.Year, new List()); // countPerYearNames.Add(ReportStartDate.Year - 1, new List()); // countPerYearNames.Add(ReportStartDate.Year - 2, new List()); // foreach (var customerOid in Cb2ScListPerCustomerOid.Keys) // { // var customer = CustomerByOid[customerOid]; // var c2sList = Cb2ScListPerCustomerOid[customerOid]; // for (int i = ReportStartDate.Year - 2; i <= ReportStartDate.Year; i++) // { // DateTime start = new DateTime(i, 1, 1); // DateTime end = new DateTime(i, 12, 31); // bool counted = false; // bool isFirst = true; // foreach (var c2s in c2sList) // { // var startDate = c2s.StartDate; // if (isFirst && customer.AssistanceBegin.HasValue && customer.AssistanceBegin < startDate) // { // startDate = customer.AssistanceBegin; // } // isFirst = false; // var endDate = c2s.EndDate; // if (customer.TerminationDate.HasValue && customer.TerminationDate < endDate) // { // endDate = customer.TerminationDate; // } // if (!counted && startDate <= end && endDate >= start) // { // countPerYearAll[i] += 1; // countPerYearNames[i].Add(String.Format("{0}, {1}", customer.Person.LastName, customer.Person.FirstName)); // if (customer.Person.Sex.HasValue && customer.Person.Sex.Value == Sex.Male) // { // countPerYearMale[i] += 1; // } // else if (customer.Person.Sex.HasValue && customer.Person.Sex.Value == Sex.Female) // { // countPerYearFemale[i] += 1; // } // counted = true; // } // } // } // } // var report = new AnnualReportDC(); // report.Name = "Anzahl der Betreuungen im Jahr"; // report.Data = new List(); // DateTime startYear = new DateTime(2000, 1, 1); //reportStartDate.AddYears(-1); //Vorjahr // int index = 1; // while (startYear < ReportEndDate) // { // if (countPerYearAll.ContainsKey(startYear.Year)) // { // AnnualReportDataDC data = new AnnualReportDataDC(); // report.Data.Add(data); // data.Index = index++; // data.Name = String.Format("{0:yyyy}", new DateTime(startYear.Year, 1, 1)); // data.Value = countPerYearAll[startYear.Year]; // data.CustomerNames = countPerYearNames[startYear.Year]; // if (countPerYearMale.ContainsKey(startYear.Year)) // { // data.Male = countPerYearMale[startYear.Year]; // } // if (countPerYearFemale.ContainsKey(startYear.Year)) // { // data.Female = countPerYearFemale[startYear.Year]; // } // } // startYear = startYear.AddYears(1); // } // return report; // } // public virtual void ProcessCustomer(Customer customer, List allCostBearer2SupportConcepts) // { // //Nur für abgeleitete Klassen // } // public virtual void ProcessSupportConcept(CostBearer2SupportConcept iCb2Sc, SupportConcept sc, Customer customer) // { // //Nur für abgeleitete Klassen // } // public virtual bool ShouldProcessSupportConcept(CostBearer2SupportConcept iCb2Sc, SupportConcept sc, Customer customer) // { // if (sc.IsActive != ActivationTypeId.Deleted && customer.IsActive != ActivationTypeId.Deleted) // { // if ((iCb2Sc.ApprovedStartDate.HasValue && iCb2Sc.ApprovedEndDate.HasValue)) // { // if (CustomerBelongsToTeam(customer, TeamOid) && // IsCustomerOfCustomerCareType(customer, CustomerCareTypeValueListEntryOid)) // { // return true; // } // } // } // return false; // } // public virtual bool IsCustomerOfCustomerCareType(Customer customer, long? customerCareTypeValueListEntryOid) // { // bool val = true; // if (customerCareTypeValueListEntryOid.HasValue) // { // val = false; // foreach (var v in customer.ValueList) // { // if (v.Entry.Type == ValueListEntryType.CustomerCareType && v.Entry.Oid == customerCareTypeValueListEntryOid) // return true; // } // } // return val; // } // public virtual bool CustomerBelongsToTeam(Customer customer, long? teamOid) // { // bool val = true; // if (teamOid.HasValue) // { // val = false; // foreach (var t2c in customer.Team2CustomerList) // { // if (t2c.TeamOid == teamOid) // return true; // } // } // return val; // } // } //}