public static string GetPersonGroupsForQuery(string module) { var user = SecurityFacade.CurrentUser(); string[] personGroups; if ("xitc".EqualsIc(module)) { personGroups = user.PersonGroups.Where(x => HlagLocationUtil.IsSuperGroup(x.PersonGroup)) .Select(f => f.PersonGroup.Name) .ToArray(); } else { personGroups = user.PersonGroups.Where(x => !HlagLocationUtil.IsSuperGroup(x.PersonGroup)) .Select(f => f.PersonGroup.Name) .ToArray(); } var strPersonGroups = String.Join("','", personGroups); strPersonGroups = "'" + strPersonGroups + "'"; return(strPersonGroups); }
internal string GetUserPersonGroupsUtils(Boolean onlyLocations) { var module = _contextLookuper.LookupContext().Module; if (!onlyLocations) { return(InMemoryUserExtensions.GetPersonGroupsForQuery(module)); } var sb = new StringBuilder(); var locations = _iHlagLocationManager.GetLocationsOfLoggedUser(); foreach (var location in locations) { sb.Append(location.GetBuildDescriptionForQuery()); sb.Append(","); } //TODO: check with Thomas whether this is really necessary var user = SecurityFacade.CurrentUser(); var otherGroups = user.PersonGroups.Where(p => !HlagLocationUtil.IsALocationGroup(p.PersonGroup)); foreach (var personGroupAssociation in otherGroups) { sb.Append("'").Append(personGroupAssociation.GroupName).Append("'"); sb.Append(","); } return(sb.ToString(0, sb.Length - 1)); }
private static bool CanChangeLanguage(InMemoryUser user) { foreach (PersonGroupAssociation f in user.PersonGroups) { if (HlagLocationUtil.IsAProfileGroup(f.PersonGroup) && !HlagLocationUtil.IsEndUser(f.PersonGroup)) { return(false); } } return(true); }
private static PersonGroup GeneratePersonGroup(AttributeHolder personGroup) { var description = (string)personGroup.GetAttribute("description"); var pg = new PersonGroup { Name = (string)personGroup.GetAttribute(PersonGroupColumn), Description = description, Rowstamp = (long)personGroup.GetAttribute("rowstamp") }; pg.SuperGroup = HlagLocationUtil.IsSuperGroup(pg); return(pg); }
/// <summary> /// if the user has no person group at all, or if he´s an enduser or external user, he should see the cost centers /// </summary> /// <param name="user"></param> /// <returns></returns> private static bool CanViewRestrictions(InMemoryUser user) { if (!user.PersonGroups.Any(f => f.GroupName.StartsWith(HapagPersonGroupConstants.BaseHapagProfilePrefix))) { return(false); } foreach (PersonGroupAssociation f in user.PersonGroups) { if (HlagLocationUtil.IsEndUser(f.PersonGroup) || HlagLocationUtil.IsExtUser(f.PersonGroup)) { return(false); } } return(true); }
//Implements HAP-838 + HAP-1062 public string AssetWhereClauseIfRegionSelected() { var ctx = _contextLookuper.LookupContext(); var parameters = ctx.MetadataParameters; var sb = new StringBuilder(); if (ctx.IsInModule(FunctionalRole.XItc)) { // for xitc we need extra conditions sb.Append(_rooR0017WhereClauseProvider.AssetWhereClause()); } else if (!ctx.IsInAnyModule(FunctionalRole.Tom, FunctionalRole.Itom)) { //HAP-838 item 6, except for TOM,ITOM and XITC with WW no one should see these sb.Append("asset.status !='{0}'".Fmt(AssetConstants.Decommissioned)); } if (!HlagLocationUtil.ValidateRegionSelectionIsAllowed(ctx, SecurityFacade.CurrentUser()) || !parameters.ContainsKey("region")) { //no region selected return(sb.ToString()); } var parentRegion = parameters["region"]; try { var locations = _locationManager.FindLocationsOfParentLocation(new PersonGroup { Name = parentRegion }); ISet <string> subcustomers = new HashSet <string>(); foreach (var hlagGroupedLocation in locations) { //HAP-1062 --> appending only subcustomers, but disregarding costcenters subcustomers.Add(hlagGroupedLocation.SubCustomer); } if (!subcustomers.Any()) { //no subcustomer added to the query return(sb.ToString()); } if (sb.Length != 0) { sb.Append(" and "); } sb.Append(" asset.pluspcustomer in ( "); foreach (var subcustomer in subcustomers) { sb.Append("'").Append(subcustomer).Append("'").Append(","); } //removing last , and adding trailing parenthesis return(sb.ToString(0, sb.Length - 1) + ")"); } catch (Exception) { Log.WarnFormat("location {0} was not found", parentRegion); return(sb.ToString()); } }