public void TestTempDeletedChildItemIgnored( )
        {
            var svc = new EntityInfoService( );

            EntityRef orgRef = null;

            try
            {
                var o = new Report
                {
                    Name  = "org rpt",
                    Alias = "shared:a" + Guid.NewGuid( )
                };

                var b = new ReportColumn
                {
                    Name            = "bob",
                    Alias           = "shared:a" + Guid.NewGuid( ),
                    ColumnForReport = o
                };

                EntityData result = svc.GetEntityData(b, EntityRequestHelper.BuildRequest("name, columnForReport.name"));

                result.Relationships[0].Instances[0].DataState = DataState.Delete;

                orgRef = svc.CreateEntity(result);
            }
            finally
            {
                if (orgRef != null)
                {
                    Entity.Delete(orgRef);
                }
            }
        }
        public void CreateInstance( )
        {
            // Define a new entity
            var data = new EntityData
            {
                Fields  = new List <FieldData>( ),
                TypeIds = new EntityRef("test", "person").ToEnumerable( ).ToList( )
            };

            data.Fields.Add(new FieldData
            {
                FieldId = new EntityRef("name"),
                Value   = new TypedValue("Isaac Newton")
            });

            // Create it
            var       svc = new EntityInfoService( );
            EntityRef id  = svc.CreateEntity(data);

            // Verify it was created
            Assert.IsTrue(id.Id > 0, "Positive Id");

            // Select the data
            EntityMemberRequest request = EntityRequestHelper.BuildRequest("name");
            EntityData          result  = svc.GetEntityData(id, request);

            // Verify results
            Assert.AreEqual("Isaac Newton", result.Fields[0].Value.Value);

            svc.DeleteEntity(id);
        }
Ejemplo n.º 3
0
        public static JsonEntityQueryResult GetJsonEntityQueryResult(ICollection <EntityRef> entityRefs, ICollection <string> requests)
        {
#pragma warning disable 618
            var svc = new EntityInfoService( );
#pragma warning restore 618
            var entityDataList = new List <EntityData>( );

            for (int i = 0; i < entityRefs.Count; ++i)
            {
                EntityRef entityRef = entityRefs.ElementAt(i);
                string    request   = i < requests.Count ? requests.ElementAt(i) : requests.Last( );

                var        rqObj      = Factory.RequestParser.ParseRequestQuery(request);
                EntityData entityData = svc.GetEntityData(entityRef, rqObj);

                entityDataList.Add(entityData);
            }

            if (entityDataList.Count(p => p != null) == 0)
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }

            var result = new JsonEntityQueryResult(entityDataList);
            return(result);
        }
