Ejemplo n.º 1
0
        public ActionResult Edit(long?field_id, string field_name, string field_friendly_name, string field_type, string field_description, long?filed_content_root, string filed_template_name, bool?field_is_filter, bool?field_inside_domain, long?filed_tags_limit, string field_rel_field)
        {
            field_is_filter = field_is_filter ?? false; field_inside_domain = field_inside_domain ?? true;

            string column_data_type;

            switch (field_type)
            {
            case "string":
            case "html":
            case "multiplelist":
            case "tags":
                column_data_type = "TEXT";
                break;

            case "decimal":
                column_data_type = "DECIMAL(10,2)";
                break;

            case "integer":
                column_data_type = "INT";
                break;

            case "boolean":
                column_data_type = "BOOL";
                break;

            case "date":
                column_data_type = "DATE";
                break;

            case "datetime":
                column_data_type = "DATETIME";
                break;

            case "list":
                column_data_type = "BIGINT";
                break;

            default:
                column_data_type = "TEXT";
                break;
            }

            field_name = Transliterator.Translite(string.IsNullOrWhiteSpace(field_name) ? field_friendly_name : field_name, '_');

            using (FieldRepository field_repository = new FieldRepository())
            {
                using (ContentRepository content_repository = new ContentRepository())
                {
                    if (field_id.HasValue)
                    {
                        var old_field = field_repository.GetByID(field_id.Value);

                        if (!old_field.field_system)
                        {
                            if (field_name != old_field.field_name && field_repository.Exists(field_name))
                            {
                                field_name = field_name + "_" + field_id.Value.ToString();
                            }

                            content_repository.EditColumn(old_field.field_name, field_name, column_data_type);
                        }

                        field_repository.Update(field_id.Value, field_name, field_friendly_name, field_type, field_description, filed_content_root, string.IsNullOrWhiteSpace(filed_template_name) ? null : filed_template_name, field_is_filter.Value, field_inside_domain.Value, filed_tags_limit, field_rel_field);
                    }
                    else
                    {
                        field_id = field_repository.CreateGlobalID();

                        if (field_repository.Exists(field_name))
                        {
                            field_name = field_name + "_" + field_id.ToString();
                        }

                        content_repository.AddColumn(field_name, column_data_type);

                        field_repository.Create(field_name, field_friendly_name, field_type, field_description, "Пользовательские", filed_content_root, string.IsNullOrWhiteSpace(filed_template_name) ? null : filed_template_name, field_is_filter.Value, field_inside_domain.Value, filed_tags_limit, field_rel_field);
                    }
                }
            }

            return(RedirectToAction("Index"));
        }