Exemple #1
0
        private void InitializeDB()
        {
            this.OrganizationId   = Guid.NewGuid();
            this.OrganizationName = "MockupOrganization";

            // Setup currencies
            var currencies = new List <Entity>();

            foreach (var entity in metadata.Currencies)
            {
                Utility.RemoveAttribute(entity, "createdby", "modifiedby", "organizationid", "modifiedonbehalfby", "createdonbehalfby");
                if (db.GetEntityOrNull(entity.ToEntityReference()) == null)
                {
                    db.Add(entity);
                }
            }

            // Setup root business unit
            var rootBu = metadata.RootBusinessUnit;

            if (db.GetEntityOrNull(metadata.RootBusinessUnit.ToEntityReference()) == null)
            {
                rootBu["name"] = "RootBusinessUnit";
                rootBu.Attributes.Remove("organizationid");
                this.db.Add(rootBu, false);
            }
            this.RootBusinessUnitRef = rootBu.ToEntityReference();

            // Setup admin user
            var admin = new Entity(LogicalNames.SystemUser)
            {
                Id = Guid.NewGuid()
            };

            this.AdminUserRef = admin.ToEntityReference();

            admin["firstname"]      = "";
            admin["lastname"]       = "SYSTEM";
            admin["businessunitid"] = RootBusinessUnitRef;
            this.db.Add(admin);

            // Setup default team for root business unit
            var allTeams = db.GetEntities("team");

            if (!allTeams.Any(x => (!x.Contains("teamtype") || x.GetAttributeValue <OptionSetValue>("teamtype").Value == 0) &&
                              x.GetAttributeValue <EntityReference>("businessunitid").Id == RootBusinessUnitRef.Id &&
                              x.GetAttributeValue <bool>("isdefault")))
            {
                var defaultTeam = Utility.CreateDefaultTeam(rootBu, AdminUserRef);
                this.db.Add(defaultTeam);

                // Adding admin user to root business unit default team
                var teamMembership = new Entity(LogicalNames.TeamMembership);
                teamMembership["teamid"]       = defaultTeam.Id;
                teamMembership["systemuserid"] = admin.Id;
                teamMembership.Id = Guid.NewGuid();
                this.db.Add(teamMembership);
            }
        }
Exemple #2
0
        private List <Entity> GetAliasedValuesFromLinkentity(LinkEntity linkEntity, Entity parent, Entity toAdd, IXrmDb db)
        {
            var collection = new List <Entity>();

            foreach (var linkedRow in db.GetEntities(linkEntity.LinkToEntityName))
            {
                var linkedEntity = linkedRow;

                if (linkedEntity.Attributes.ContainsKey(linkEntity.LinkToAttributeName) &&
                    parent.Attributes.ContainsKey(linkEntity.LinkFromAttributeName))
                {
                    var linkedAttr = Utility.ConvertToComparableObject(linkedEntity.Attributes[linkEntity.LinkToAttributeName]);
                    var entAttr    = Utility.ConvertToComparableObject(parent.Attributes[linkEntity.LinkFromAttributeName]);

                    if (linkedAttr.Equals(entAttr))
                    {
                        var aliasedEntity = GetEntityWithAliasAttributes(linkEntity.EntityAlias, toAdd, metadata.EntityMetadata.GetMetadata(toAdd.LogicalName), linkedEntity.Attributes);

                        if (linkEntity.LinkEntities.Count > 0)
                        {
                            var subEntities = new List <Entity>();

                            foreach (var nestedLinkEntity in linkEntity.LinkEntities)
                            {
                                nestedLinkEntity.LinkFromEntityName = linkEntity.LinkToEntityName;

                                var alliasedLinkValues = GetAliasedValuesFromLinkentity(nestedLinkEntity, linkedEntity, aliasedEntity, db);
                                subEntities.AddRange(alliasedLinkValues.Where(e => Utility.MatchesCriteria(e, linkEntity.LinkCriteria)));
                            }

                            collection.AddRange(subEntities);
                        }
                        else if (Utility.MatchesCriteria(aliasedEntity, linkEntity.LinkCriteria))
                        {
                            collection.Add(aliasedEntity);
                        }
                    }
                }
            }
            if (linkEntity.JoinOperator == JoinOperator.LeftOuter && collection.Count == 0)
            {
                collection.Add(toAdd);
            }
            return(collection);
        }
Exemple #3
0
        internal void AddRoleTemplatesForBusinessUnit(IXrmDb db, EntityReference businessUnit)
        {
            var allRoleTemplates = db.GetEntities("roletemplate");

            foreach (var sr in SecurityRoles.Values.Where(x => x.RoleTemplateId != Guid.Empty).GroupBy(x => x.RoleTemplateId).Select(x => x.Key))
            {
                if (!allRoleTemplates.Any(x => x.Id == sr))

                {
                    var roleTemplate = new Entity("roletemplate")
                    {
                        Id = sr
                    };

                    db.Add(roleTemplate);
                }
            }
        }