Example #1
0
        public void GetIdPath_Returns_In_Correct_Order_For_Schemas()
        {
            //mock hive
            IReadonlyEntityRepositoryGroup<IContentStore> readonlyEntitySession;
            IReadonlySchemaRepositoryGroup<IContentStore> readonlySchemaSession;
            IEntityRepositoryGroup<IContentStore> entityRepository;
            ISchemaRepositoryGroup<IContentStore> schemaSession;
            var hive = MockHiveManager.GetManager().MockContentStore(out readonlyEntitySession, out readonlySchemaSession, out entityRepository, out schemaSession);
            var schema = new EntitySchema { Id = new HiveId(100) };
            schemaSession.Get<EntitySchema>(Arg.Any<bool>(), Arg.Any<HiveId[]>()).Returns(new[] { schema });
            schemaSession.GetAncestorRelations(new HiveId(100), FixedRelationTypes.DefaultRelationType)
                .Returns(new[]
                    {
                        new Relation(FixedRelationTypes.DefaultRelationType, new EntitySchema{Id = new HiveId(99)}, schema),
                        new Relation(FixedRelationTypes.DefaultRelationType, new EntitySchema{Id = new HiveId(98)}, new EntitySchema{Id = new HiveId(99)}),
                        new Relation(FixedRelationTypes.DefaultRelationType, new EntitySchema{Id = new HiveId(97)}, new EntitySchema{Id = new HiveId(98)}),
                    });

            using (var uow = hive.OpenWriter<IContentStore>())
            {
                var path = uow.Repositories.Schemas.GetEntityPath<EntitySchema>(new HiveId(100), FixedRelationTypes.DefaultRelationType);
                Assert.AreEqual(new HiveId(97), path.ElementAt(0));
                Assert.AreEqual(new HiveId(98), path.ElementAt(1));
                Assert.AreEqual(new HiveId(99), path.ElementAt(2));
                Assert.AreEqual(new HiveId(100), path.ElementAt(3));
            }

        }
Example #2
0
        public static string GetEntityName(EntitySchema entity)
        {
            if (entity == null)
            {
                throw new ArgumentNullException(nameof(entity));
            }

            return(ToHuman(new EntityName(entity.Name).Name));
        }
Example #3
0
        public static List <Filter> DeserializeFilters(EntitySchema entity, XElement element)
        {
            if (entity == null)
            {
                throw new ArgumentNullException(nameof(entity));
            }
            if (element == null)
            {
                throw new ArgumentNullException(nameof(element));
            }

            var result = new List <Filter>();

            if (element.Name.LocalName != "filters")
            {
                throw new InvalidOperationException();
            }

            foreach (var filter in element.Elements(element.Name.Namespace + "filter"))
            {
                string name         = filter.Attribute("name").Value;
                string type         = filter.Attribute("type").Value;
                var    valueElement = filter.Element(element.Name.Namespace + "value");
                object value        = null;

                if (valueElement != null)
                {
                    string valueType = valueElement.Attribute("type").Value;
                    switch (valueType)
                    {
                    case "string":
                        value = valueElement.Value;
                        break;

                    case "decimal":
                        value = XmlConvert.ToDecimal(valueElement.Value);
                        break;

                    case "datetime":
                        value = XmlConvert.ToDateTime(valueElement.Value, XmlDateTimeSerializationMode.Local);
                        break;

                    default:
                        throw new InvalidOperationException("Unsupported filter type");
                    }
                }

                var member = entity.Members[name] as EntityPhysicalField;
                if (member != null)
                {
                    result.Add(new Filter(member, (FilterType)Enum.Parse(typeof(FilterType), type, true), value));
                }
            }

            return(result);
        }
