Exemple #1
0
        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));
        }
Exemple #3
0
 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);
        }
Exemple #5
0
        /// <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);
        }
Exemple #6
0
        //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());
            }
        }