public SaveResult SaveBodyContent(UpdatePropertyData updatePropertyData) { HashSet <Type> types = TypeHelper.GetAllConcreteTypesAssignableFrom <SystemEntity>(); Type entityType = types.FirstOrDefault(t => t.Name == updatePropertyData.Type); if (entityType == null) { return(new SaveResult(false, string.Format(_stringResourceProvider.GetValue("Admin Inline Editing Save Entity Not Found", "Could not find entity type '{0}'"), updatePropertyData.Type))); } object entity = _session.Get(entityType, updatePropertyData.Id); if (entity == null) { return(new SaveResult(false, string.Format(_stringResourceProvider.GetValue("Admin InlineEditing Save Not Found", "Could not find entity of type '{0}' with id {1}"), updatePropertyData.Type, updatePropertyData.Id))); } PropertyInfo propertyInfo = entityType.GetProperties().FirstOrDefault(info => info.Name == updatePropertyData.Property); if (propertyInfo == null) { return(new SaveResult(false, string.Format(_stringResourceProvider.GetValue("Admin InlineEditing Save NotFound", "Could not find entity of type '{0}' with id {1}"), updatePropertyData.Type, updatePropertyData.Id))); } StringLengthAttribute stringLengthAttribute = propertyInfo.GetCustomAttributes(true).FirstOrDefault(x => x.GetType() == typeof(StringLengthAttribute)) as StringLengthAttribute; if (stringLengthAttribute != null && updatePropertyData.Content.Length > stringLengthAttribute.MaximumLength) { return(new SaveResult { success = false, message = string.Format(_stringResourceProvider.GetValue("Admin InlineEditing Save MaxLength", "Could not save property. The maximum length for this field is {0} characters."), stringLengthAttribute.MaximumLength) }); } if (string.IsNullOrWhiteSpace(updatePropertyData.Content) && propertyInfo.GetCustomAttributes(typeof(RequiredAttribute), false).Any()) { return(new SaveResult(false, string.Format(_stringResourceProvider.GetValue("Admin InlineEditing Save Required", "Could not edit '{0}' as it is required"), updatePropertyData.Property))); } try { propertyInfo.SetValue(entity, updatePropertyData.Content, null); _session.Transact(session => session.SaveOrUpdate(entity)); } catch (Exception ex) { CurrentRequestData.ErrorSignal.Raise(ex); return(new SaveResult(false, string.Format(_stringResourceProvider.GetValue("Admin InlineEditing Save Error", "Could not save to database '{0}' due to unknown error. Please check log."), updatePropertyData.Property))); } return(new SaveResult()); }
public JsonResult SaveBodyContent(UpdatePropertyData updatePropertyData) { return(Json(_inPageAdminService.SaveBodyContent(updatePropertyData))); }