Example #4
0
        /// <summary>
        /// Fills exchange companies to bpmonline account dictionary.
        /// </summary>
        /// <param name="context"><see cref="SyncContext"/> instance.</param>
        /// <param name="exchangeCompanies">Exchange company names.</param>
        private void FillAccountsMap(SyncContext context, List <string> exchangeCompanies)
        {
            if (exchangeCompanies == null || !exchangeCompanies.Any())
            {
                return;
            }
            if (UserSettings.LinkContactToAccountType == ExchangeConsts.NeverLinkContactToAccountId)
            {
                return;
            }
            IEnumerable <string> distinctExchangeCompanies = exchangeCompanies.Distinct();
            int index = 0;

            while (index < distinctExchangeCompanies.Count())
            {
                IEnumerable <string> paramsValue = distinctExchangeCompanies.Skip(index).Take(EsqParamsCount);
                index += EsqParamsCount;
                var accountsEsq = new EntitySchemaQuery(context.UserConnection.EntitySchemaManager, "Account");
                accountsEsq.PrimaryQueryColumn.IsAlwaysSelect = true;
                accountsEsq.AddColumn("Name");
                accountsEsq.Filters.Add(accountsEsq.CreateFilterWithParameters(FilterComparisonType.Equal, false,
                                                                               "Name", paramsValue.ToArray()));
                EntityCollection accounts = accountsEsq.GetEntityCollection(context.UserConnection);
                if (accounts.Any())
                {
                    foreach (Entity account in accounts)
                    {
                        var accountName = account.GetTypedColumnValue <string>("Name");
                        if (!AccountsMap.ContainsKey(accountName))
                        {
                            AccountsMap[accountName] = account.PrimaryColumnValue;
                        }
                    }
                }
            }
            IEnumerable <string> notFoundCompanies = from company in exchangeCompanies
                                                     where AccountsMap.All(am => am.Key != company)
                                                     select company;
            var companies = notFoundCompanies as IList <string> ?? notFoundCompanies.ToList();

            if (!companies.Any() ||
                UserSettings.LinkContactToAccountType != ExchangeConsts.AllwaysLinkContactToAccountId)
            {
                return;
            }
            foreach (string company in companies)
            {
                EntitySchema accountSchema =
                    context.UserConnection.EntitySchemaManager.FindInstanceByName("Account");
                Entity account = accountSchema.CreateEntity(context.UserConnection);
                account.SetDefColumnValues();
                account.SetColumnValue("Name", company);
                AccountsMap[company] = account.GetTypedColumnValue <Guid>("Id");
                account.Save(false);
            }
        }
Example #5
0
        /// <summary>
        /// Get language identifier from mailbox by that set in system setting.
        /// </summary>
        /// <param name="supportServiceEmail">System setting for incident registration value.</param>
        /// <returns>Language identifier.</returns>
        private Guid GetLanguageId(string supportServiceEmail)
        {
            EntitySchema mailboxSyncSettingsSchema =
                UserConnection.EntitySchemaManager.FindInstanceByName("MailboxSyncSettings");
            Entity entity = mailboxSyncSettingsSchema.CreateEntity(UserConnection);

            return(entity.FetchFromDB("SenderEmailAddress", supportServiceEmail)
                                ? entity.GetTypedColumnValue <Guid>("MessageLanguageId")
                                : Guid.Empty);
        }
Example #6
0
        public string GetShortCurrencyCode(Guid CurrencyId)
        {
            EntitySchema currencySchema = UserConnection.EntitySchemaManager.GetInstanceByName("Currency");
            Entity       currency       = currencySchema.CreateEntity(UserConnection);

            currency.FetchFromDB(CurrencyId);
            var shortCode = currency.GetTypedColumnValue <string>("ShortName");

            return(shortCode);
        }
Example #7
0
        public EntitySchema MapAttributeSchemaDefinition(AttributeSchemaDefinition attributeSchemaDefinition, AbstractLookupHelper lookupHelper, AbstractMappingEngine masterMapper)
        {
            //TODO
            //- Map AttributeGroupDefinitions - how to track changes?
            //- Add DateModified to Rdbms model
            var mapped = new EntitySchema();

            MapAttributeSchemaDefinition(attributeSchemaDefinition, mapped, lookupHelper, masterMapper);
            return(mapped);
        }
        public InheritedAttributeGroup(AttributeGroup attributeGroup, EntitySchema schema)
            : base(attributeGroup.Alias, attributeGroup.Name, attributeGroup.Ordinal)
        {
            Id = attributeGroup.Id;
            UtcCreated = attributeGroup.UtcCreated;
            UtcModified = attributeGroup.UtcModified;
            UtcStatusChanged = attributeGroup.UtcStatusChanged;

            Schema = schema;
        }
        /// <summary>
        /// <inheritdoc cref="IFileImportHeadersProcessorFactory"/>
        /// </summary>
        public IFileImportHeadersCreator GetProcessor(UserConnection userConnection, EntitySchema rootSchema)
        {
            var userConnectionArgs = new ConstructorArgument("userConnection", userConnection);

            if (rootSchema.Name == "SysTranslation")
            {
                return(ClassFactory.Get <SysTranslationFileImportHeadersProcessor>(userConnectionArgs));
            }
            return(ClassFactory.Get <DefaultFileImportHeadersProcessor>(userConnectionArgs));
        }
Example #10
0
        protected virtual void CreateContactEntity(Guid contactId, FormFieldsData contactNameField)
        {
            EntitySchema contactSchema = _userConnection.EntitySchemaManager.GetInstanceByName(ContactSchemaName);
            Entity       contact       = contactSchema.CreateEntity(_userConnection);

            contact.SetDefColumnValues();
            contact.SetColumnValue("Id", contactId);
            contact.SetColumnValue("Name", contactNameField.value);
            contact.Save(false);
        }
