示例#1
0
        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());
        }
示例#2
0
 public JsonResult SaveBodyContent(UpdatePropertyData updatePropertyData)
 {
     return(Json(_inPageAdminService.SaveBodyContent(updatePropertyData)));
 }