private void AddMembership(FluentQueryBuilder queryBuilder)
        {
            var ownerOfApplication = new ApplicationOwner() { guid = Guid.NewGuid().ToString("N"), name = "RAM" };
            var user = new User() { guid = Guid.NewGuid().ToString("N"), firstName = "Alex", lastName = "Stroukov", email = "*****@*****.**" };
            var membership = new Membership() { guid = Guid.NewGuid().ToString("N"), licence = "asajzjdZKHJXZJKSjsLSlSjjs897JS8shKSJSHLSKS" };




            var userRole = new UserRole() { guid = Guid.NewGuid().ToString("N"), name = "Administrator" };

            





            var hasUserRelationship = new HasUser() { };
            var hasRoleRelationship = new HasAction() { };
            var hasApplicationRelationship = new HasApplication() { };
            var usedByApplicationRelationship = new UsedByApplication() { };
            var userOfApplicationRelationship = new UserOfApplication() { };

            var entityGridBasicTemplate = new Template { guid = Guid.NewGuid().ToString("N"), name = "entityGridBasic", location = string.Format("StagedSpa/templates/{0}", "entity-grid-basic.html") };


            var entityDetailsBasicTemplate = new Template { guid = Guid.NewGuid().ToString("N"), name = "entityDetailsBasic", location = string.Format("StagedSpa/templates/{0}", "entity-details-basic.html") };


            
            var hasEntityGridScreen = new HasScreen{ screenType = Enum.ScreenTypeEnum.EntityGrid};
            var hasEntityDetailsScreen = new HasScreen { screenType = Enum.ScreenTypeEnum.EntityDetails };

            var hasTemplate = new HasTemplate { };



            var hasMembershipRelationship = new HasMembership() { runsOutOnMillis = (long)(DateTime.UtcNow.AddMonths(1) - new DateTime(1970, 1, 1)).TotalMilliseconds };



            queryBuilder
                .Create(ownerOfApplication)
                .Create(user)
                .Create(membership)
                .Create(_application)
                .Create(userRole)
                .Create(assetsScreen)
                .Create(assetDetailsScreen)
                .Create(entityGridBasicTemplate)
                .Create(entityDetailsBasicTemplate)
                .Create(_navigateToEntityDetailsCommand)
                .Create(_navigateToEntityDetailsCommand2)

                .Create(_eGridWidget)
                .Create(_eGridTileWidget)
                .Create(_seGridWidget)
                .Create(_seGridTileWidget)
                .Create(_dpTextWidget)
                .Create(_dpTextWidget2)
                .Create(_dpTextWidget3)
                .Create(_epDropdownWidget)

                .RelateTo(_eGridTileWidget, new HasAction(), _navigateToEntityDetailsCommand)
                .RelateTo(_navigateToEntityDetailsCommand, new RelatedActionScreen(), assetDetailsScreen)


                .RelateTo(_seGridTileWidget, new HasAction(), _navigateToEntityDetailsCommand2)
                .RelateTo(_navigateToEntityDetailsCommand2, new RelatedActionScreen(), assetDetailsScreen)

                .RelateTo(ownerOfApplication, hasMembershipRelationship, membership)
                .RelateTo(ownerOfApplication, hasUserRelationship, user)
                .RelateTo(user, hasRoleRelationship, userRole)
                .RelateTo(ownerOfApplication, hasApplicationRelationship, _application)
                .RelateTo(user, userOfApplicationRelationship, _application)

                .RelateTo(userRole, usedByApplicationRelationship, _application)
                .RelateTo(_application, hasEntityDetailsScreen, assetDetailsScreen)
                .RelateTo(_application, hasEntityGridScreen, assetsScreen)

                .RelateTo(assetsScreen, hasTemplate, entityGridBasicTemplate)
                .RelateTo(entityGridBasicTemplate, new HasWidget (), _eGridWidget)
                .RelateTo(_eGridWidget, new HasWidget(), _eGridTileWidget)
                

                .RelateTo(assetDetailsScreen, hasTemplate, entityDetailsBasicTemplate)
                .RelateTo(entityDetailsBasicTemplate, new HasWidget(), _dpTextWidget)
                .RelateTo(entityDetailsBasicTemplate, new HasWidget(), _epDropdownWidget)
                .RelateTo(entityDetailsBasicTemplate, new HasWidget(), _dpTextWidget2)
                .RelateTo(entityDetailsBasicTemplate, new HasWidget(), _dpTextWidget3)
                .RelateTo(entityDetailsBasicTemplate, new HasWidget(), _seGridWidget)
                .RelateTo(_seGridWidget, new HasWidget(), _seGridTileWidget)
                
                ;

        }
        public IHttpActionResult Insert([FromBody] CreateScreenVm value)
        {
            var queryBuilder = new FluentQueryBuilder();
            var templates = Enum.GetValues(typeof(TemplateEnum)).Cast<TemplateEnum>().ToList().Select(t => t.ToTemplateVm());

            var matchingTemplate = templates.First(t => t.name == value.screen.template.name);

            var screen = new Screen() { guid = Guid.NewGuid().ToString("N"), name = "New Screen" };
            var template = new Template()
            {
                guid = Guid.NewGuid().ToString("N"),
                name = value.screen.template.name,
                location = matchingTemplate.location
            };

            queryBuilder
                .Create(screen)
                .Create(template)
                .RelateTo(screen, new HasTemplate(), template)
                .RelateTo(StagedDbContext._application, new HasScreen { screenType = value.screen.screenType }, screen)
                
                ;


            foreach (var widget in value.screen.template.widgets)
            {
                var widgetNode = new Widget { guid = Guid.NewGuid().ToString("N"), widgetSchema = widget.widget };

                var propertyNode = new Property() { guid = widget.data.guid };


                queryBuilder
                    .Create(widgetNode)
                    .RelateTo(template, new HasWidget(), widgetNode)
                    .RelateTo(widgetNode, new DisplaysValueFor(), propertyNode)
                    ;

                if (widget.data.next == null || widget.data.next.guid == null) continue;


                if (widget.data.next.next == null || widget.data.next.next.guid == null)
                {
                    var entityPropertyNode = new Property() { guid = widget.data.next.guid };
                    queryBuilder
                        .RelateTo(widgetNode, new ForThisHeaderProperty(), entityPropertyNode);
                }
                else
                {
                    var entityPropertyNode = new Property() { guid = widget.data.next.next.guid };
                    queryBuilder
                        .RelateTo(widgetNode, new ForThisHeaderProperty(), entityPropertyNode);
                }





            }
            

            queryBuilder.Execute(StagedDbContext.Instance.GraphClient.Cypher);

            
            return Ok();
        }