Example #11
0
        private static string ResolveSourceColumnType(EntitySchema schema, string columnName)
        {
            var propertyType = schema?.Columns.FirstOrDefault(col => col.ColumnValueName == columnName)?.ValueType;

            if (!(propertyType is null) && _typeMapping.TryGetValue(propertyType, out string typeMapping))
            {
                return(typeMapping);
            }
            return(UnknownType);
        }
        protected virtual string GetReferencedColumnValueName()
        {
            Guid         columnUId    = ColumnSetting.RefColumnId;
            EntitySchema entitySchema = UserConnection.EntitySchemaManager.FindInstanceByName(CalculatedEntityName);
            string       columnName   = columnUId != null
                                ? entitySchema.Columns.FirstOrDefault(c => c.UId == columnUId)?.ColumnValueName
                                : string.Empty;

            return(columnName);
        }
 public SlicedEntityMetadata([NotNull] string name, [NotNull] EntitySchema schema,
                             [NotNull] IEnumerable <EntityAssociation> associations, [NotNull] ConnectorParameters connectorParameters, ApplicationSchemaDefinition appSchema,
                             IEnumerable <SlicedEntityMetadata> innerMetadatas, int?fetchLimit = 300, SlicedEntityMetadata unionSchema = null)
     : base(name, schema, associations, connectorParameters)
 {
     _appSchema  = appSchema;
     _fetchLimit = fetchLimit;
     _innerMetadatas.AddRange(innerMetadatas);
     _unionSchema = unionSchema;
 }
Example #14
0
        /// <summary>
        /// Returns allowed activity results.
        /// </summary>
        /// <param name="userConnection">User connection.</param>
        /// <param name="activityId">ID of the activity.</param>
        /// <returns>Allowed values of the activity result.</returns>
        public static string GetAllowedActivityResults(UserConnection userConnection, Guid activityId)
        {
            var select = (Select) new Select(userConnection)
                         .Column("AllowedResult")
                         .From("Activity")
                         .Where("Id").IsEqual(Column.Parameter(activityId));
            var allowedResult = select.ExecuteScalar <string>();

            if (string.IsNullOrEmpty(allowedResult))
            {
                return("[]");
            }
            EntitySchemaManager entitySchemaManager = userConnection.EntitySchemaManager;
            EntitySchema        entitySchema        = entitySchemaManager.GetInstanceByName("ActivityResult");
            var esq = new EntitySchemaQuery(entitySchemaManager, entitySchema.Name)
            {
                UseAdminRights = false
            };

            esq.PrimaryQueryColumn.IsAlwaysSelect = true;
            string columnName = entitySchema.GetPrimaryDisplayColumnName();

            esq.AddColumn(columnName);
            esq.AddColumn("Category");
            EntitySchemaQueryFilterCollection filters = esq.Filters;
            var allowedResultIds = ServiceStackTextHelper.Deserialize <string[]>(allowedResult);
            var columnParameters = new object[allowedResultIds.Length];

            for (int i = 0; i < allowedResultIds.Length; i++)
            {
                var resultId = new Guid(allowedResultIds[i]);
                columnParameters[i] = resultId;
            }
            filters.Add(esq.CreateFilterWithParameters(FilterComparisonType.Equal, "Id", columnParameters));
            EntityCollection entityCollection = esq.GetEntityCollection(userConnection);
            bool             isFirstItem      = true;
            var sb = new StringBuilder("[");

            foreach (Entity entity in entityCollection)
            {
                if (!isFirstItem)
                {
                    sb.Append(",");
                }
                else
                {
                    isFirstItem = false;
                }
                sb.AppendFormat("{{\"resultId\":\"{0}\",\"caption\":\"{1}\",\"categoryId\":\"{2}\"}}",
                                entity.GetTypedColumnValue <Guid>("Id"), entity.GetTypedColumnValue <string>(columnName),
                                entity.GetTypedColumnValue <Guid>("CategoryId"));
            }
            sb.Append("]");
            return(sb.ToString());
        }