Ejemplo n.º 4
0
        public void Test_GetFieldsRelationshipsControlsStructuredQueryString( )
        {
            EntityMemberRequest request = EntityRequestHelper.BuildRequest("k:context.name");

            var        svc    = new EntityInfoService( );
            EntityData result = svc.GetEntityData(new EntityRef("console", "singleLineTextControl"), request);

            Assert.IsNotNull(FindEntity(result, new EntityRef("console", "uiContextHtml").Id));
        }
        public void UpdateField( )
        {
            var rq = new EntityMemberRequest( );

            rq.Fields.Add(new EntityRef("description"));

            var        svc    = new EntityInfoService( );
            EntityData entity = svc.GetEntityData(new EntityRef("test", "person"), rq);

            entity.Fields[0].Value.Value = "Hello world";
            svc.UpdateEntity(entity);
        }
        public void GetFieldInstanceDbType( )
        {
            /////
            // Define a new entity
            /////
            var data = new EntityData
            {
                Fields  = new List <FieldData>( ),
                TypeIds = new EntityRef("test", "person").ToEnumerable( ).ToList( )
            };

            /////
            // Create it
            /////
            var       svc = new EntityInfoService( );
            EntityRef id  = svc.CreateEntity(data);

            /////
            // Verify it was created
            /////
            Assert.IsTrue(id.Id > 0, "Positive Id");

            EntityMemberRequest fieldRequest = EntityRequestHelper.BuildRequest(@"
				fields.isOfType.name,
				fields.isOfType.alias,
				fields.isOfType.dbType,
				fields.isOfType.dbTypeFull,
				fields.isOfType.readiNowType,
				fields.isOfType.xsdType"                );

            EntityData result = svc.GetEntityData(data.TypeIds.First( ), fieldRequest);

            /////
            // Verify results
            /////
            Assert.AreEqual(1, result.Relationships.Count);

            svc.DeleteEntity(id);
        }
Ejemplo n.º 7
0
        /// <summary>
        ///     Add a request for an entity along with a query
        /// </summary>
        /// <param name="entityRef">The entity reference.</param>
        /// <param name="entityRequest">The entity request.</param>
        /// <param name="queryName">If set then the query is a named query.</param>
        public void AddEntityRequest(EntityRef entityRef, EntityMemberRequest entityRequest, string queryName = null)
        {
            EntityData entityData = _svc.GetEntityData(entityRef, entityRequest);

            AddEntityData(entityData, queryName);
        }
        public void UpdateFieldOnRelatedInstance( )
        {
            // Define a new entity
            var data = new EntityData
            {
                Fields  = new List <FieldData>( ),
                TypeIds = new EntityRef("test", "person").ToEnumerable().ToList()
            };

            data.Fields.Add(new FieldData
            {
                FieldId = new EntityRef("name"),
                Value   = new TypedValue("Isaac Newton")
            });

            // Define a new related entity
            var data2 = new EntityData
            {
                Fields  = new List <FieldData>( ),
                TypeIds = new EntityRef("test", "employee").ToEnumerable().ToList()
            };

            data2.Fields.Add(new FieldData
            {
                FieldId = new EntityRef("name"),
                Value   = new TypedValue("Isaac Newtons Emmployer")
            });
            data2.DataState = DataState.Create;

            data.Relationships = new List <RelationshipData>
            {
                new RelationshipData
                {
                    RelationshipTypeId = new EntityRef("test", "reportsTo"),
                    IsReverse          = false,
                    Instances          = new List <RelationshipInstanceData>
                    {
                        new RelationshipInstanceData
                        {
                            Entity    = data2,
                            DataState = DataState.Create
                        }
                    },
                }
            };

            // Create it
            var       svc = new EntityInfoService( );
            EntityRef id  = svc.CreateEntity(data);

            // Verify it was created
            Assert.IsTrue(id.Id > 0, "Positive Id");

            // Select the data
            EntityMemberRequest request = EntityRequestHelper.BuildRequest("name, test:reportsTo.name");
            EntityData          result  = svc.GetEntityData(id, request);

            // Verify results
            Assert.AreEqual("Isaac Newton", result.Fields[0].Value.Value);

            EntityData employee           = result.Relationships[0].Instances[0].Entity;
            FieldData  employersNameField = employee.Fields[0];

            Assert.AreEqual("Isaac Newtons Emmployer", employersNameField.Value.Value);

            // Update employees name
            employersNameField.Value.Value = "bob";
            employee.DataState             = DataState.Update;

            svc.UpdateEntity(result);

            // comfirm it changed
            EntityData resultAfterUpdate = svc.GetEntityData(id, request);

            employee           = resultAfterUpdate.Relationships[0].Instances[0].Entity;
            employersNameField = employee.Fields[0];
            Assert.AreEqual("bob", employersNameField.Value.Value);

            // delete the referenced Entity leaving the data state of the top entity unchanged
            employee.DataState = DataState.Delete;

            svc.UpdateEntity(resultAfterUpdate);

            // comfirm it deleted
            EntityData resultAfterDelete = svc.GetEntityData(id, request);

            Assert.AreEqual(0, resultAfterDelete.Relationships[0].Instances.Count, "There should be no manager");

            // clean up
            svc.DeleteEntity(id);
        }
Ejemplo n.º 9
0
        public void GetFormActionsForForm()
        {
            var personType = Entity.Get <Definition>("core:person");
            var personForm = Entity.Get <CustomEditForm>(personType.DefaultEditForm.Id, true);

            // fetch action for the person type
            var request = new ActionRequestExtended
            {
                EntityTypeId         = personType.Id,
                FormId               = personType.DefaultEditForm.Id,
                ActionDisplayContext = ActionContext.All
            };

            var actionSvc = new ActionService();

            actionSvc.FlushCaches();

            var result = actionSvc.GetFormActionsMenuState(request);

            result.Should().NotBeNull();
            result.Actions.Should().NotBeNull().And.NotBeEmpty();
            result.Actions.Count.Should().Be(2);
            result.Actions.Count(a => a.Name == "Assign Data to App").Should().Be(1);
            result.Actions.Count(a => a.Name == "Person Name Update").Should().Be(1);

            // create new action item and assign it to the form
            // form action
            var actionInfo = result.Actions.Find(a => a.Name == "Person Name Update");
            var wf         = Entity.Get <Workflow>(actionInfo.EntityId);

            // create workflow action item
            var wfActionMenuItem = new WorkflowActionMenuItem
            {
                Name                     = actionInfo.Name,
                MenuIconUrl              = actionInfo.Icon,
                MenuOrder                = actionInfo.Order,
                IsActionButton           = actionInfo.IsButton,
                IsMenuSeparator          = actionInfo.IsSeparator,
                IsContextMenu            = actionInfo.IsContextMenu,
                IsActionItem             = actionInfo.IsMenu,
                IsSystem                 = actionInfo.IsSystem,
                AppliesToSelection       = true,
                AppliesToMultiSelection  = false,
                HtmlActionMethod         = actionInfo.HtmlActionMethod,
                HtmlActionState          = actionInfo.HtmlActionState,
                ActionMenuItemToWorkflow = wf
            };

            var cb = new ConsoleBehavior
            {
                Name = $"DeleteMe_PersonForm_rcb {DateTime.Now}",
                BehaviorActionMenu = new ActionMenu
                {
                    Name = $"DeleteMe_PersonForm_rcb_menu {DateTime.Now}",
                    IncludeActionsAsButtons = new EntityCollection <ActionMenuItem>()
                    {
                        (ActionMenuItem)wfActionMenuItem
                    },
                    MenuItems = new EntityCollection <ActionMenuItem>()
                    {
                        (ActionMenuItem)wfActionMenuItem
                    }
                }
            };

            personForm.ResourceConsoleBehavior = cb;
            personForm.Save();

            var formActionQuery = @"{ k:resourceConsoleBehavior }
                                        .k:behaviorActionMenu.{
                                            { k:menuItems, k:suppressedActions, k:includeActionsAsButtons }.{
                                                {   name, 
                                                    description,
                                                    k:menuIconUrl,
                                                    htmlActionState,
                                                    htmlActionMethod,
                                                    k:isActionButton,
                                                    k:appliesToSelection,
                                                    k:isMenuSeparator, 
                                                    k:menuOrder,
                                                    { isOfType }.{ alias,name },
                                                    { k:actionMenuItemToWorkflow }.{ name },
                                                    { k:actionMenuItemToReportTemplate }.{ name }
                                                }
                                            },
                                            { k:includeTypesForNewButtons, k:suppressedTypesForNewMenu }.id
                                    }";

            // fetch form actions and check there is only one action button assigned to the form
            var entitySvc = new EntityInfoService();

            EntityMemberRequest req = EntityRequestHelper.BuildRequest(formActionQuery);
            var result2             = entitySvc.GetEntityData(personForm.Id, req);

            result2.Should().NotBeNull();

            var rcb = result2.Relationships.Find(a => a.RelationshipTypeId.Alias == "resourceConsoleBehavior");

            rcb.Should().NotBeNull();

            var actionMenu = rcb.Entities.First().Relationships.Find(a => a.RelationshipTypeId.Alias == "behaviorActionMenu");

            actionMenu.Should().NotBeNull();

            var actionButtons = actionMenu.Entities.First().Relationships.Find(a => a.RelationshipTypeId.Alias == "includeActionsAsButtons");

            actionButtons.Should().NotBeNull();

            var nameValue = actionButtons.Entities.First().Fields.Find(f => f.FieldId.Alias == "name").Value.Value;

            nameValue.Should().Be("Person Name Update");


            // delete console behavior
            Entity.Delete(cb.Id);
        }