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); }
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); }