Example #15
0
        /// <summary>
        /// Сохранение настройки колонок
        /// </summary>
        /// <param name="profileData"></param>
        public void SaveCustomProfiles(MspProfileData profileData)
        {
            string       profileValue  = (profileData.IsTiled) ? ParseTiledProfile(profileData.ProfileValue) : ParseListedProfile(profileData.ProfileValue);
            EntitySchema profileSchema = _userConnection.EntitySchemaManager.GetInstanceByName("MspCustomProfile");
            var          entity        = profileSchema.CreateEntity(_userConnection);

            entity.FetchFromDB(profileData.ProfileSettingsId);
            entity.SetColumnValue("MspIsTiled", profileData.IsTiled);
            entity.SetColumnValue("MspValue", profileValue);
            entity.Save(false);
        }
        /// <summary>
        /// ####### ######### ###### # SysAdminUnitGrantedRight.
        /// </summary>
        /// <param name="selectedRecordId">######### ######.</param>
        private void DeleteSysAdminUnitGrantedRight(object selectedRecordId)
        {
            UserConnection.DBSecurityEngine.CheckCanExecuteOperation("CanChangeAdminUnitGrantedRight");
            EntitySchema tableSchema = UserConnection.EntitySchemaManager.GetInstanceByName("SysAdminUnitGrantedRight");
            Entity       entity      = tableSchema.CreateEntity(UserConnection);

            if (entity.FetchFromDB(selectedRecordId))
            {
                entity.Delete();
            }
        }
        /// <summary>
        /// ######### ##### ###### # # ####### SysAdminUnitGrantedRight.
        /// </summary>
        /// <param name="granteeSysAdminUnitId">######## ####### "######## #####".</param>
        /// <param name="grantorSysAdminUnitId">######## ####### "####### #####".</param>
        private void InsertSysAdminUnitGrantedRight(object granteeSysAdminUnitId, object grantorSysAdminUnitId)
        {
            UserConnection.DBSecurityEngine.CheckCanExecuteOperation("CanChangeAdminUnitGrantedRight");
            EntitySchema tableSchema = UserConnection.EntitySchemaManager.GetInstanceByName("SysAdminUnitGrantedRight");
            Entity       entity      = tableSchema.CreateEntity(UserConnection);

            entity.SetDefColumnValues();
            entity.SetColumnValue("GranteeSysAdminUnitId", granteeSysAdminUnitId);
            entity.SetColumnValue("GrantorSysAdminUnitId", grantorSysAdminUnitId);
            entity.Save();
        }
Example #18
0
        protected virtual Entity CreateLinkedEntity(EntitySchema linkedSchema, EntitySchemaColumn linkedColumn)
        {
            Entity linkedEntity = linkedSchema.CreateEntity(_userConnection);

            linkedEntity.SetDefColumnValues();
            Guid idValue = GetNewLinkedEntityId(_formFields, linkedColumn);

            linkedEntity.SetColumnValue("Id", idValue);
            _rootEntity.SetColumnValue(linkedColumn, idValue);
            return(linkedEntity);
        }
Example #19
0
        /// <summary>
        /// Indicates if lead in final status.
        /// </summary>
        /// <param name="leadStatusId">Lead status identifier.</param>
        /// <returns>True if status is final.</returns>
        public bool IsLeadInFinalStatus(Guid leadStatusId)
        {
            EntitySchema qualifyStatusSchema = _userConnection.EntitySchemaManager.GetInstanceByName("QualifyStatus");
            Entity       qualifyStatusEntity = qualifyStatusSchema.CreateEntity(_userConnection);

            qualifyStatusEntity.PrimaryColumnValue = leadStatusId;
            qualifyStatusEntity.FetchFromDB(new List <string> {
                "IsFinal"
            }, false);
            return(qualifyStatusEntity.GetTypedColumnValue <bool>("IsFinal"));
        }
 internal override void applyMembers <A>(WSDynamicResponse <A> response)
 {
     try
     {
         if (EntitySchema != null)
         {
             EntitySchema.apply(response);
         }
     }
     catch (Exception e) { Func.RegError(GetType(), e, ref response.iostatus); }
 }
Example #21
0
        /// <summary>
        /// Deletes user
        /// </summary>
        /// <param name="userId">user Id</param>
        private void DeletePortalUser(Guid userId)
        {
            CheckCanChangeUserData(userId);
            EntitySchema adminUnitSchema = SystemUserConnection.EntitySchemaManager.GetInstanceByName("VwSysAdminUnit");
            Entity       adminUnitEntity = adminUnitSchema.CreateEntity(SystemUserConnection);

            if (adminUnitEntity.FetchFromDB(userId))
            {
                adminUnitEntity.Delete();
            }
        }
