/// <summary> /// Returns a query that shall be used to pick only the available costcenters /// </summary> /// <param name="subCustomer"></param> /// <param name="personId"></param> /// <returns></returns> private string BuildCostCentersFromMaximo(string subCustomer, string personId) { var groupNameToQuery = "'" + HapagPersonGroupConstants.BaseHapagLocationPrefix + subCustomer + "%" + "'"; var results = _maxDAO.FindByNativeQuery( "select p.persongroup,description from PERSONGROUP p left join persongroupview v on p.PERSONGROUP = v.PERSONGROUP " + "where (p.persongroup like {0} ) and v.PERSONID = {1} and v.groupdefault = 1" .Fmt(groupNameToQuery, "'" + personId + "'")); var list = results.Cast <IEnumerable <KeyValuePair <string, object> > >() .Select(r => r.ToDictionary(pair => pair.Key, pair => pair.Value, StringComparer.OrdinalIgnoreCase)).ToList(); ISet <string> costcenters = new HashSet <string>(); foreach (var groupsDescription in list) { var pg = new PersonGroup() { Name = groupsDescription["persongroup"] as string, Description = groupsDescription["description"] as string, }; var supergroup = HlagLocationUtil.IsSuperGroup(pg); if (HlagLocationUtil.IsALocationGroup(pg) && !supergroup) { costcenters.Add(HlagLocationUtil.GetCostCenter(pg)); } } if (!costcenters.Any()) { return("1!=1"); } var groupedLocation = new HlagGroupedLocation(subCustomer, costcenters, false); return(groupedLocation.CostCentersForQuery("glaccount")); }
public string CostCentersForQuery(string columnName) { return(_groupedLocation.CostCentersForQuery(columnName)); }