Exemplo n.º 1
0
        /// <summary>
        /// Obtiene la metadata de un modelo
        /// </summary>
        /// <param name="assembly">Assembly donde se encuentra el modelo connect</param>
        /// <param name="version"></param>
        /// <param name="versionStructure"></param>
        /// <returns></returns>
        public static ModelMetaData GetMdm(Assembly assembly, string version, VersionStructure versionStructure)
        {
            // obtenemos global filter para asignar si es globalfilter la entidad.
            var globalFilters = GlobalFilter.GetGlobalFilter(assembly);

            // obtiene la metadata de las entidades
            var entitiesFirstStep = GetFirstStepEntityCollection(assembly, globalFilters);

            // obtiene la documentación de las entidades.
            var mainDocumentation = GetMainDocumentation(assembly, entitiesFirstStep);


            // obtiene la documentación de los filtros.
            var filterProcess = GetFilterProcessDocs(assembly);

            // asigna documentación a las entidades.
            var entitiesWithDocumentation = entitiesFirstStep.Select(s => Docs.GetEntityWithDocumentation(s, mainDocumentation)).ToList();

            // asigna los procesos.
            var entitiesWithProcess = entitiesWithDocumentation.Select(s => GetEntityWithProcess(assembly, globalFilters, s, filterProcess)).ToList();

            // obtiene las descripciones de las enumeraciones en el assembly.
            var enumDescriptions = GetEnumDescriptions(assembly);



            // falta asignar los deletes a entities
            var md = new ModelMetaData
            {
                Version           = version,
                VersionStructure  = versionStructure,
                GlobalFilters     = globalFilters,
                EnumDescriptions  = enumDescriptions,
                DocFilters        = filterProcess,
                MdmEntities       = entitiesWithProcess.ToArray(),
                MainDocumentation = mainDocumentation,
                Menu = new GroupMenuViewer[] { }
            };

            return(md);
        }