Example #22
0
        /// <summary>
        /// Creates a new <see cref="Terrasoft.Configuration.ContactSyncSettings"/> record
        /// for the specific <see cref="Terrasoft.Configuration.MailboxSyncSettings"/> identifier.
        /// </summary>
        /// <param name="mailboxId"><see cref="Terrasoft.Configuration.MailboxSyncSettings"/> identifier.</param>
        private void CreateNewContactSyncSettings(Guid mailboxId)
        {
            EntitySchema entitySchema = UserConnection.EntitySchemaManager.GetInstanceByName("ContactSyncSettings");
            Entity       contact      = entitySchema.CreateEntity(UserConnection);

            contact.SetDefColumnValues();
            contact.SetColumnValue("MailboxSyncSettingsId", mailboxId);
            contact.SetColumnValue("ExportContactsAll", true);
            contact.SetColumnValue("ImportContactsAll", true);
            contact.Save();
        }
        protected virtual ImportParameters GetImportParams(EntitySchema entitySchema)
        {
            var importParameters = new ImportParameters();

            importParameters.Entities = new List <ImportEntity>();
            var entity = new ImportEntity();

            importParameters.Entities.Add(entity);
            importParameters.RootSchemaUId = entitySchema.UId;
            return(importParameters);
        }
Example #24
0
        private bool GetIsRecordLevelRightAllowed(EntitySchema entitySchema,
                                                  Guid entityId, SchemaRecordRightLevels inspectRightLevel)
        {
            if (!_userConnection.DBSecurityEngine.GetIsEntitySchemaAdministratedByRecords(entitySchema))
            {
                return(true);
            }
            var rightLevel = _userConnection.DBSecurityEngine.GetEntitySchemaRecordRightLevel(entitySchema, entityId);

            return((rightLevel & inspectRightLevel) == inspectRightLevel);
        }
Example #25
0
        private EntityCollection FindEntityByPrimaryDisplay(EntitySchema entitySchema, string primaryDisplayValue)
        {
            var ESQ = new EntitySchemaQuery(entitySchema);

            ESQ.PrimaryQueryColumn.IsAlwaysSelect = true;
            ESQ.AddColumn(entitySchema.PrimaryDisplayColumn.Name);
            ESQ.Filters.Add(ESQ.CreateFilterWithParameters(FilterComparisonType.Equal, entitySchema.PrimaryDisplayColumn.Name, primaryDisplayValue));
            var entityCollection = ESQ.GetEntityCollection(UserConnection);

            return(entityCollection);
        }
Example #26
0
        private string GetEntityConnectionColumnName(EntitySchema activitySchema, EntityActivitiesOwnerInfo entityOwnerInfo)
        {
            string entityPrimaryColumnName = activitySchema.Columns
                                             .FirstOrDefault(column =>
                                                             column.IsLookupType &&
                                                             !column.UsageType.Equals(EntitySchemaColumnUsageType.Advanced) &&
                                                             column.ReferenceSchema.Name == entityOwnerInfo.EntitySchemaName &&
                                                             column.ColumnValueName.Contains(entityOwnerInfo.EntitySchemaName))?.ColumnValueName;

            return(entityPrimaryColumnName);
        }
