diff --git a/ReportImp/DomizielAnsbach/CustomReportCreator.cs b/ReportImp/DomizielAnsbach/CustomReportCreator.cs index d1f63b068..39620ec68 100644 --- a/ReportImp/DomizielAnsbach/CustomReportCreator.cs +++ b/ReportImp/DomizielAnsbach/CustomReportCreator.cs @@ -2,6 +2,8 @@ using System.Collections.Generic; using System.Data; using System.IO; +using System.Linq; +using BeWo.Data; using BeWo.Data.Access; using BeWo.Data.Entities; using BeWo.Report; @@ -340,6 +342,118 @@ namespace DomizielAnsbach return new XtraReport(); } + private List Create(int pMonth, int pYear, long orgaOid, long empOid, int startDay, int endDay, long? serviceCategoryOid = null) + { + var roList = new List(); + + List customerOids = new List(); + + ApplicationUser loggedInUser = null; + + if (LoggedInUserOperationContextExt.Current != null && LoggedInUserOperationContextExt.Current.User != null) + { + loggedInUser = LoggedInUserOperationContextExt.Current.User; + } + else + { + loggedInUser = SessionFacade.LoggedInUser; + } + + if (loggedInUser != null && loggedInUser.Employee != null) + { + bool all = false; + foreach (var group in loggedInUser.UserGroups) + { + if (group.Name.ToLower().Contains("admin") || group.Name.ToLower().Contains("verwaltung")) + { + all = true; + } + } + + if (all) + { + customerOids.AddRange(DAOFactory.GenericDAO.GetAllActive() + .OrderBy(ob => ob.Person.LastName + ", " + ob.Person.FirstName).Select(c => c.Oid.Value)); + } + else + { + var teams = DAOFactory.SearchDAO.FindLeadingTeams(loggedInUser.Employee.Oid.Value); + + foreach (var team in teams) + { + foreach (var employee in team.MemberList) + { + foreach (var e2c in employee.Employee2CustomerList) + { + if (e2c.Customer.IsActive == ActivationTypeId.Active) + { + foreach (var v2o in e2c.ValueList) + { + if (v2o.Entry.Type == ValueListEntryType.StaffRoleType && + v2o.Entry.Value.Contains("Hauptbetreuung")) + { + if (!customerOids.Contains(e2c.Customer.Oid.Value)) + { + customerOids.Add(e2c.Customer.Oid.Value); + } + } + } + } + } + } + } + } + + } + + + + foreach (var coid in customerOids) + { + var ro = ServicesOverviewRO.Create(coid, pMonth, pYear, true, orgaOid, empOid, startDay, endDay, serviceCategoryOid); + + //ServicesOverviewRO ro = ServicesOverviewRO.Create(customer, pSpan, disableEmptySupportConcepts, orgaOid, empOid, searchServiceRecordsByEndDate, serviceCategoryOid); + if (ro != null) + { + roList.Add(ro); + } + } + + return roList.OrderBy(r => r.CustomerLastName + ", " + r.CustomerFirstName).ToList(); + } + + public override XtraReport CreateServiceOverviewReportForCustomers(IList customerOids, int month, int year, long? orgaOid, long? empOid, long? serviceCategoryOid, int startDay, int endDay, bool nurFehlende) + { + var roList = new List(); + + foreach (var coid in customerOids) + { + var ro = ServicesOverviewRO.Create(coid, month, year, true, orgaOid ?? 0, empOid ?? 0, startDay, endDay, serviceCategoryOid); + if (ro != null) + { + roList.Add(ro); + } + } + + if (roList.Count > 0) + { + + var rootReport = CreateServicesOverviewReportForRo(roList[0], serviceCategoryOid); + rootReport.CreateDocument(); + + for (int i = 1; i < roList.Count; i++) + { + var lNext = CreateServicesOverviewReportForRo(roList[i], serviceCategoryOid); + lNext.CreateDocument(); + rootReport.Pages.AddRange(lNext.Pages); + } + + return rootReport; + } + return new XtraReport(); + + } + public override XtraReport CreateServiceOverviewSingleCustomerReport(long customerOid, int month, int year, long orgaOid, long empOid, long? serviceCategoryOid, int startDay, int endDay) { var ro = ServicesOverviewRO.Create(customerOid, month, year, false, orgaOid, empOid, startDay, endDay, serviceCategoryOid);