Пример #1
0
//        private string ApplySpecificDetailClauses(string entity, string baseWhereClause) {
//            var user = SecurityFacade.CurrentUser();
//            if (user.IsInRole("tom") || user.IsInRole("itom") && entity.EqualsAny("servicerequest", "asset", "incident")) {
//                return Default;
//            }
//            if (IsWWUser(user)) {
//                return Default;
//            }
//
//            return baseWhereClause;
//        }



        private string DoBuildBaseWhereClause(string entityName, SearchRequestDto searchDto)
        {
            if (searchDto != null && searchDto.IgnoreWhereClause)
            {
                return(Default);
            }
            var nameToLookup = GetNameToLookup(entityName);

            if (nameToLookup == null)
            {
                return(Default);
            }
            var context = searchDto == null ? null : searchDto.Context;


            var whereClauseResult = _whereClauseFacade.Lookup(nameToLookup, context);


            if (whereClauseResult == null || whereClauseResult.IsEmpty())
            {
                return(Default);
            }
            var user = SecurityFacade.CurrentUser();

            if (!String.IsNullOrEmpty(whereClauseResult.Query))
            {
                return(DefaultValuesBuilder.ConvertAllValues(whereClauseResult.Query, user));
            }
            if (!String.IsNullOrEmpty(whereClauseResult.ServiceName))
            {
                var ob = SimpleInjectorGenericFactory.Instance.GetObject <object>(whereClauseResult.ServiceName);
                if (ob != null)
                {
                    var result = ReflectionUtil.Invoke(ob, whereClauseResult.MethodName, new object[] { });
                    if (!(result is String))
                    {
                        return(Default);
                    }
                    return(DefaultValuesBuilder.ConvertAllValues((string)result, user));
                }
            }

            return(Default);
        }
Пример #2
0
        protected virtual ApplicationDetailResult GetApplicationDetail(ApplicationMetadata application, InMemoryUser user, DetailRequest request)
        {
            var     id             = request.Id;
            var     entityMetadata = MetadataProvider.SlicedEntityMetadata(application);
            var     applicationCompositionSchemas = CompositionBuilder.InitializeCompositionSchemas(application.Schema);
            DataMap datamap;

            if (id == null)
            {
                datamap = DefaultValuesBuilder.BuildDefaultValuesDataMap(application, request.InitialValues);
            }
            else
            {
                datamap =
                    (DataMap)
                    _maximoConnectorEngine.FindById(application.Schema, entityMetadata, id);
                if (datamap == null)
                {
                    throw new InvalidOperationException("You don´t have enough permissions to see that register. contact your administrator");
                }

                var prefetchCompositions = "true".EqualsIc(application.Schema.GetProperty(ApplicationSchemaPropertiesCatalog.PreFetchCompositions)) || "#all".Equals(request.CompositionsToFetch);
                var compostionsToUse     = new Dictionary <string, ApplicationCompositionSchema>();
                foreach (var compositionEntry in applicationCompositionSchemas)
                {
                    if (prefetchCompositions || FetchType.Eager.Equals(compositionEntry.Value.FetchType) || compositionEntry.Value.INLINE)
                    {
                        compostionsToUse.Add(compositionEntry.Key, compositionEntry.Value);
                    }
                }
                if (compostionsToUse.Any())
                {
                    GetCompositionData(application, new PreFetchedCompositionFetchRequest(new List <AttributeHolder> {
                        datamap
                    }), null);
                }
            }

            var associationResults = BuildAssociationOptions(datamap, application, request);
            var detailResult       = new ApplicationDetailResult(datamap, associationResults, application.Schema, applicationCompositionSchemas, id);

            return(detailResult);
        }
Пример #3
0
        public static IDictionary <String, object> GetParameters(SearchRequestDto listDto)
        {
            IDictionary <String, object> resultDictionary = new Dictionary <string, object>();
            var searchParameters = listDto.GetParameters();

            if (searchParameters == null)
            {
                return(resultDictionary);
            }
            foreach (var searchParameter in searchParameters)
            {
                var parameter = searchParameter.Value;
                if (parameter.IsDate)
                {
                    var dt = parameter.GetAsDate;
                    HandleDateParameter(parameter, resultDictionary, searchParameter, dt);
                }
                else if (parameter.IsNumber && (parameter.Value is string))
                {
                    try {
                        var int32 = Convert.ToInt32(parameter.Value);
                        resultDictionary.Add(searchParameter.Key, int32);
                    } catch {
                        //its declared as a number, but the client passed a string like %10%, for contains, or even SR123
                        resultDictionary.Add(searchParameter.Key, parameter.Value);
                    }
                }
                else if (parameter.Value != null && parameter.Value.ToString().StartsWith("@"))
                {
                    resultDictionary.Add(searchParameter.Key,
                                         DefaultValuesBuilder.GetDefaultValue(parameter.Value.ToString(), null, DefaultValuesBuilder.DBDateTimeFormat));
                }
                else
                {
                    resultDictionary.Add(searchParameter.Key, parameter.Value);
                }
            }
            return(resultDictionary);
        }