Example #27
0
        private Entity CreateNewEnrichedData(TextEntities emailEntities)
        {
            EntitySchema enrchEmailDataSchema = _userConnection.EntitySchemaManager.GetInstanceByName("EnrchEmailData");
            Entity       newEnrichedData      = enrchEmailDataSchema.CreateEntity(_userConnection);

            newEnrichedData.SetDefColumnValues();
            newEnrichedData.SetColumnValue("JsonData", JsonConvert.SerializeObject(emailEntities));
            newEnrichedData.SetColumnValue("Hash", emailEntities.GetHash());
            newEnrichedData.Save();
            return(newEnrichedData);
        }
        public bool Execute(string sourceSchemaName, params Guid[] records)
        {
            sourceSchemaName.CheckArgumentNullOrWhiteSpace(nameof(sourceSchemaName));
            records.CheckIsNotEmpty(nameof(records));
            CheckUserPermissions(sourceSchemaName, records);
            EntitySchema folderEntitySchema = _userConnection.EntitySchemaManager.GetInstanceByName(sourceSchemaName);
            bool         result             = DeleteFromFavoriteFolder(folderEntitySchema.UId, records);

            DeleteFolders(folderEntitySchema, records);
            return(result);
        }
        private Entity GetTemplateFile(Guid fileId)
        {
            EntitySchema entitySchema = _userConnection.EntitySchemaManager.GetInstanceByName("SysReportTemplate");
            Entity       entity       = entitySchema.CreateEntity(_userConnection);

            if (!entity.FetchFromDB(fileId))
            {
                throw new ItemNotFoundException(_userConnection, fileId.ToString(), "WordReportingDesignWorker");
            }
            return(entity);
        }
        /// <summary>
        /// Returns files <see cref="EntityCollection"/> for copying.
        /// </summary>
        /// <param name="sourceMasterSchemaName">Source master schema name.</param>
        /// <param name="sourceMasterRecordId">Source master record uniqueidentifier.</param>
        /// <param name="primaryColumnName">Generated <see cref="EntitySchemaQuery"/> primary column name.</param>
        /// <returns>Files <see cref="EntityCollection"/>.</returns>
        protected virtual EntityCollection GetFilesToCopy(string sourceMasterSchemaName, Guid sourceMasterRecordId,
                                                          out string primaryColumnName)
        {
            EntitySchema sourceFileSchema = GetFileSchema(sourceMasterSchemaName);
            var          filesEsq         = new EntitySchemaQuery(sourceFileSchema);

            primaryColumnName = filesEsq.AddColumn(filesEsq.RootSchema.GetPrimaryColumnName()).Name;
            filesEsq.Filters.Add(filesEsq
                                 .CreateFilterWithParameters(FilterComparisonType.Equal, sourceMasterSchemaName, sourceMasterRecordId));
            return(filesEsq.GetEntityCollection(UserConnection));
        }
        private Entity GetReportEntity(Guid reportId)
        {
            EntitySchema entitySchema = _userConnection.EntitySchemaManager.GetInstanceByName("SysModuleReport");
            Entity       entity       = entitySchema.CreateEntity(_userConnection);

            if (!entity.FetchFromDB(reportId))
            {
                throw new ItemNotFoundException(_userConnection, reportId.ToString(), "WordReportingDesignWorker");
            }
            return(entity);
        }
        /// <summary>
        /// Returns <see cref="SyncErrorMessage"/> instance filtered by <paramref name="errorCode"/>.z
        /// </summary>
        /// <param name="errorCode"><see cref="SyncErrorMessage.Code"/> column value.</param>
        /// <returns><see cref="SyncErrorMessage"/> instance.</returns>
        protected Entity GetSyncErrorMessageByCode(Guid errorCodeId)
        {
            EntitySchema syncErrorMessageSchema = _schemaManager.GetInstanceByName("SyncErrorMessage");
            Entity       syncErrorMessage       = syncErrorMessageSchema.CreateEntity(UserConnection);

            if (syncErrorMessage.FetchFromDB(errorCodeId, false))
            {
                return(syncErrorMessage);
            }
            return(null);
        }
        public CompositeEntitySchema(EntitySchema schema, IEnumerable<EntitySchema> ancestorSchemas, bool copyRelationProxiesFromSchema = false)
            : base(schema.Alias, schema.Name)
        {
            //TODO: Need to move this into a mapper, but not currently one available at the right level
            Id = schema.Id;
            SchemaType = SchemaType;
            AttributeGroups.AddRange(schema.AttributeGroups);
            AttributeDefinitions.AddRange(schema.AttributeDefinitions);
            UtcCreated = schema.UtcCreated;
            UtcModified = schema.UtcModified;
            UtcStatusChanged = schema.UtcStatusChanged;

            var inheritedDefsDict = new Dictionary<string, InheritedAttributeDefinition>();
            var inheritedDefs = ancestorSchemas
                .SelectMany(entitySchema => entitySchema.AttributeDefinitions.Select(definition => new InheritedAttributeDefinition(definition, entitySchema))).ToArray();
            foreach (var def in inheritedDefs)
            {
                if (!inheritedDefsDict.ContainsKey(def.Alias))
                    inheritedDefsDict.Add(def.Alias, def);
            }

            InheritedAttributeDefinitions = new EntityCollection<InheritedAttributeDefinition>(inheritedDefsDict.Values);

            // Need to only show the inherited groups that are exposed by the filtered inherited attribute definitions, but also include empty
            // groups so that they have a chance to have some definitions added
            var allLinkedGroups = ancestorSchemas.SelectMany(x => x.AttributeDefinitions.Select(y => new InheritedAttributeGroup(y.AttributeGroup, x)));
            var allKnownGroups = ancestorSchemas.SelectMany(x => x.AttributeGroups.Select(y => new InheritedAttributeGroup(y, x)));
            var unlinkedGroups = allKnownGroups.Except(allLinkedGroups);

            var inheritedGroups =
                InheritedAttributeDefinitions.Select(x => new InheritedAttributeGroup(x.AttributeGroup, x.Schema)).Union
                    (unlinkedGroups);

            InheritedAttributeGroups = new EntityCollection<InheritedAttributeGroup>(inheritedGroups);

            RelationProxies.LazyLoadDelegate = schema.RelationProxies.LazyLoadDelegate;
            XmlConfiguration = schema.XmlConfiguration;

            if (copyRelationProxiesFromSchema)
            {
                foreach (var proxies in schema.RelationProxies.GetManualParentProxies())
                {
                    RelationProxies.EnlistParent(proxies.Item.Source, proxies.Item.Type, proxies.Item.Ordinal, proxies.Item.MetaData.ToArray());
                }
                foreach (var proxies in schema.RelationProxies.GetManualChildProxies())
                {
                    RelationProxies.EnlistParent(proxies.Item.Source, proxies.Item.Type, proxies.Item.Ordinal, proxies.Item.MetaData.ToArray());
                }
            }
        }
        public InheritedAttributeDefinition(AttributeDefinition attributeDefinition, EntitySchema schema)
            : base(attributeDefinition.Alias, attributeDefinition.Name)
        {
            Id = attributeDefinition.Id;
            Description = attributeDefinition.Description;
            AttributeType = attributeDefinition.AttributeType;
            Ordinal = attributeDefinition.Ordinal;
            RenderTypeProviderConfigOverride = attributeDefinition.RenderTypeProviderConfigOverride;
            AttributeGroup = attributeDefinition.AttributeGroup != null ? new InheritedAttributeGroup(attributeDefinition.AttributeGroup, schema) : null;
            UtcCreated = attributeDefinition.UtcCreated;
            UtcModified = attributeDefinition.UtcModified;
            UtcStatusChanged = attributeDefinition.UtcStatusChanged;

            Schema = schema;
        }
        public void WhenSavingEntitySchemaWithGroups_GroupIdsGetPopulated()
        {
            var group1 = new AttributeGroup("group1", "Group 1", 0);
            var schema = new EntitySchema("schema");
            schema.AttributeGroups.Add(group1);

            using (var writer = ProviderSetup.UnitFactory.Create())
            {
                writer.EntityRepository.Schemas.AddOrUpdate(schema);
                writer.Complete();
            }

            Assert.False(schema.Id.IsNullValueOrEmpty());
            Assert.False(group1.Id.IsNullValueOrEmpty());
        }
        public EntitySchemaViewModel(EntitySchemaCollection srcCollection, EntitySchema schema)
        {
            Attributes = new ObservableCollection<ItemInfoKVP>();
             this.Schema = schema;
             this.EntityType = schema.EntityType;
             this.Category = schema.Category;
             this.SupportedEntities = new ObservableCollection<string>();

             foreach ( var se in schema.SupportedEntityTypes )
             {
            SupportedEntities.Add(se);
             }

             foreach ( var kvp in schema.Attributes )
             {
            ItemInfoKVP item = new ItemInfoKVP() { Key = kvp.Key, Value = kvp.Value};
            Attributes.Add(item);
            item.OnItemEndEdit += item_OnItemEndEdit;
            item.PropertyChanged += item_PropertyChanged;
            item.PropertyChanging += item_PropertyChanging;
             }

             Attributes.CollectionChanged += Attributes_CollectionChanged;
        }
