Exemple #1
0
 public static async Task <string> GetPropertyForEditValidation(PropertyDetailsRequest model, MetadataDbContext dbContext)
 {
     if (!await dbContext.Properties.AnyAsync(x => x.Id == model.PropertyId))
     {
         return("Property not found");
     }
     return(string.Empty);
 }
Exemple #2
0
        public async Task <ActionResult <AddNEditPropertyModel> > GetPropertyForEdit(PropertyDetailsRequest request)
        {
            if (!_permissionService.IsAllowed(new ActionRequestInfo(HttpContext, _implementations, null, ActionTypeEnum.ManageMetadata)))
            {
                return(Unauthorized());
            }

            var validationMessage = await MetadataValidationLogic.GetPropertyForEditValidation(request, _dbContext);

            if (!string.IsNullOrEmpty(validationMessage))
            {
                return(StatusCode(400, validationMessage));
            }

            var model = await _dbContext.Properties.Select(x => new AddNEditPropertyModel
            {
                DataEntityTypeId     = x.DataEntityTypeId,
                DataTypeId           = (int)x.DataTypeId,
                OwnerEntityTypeId    = x.OwnerEntityTypeId,
                ForeignKeyPropertyId = x.ForeignKeyPropertyId,
                NewForeignKeyName    = x.ForeignKeyProperty.Name,
                Id = x.Id,
                InversePropertyId = x.InversePropertyId,
                IsNullable        = x.IsNullable,
                Name = x.Name,
                PropertyGeneralUsageCategoryId = x.GeneralUsageCategoryId,
                Title       = x.Title,
                LocalFacets = x.PropertyFacetValues.Select(y => new LocalFacetModel
                {
                    FacetName = y.FacetDefinition.Name,
                    Value     = y.Value
                }).ToList(),
                PropertyBehaviors = x.PropertyBehaviors.Select(b => new PropertyBehaviorModel
                {
                    Id                   = b.Id,
                    Parameters           = b.Parameters,
                    AdditionalBehaviorId = b.AdditionalBehaviorId
                }).ToList(),
            }).SingleOrDefaultAsync(x => x.Id == request.PropertyId);

            if (model.DataTypeId == (int)DataTypeEnum.NavigationEntity)
            {
                var inverse = await _dbContext.Properties.SingleOrDefaultAsync(x => x.InversePropertyId == model.Id);

                if (inverse != null)
                {
                    model.InversePropertyId       = inverse.Id;
                    model.NewInversePropertyTitle = inverse.Title;
                    model.NewInversePropertyName  = inverse.Name;
                }
                model.InversePropertyAction = model.ForeignKeyAction = RelatedPropertyAction.DontChange;
                model.NewForeignKeyId       = model.ForeignKeyPropertyId;
                model.NewInversePropertyId  = model.InversePropertyId;
            }
            return(model);
        }