Example #37
0
        /// <summary>
        /// Creates the new content entity.
        /// </summary>
        /// <param name="docTypeData">The doc type data.</param>
        /// <param name="name">The name.</param>
        /// <param name="parentId">The parent id.</param>
        /// <returns></returns>
        private MediaEditorModel CreateNewContentEntity(EntitySchema docTypeData, string name, HiveId parentId)
        {
            Mandate.ParameterNotNull(docTypeData, "docTypeData");
            Mandate.ParameterNotEmpty(parentId, "parentId");

            //get doc type model
            var docType = BackOfficeRequestContext.Application.FrameworkContext.TypeMappers.Map<EntitySchema, DocumentTypeEditorModel>(docTypeData);
            //map (create) content model from doc type model
            var contentModel = BackOfficeRequestContext.Application.FrameworkContext.TypeMappers.Map<DocumentTypeEditorModel, MediaEditorModel>(docType);
            contentModel.ParentId = parentId;
            contentModel.Name = name;
            return contentModel;
        }
 public static EntitySchema CreateEntitySchema(string alias, string name, params AttributeDefinition[] attributeDefinitions)
 {
     var def = new EntitySchema();
     def.Setup(alias, name);
     def.AttributeDefinitions.AddRange(attributeDefinitions);
     return def;
 }
        /// <summary>
        /// TEMPORARY method to install all data required for dev data set excluding all of the core data
        /// </summary>
        /// <param name="manager"></param>
        /// <param name="framework"></param>
        internal void InstallDevDataset(IHiveManager manager, IFrameworkContext framework)
        {
            //LogHelper.Error<PugpigInstallTask>(
                 //      string.Format("Inside the dataset class"), new Exception());

            //a list of all the schemas we've added
            var schemas = new List<EntitySchema>();

            using (var writer = manager.OpenWriter<IContentStore>())
            {
                //create all of the document type's and their associated tabs first
                //foreach (var d in _devDataSet.ContentData.Select(x => x.DocumentType).DistinctBy(x => x.Id))
                foreach (var d in DocTypes)
                {

                    var schema = new EntitySchema(d.Alias, d.Name);
                    schema.Id = d.Id;
                    schema.AttributeGroups.AddRange(
                        framework.TypeMappers.Map<IEnumerable<Tab>, IEnumerable<AttributeGroup>>(
                            d.DefinedTabs));

                    writer.Repositories.Schemas.AddOrUpdate(schema);
                    schemas.Add(schema);

                    foreach (var parentId in d.InheritFrom.Where(x => x.Selected).Select(x => HiveId.Parse(x.Value)))
                        writer.Repositories.AddRelation(new Relation(FixedRelationTypes.DefaultRelationType, parentId, d.Id));
                }
                writer.Complete();
            }

            using (var writer = manager.OpenWriter<IContentStore>())
            {
                //now we can hopefully just map the schema and re-save it so it maps all properties
                //foreach (var d in _devDataSet.ContentData.Select(x => x.DocumentType).DistinctBy(x => x.Id))
                IEnumerable<TypedEntity> typedEntities = writer.Repositories.GetAll<TypedEntity>();

                foreach (var d in DocTypes)
                {

                    var schema = framework.TypeMappers.Map<DocumentTypeEditorModel, EntitySchema>(d);

                    writer.Repositories.Schemas.AddOrUpdate(schema);
                }
                writer.Complete();
            }

            using (var writer = manager.OpenWriter<IContentStore>())
            {
                //now just map the entire content entities and persist them, since the attribution definitions and attribution
                //groups are created these should just map up to the entities in the database.

                var mappedCollection = framework
                    .TypeMappers.Map<IEnumerable<ContentEditorModel>, IEnumerable<Revision<TypedEntity>>>(ContentData)
                    .ToArray();
                mappedCollection.ForEach(x => x.MetaData.StatusType = FixedStatusTypes.Published);

                //var allAttribTypes = AllAttribTypes(mappedCollection);

                writer.Repositories.Revisions.AddOrUpdate(mappedCollection);

                writer.Complete();
            }

            ////now that the data is in there, we need to setup some structure... probably a nicer way to do this but whatevs... its just for testing
            //using (var writer = mappingGroup.CreateReadWriteUnitOfWork())
            //{
            //    var homeSchema = writer.ReadWriteRepository.GetEntity<EntitySchema>(HiveId.ConvertIntToGuid(1045));
            //    var contentSchema = writer.ReadWriteRepository.GetEntity<EntitySchema>(HiveId.ConvertIntToGuid(1045));
            //    var faqContainerSchema = writer.ReadWriteRepository.GetEntity<EntitySchema>(HiveId.ConvertIntToGuid(1055));
            //    var faqCatSchema = writer.ReadWriteRepository.GetEntity<EntitySchema>(HiveId.ConvertIntToGuid(1056));
            //    var faqSchema = writer.ReadWriteRepository.GetEntity<EntitySchema>(HiveId.ConvertIntToGuid(1057));

            //}
        }
        public static Revision<TypedEntity> CreateVersionedTypedEntity(EntitySchema schema, TypedAttribute[] attribs)
        {
            var entity = new Revision<TypedEntity>
                {
                    Item = new TypedEntity
                        {
                            EntitySchema = schema
                        }
                };

            entity.Item.Attributes.Reset(attribs);

            entity.MetaData = new RevisionData();

            return entity;
        }
 public static TypedEntity CreateTypedEntity(EntitySchema schema, TypedAttribute[] attribs, bool assignId = false)
 {
     var entity = new TypedEntity
         {
             EntitySchema = schema
         };
     entity.Attributes.Reset(attribs);
     if (assignId)
         entity.Id = new HiveId(Guid.NewGuid());
     return entity;
 }
 public void Update()
 {
     EntitySchema schema = new EntitySchema(EntityType, Category, SupportedEntities);
      EntitySchema.AddSchema(schema);
      foreach ( var item in Attributes )
      {
     schema.AddAttribute(item.Key, item.Value);
      }
 }
 public static EntitySchema CreateEntitySchema(string alias, string name, bool assignId, params AttributeDefinition[] attributeDefinitions)
 {
     var def = new EntitySchema();
     def.Setup(alias, name);
     def.AttributeDefinitions.AddRange(attributeDefinitions);
     if (assignId)
         def.Id = new HiveId(Guid.NewGuid());
     return def;
 }