using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using UUN;
using System.Data.SqlClient;
using System.IO;
using System.Text.RegularExpressions;

public partial class Admin_YongHu_YongHuZiLiaoJieGou_ZengJia : System.Web.UI.Page
{
    private 访问 访问;
    protected void Page_Load(object sender, EventArgs e)
    {
        访问 = new 访问(this.Context);
        访问.开始处理("增加用户资料结构", "网站后台", "增加用户资料结构", new 访问.回调委托(ZhiXing));
        访问.关闭连接();
    }
    private void ZhiXing()
    {
        访问.验证管理员();

        if (this.IsPostBack)
            增加用户资料结构();
    }
    private void 重新编译文件()
    {
        编译文件("Club/ShouGongZhuCe",
            File.ReadAllText(Server.MapPath("~/Data/MoBan/Club/ShouGongZhuCe.txt"), System.Text.Encoding.UTF8),
            "手工注册会员");
        编译文件("Club/YongHu_ChaKan",
            File.ReadAllText(Server.MapPath("~/Data/MoBan/Club/YongHu_ChaKan.txt"), System.Text.Encoding.UTF8),
            "查看用户");
        编译文件("Club/XiuGaiZiLiao",
            File.ReadAllText(Server.MapPath("~/Data/MoBan/Club/XiuGaiZiLiao.txt"), System.Text.Encoding.UTF8),
            "修改资料");
    }
    private void 编译文件(String 位置, String 代码内容, String 文件名称)
    {
        String ASPX代码, CS代码;

        编译器 编译器 = new 编译器(this.Context, 访问.连接, 位置,true);
        编译器.开始执行代码 = 编译器.开始执行代码.Replace("$所在位置$", 文件名称)
            .Replace("$内容类型$", 位置.StartsWith("Club/", StringComparison.OrdinalIgnoreCase) ? "社区其它" : "内容其它")
            .Replace("$内容小类型$", 文件名称);

        CS代码 = 编译器.编译(代码内容, 位置, out ASPX代码);

        File.WriteAllText(Server.MapPath("~/" + 位置 + ".aspx"), ASPX代码, System.Text.Encoding.UTF8);
        File.WriteAllText(Server.MapPath("~/" + 位置 + ".aspx.cs"), CS代码, System.Text.Encoding.UTF8);
    }
    private void 更新用户_资料结构(String 数据名称, String 默认值)
    {
        DataSet 数据 = new DataSet();
        SqlCommand 语句 = new SqlCommand("SELECT [ID],[个人资料] FROM [" + 程序.数据表前缀 + "社区_用户_用户] WHERE [用户类型]='会员' ORDER BY [ID]", 访问.连接);
        SqlDataAdapter 填充 = new SqlDataAdapter(语句);
        填充.Fill(数据, "用户");

        for (int i = 0; i < 数据.Tables[0].Rows.Count; i++)
        {
            DataRow 行 = 数据.Tables[0].Rows[i];
            设置 设置 = new 设置(行["个人资料"].ToString());
            设置[数据名称] = 默认值;

            语句 = new SqlCommand("UPDATE [" + 程序.数据表前缀 + "社区_用户_用户] SET [个人资料]=@个人资料 WHERE [ID]=" + 行["ID"], 访问.连接);
            语句.Parameters.Add("@个人资料", SqlDbType.NVarChar).Value = 设置.生成XML();
            语句.ExecuteNonQuery();
        }
    }
    private void 增加用户资料结构()
    {
        访问.验证权限("29");
        String 数据名称 = ShuJuMingChen.Text;
        String 表单名称 = BiaoDanMingChen.Text;
        String 备注 = BeiZhu.Text;
        int 数据类型 = 0;
        if (ShuJuLeiXing_0.Checked)
            数据类型 = 0;
        else if (ShuJuLeiXing_1.Checked)
            数据类型 = 1;
        else
            数据类型 = 2;

        String 值列表 = ZhiLieBiao.Text;
        Int64 最小大小 = Convert.ToInt64(ZuiXiaoDaXiao.Text);
        Int64 最大大小 = Convert.ToInt64(ZuiDaDaXiao.Text);
        bool 是否注册项 = ShiFouZhuCeXiang.Checked;
        bool 是否修改资料项 = ShiFouXiuGaiZiLiaoXiang.Checked;
        bool 是否资料显示项 = ShiFouZiLiaoXianShiXiang.Checked;
        String 资料显示格式 = ZiLiaoXianShiGeShi.Text;
        bool 是否允许重复 = ShiFouYunXuChongFu_T.Checked;
        String 默认值 = MoRenZhi.Text;
        String 表单代码 = BiaoDanDaiMa.Text;

        SqlCommand 语句 = new SqlCommand("SELECT [ID] FROM [" + 程序.数据表前缀 + "社区_用户_资料结构] WHERE [数据名称]=@数据名称 OR [表单名称]=@表单名称", 访问.连接);
        语句.Parameters.Add("@数据名称", SqlDbType.NVarChar).Value = 数据名称;
        语句.Parameters.Add("@表单名称", SqlDbType.NVarChar).Value = 表单名称;
        SqlDataReader 读取 = 语句.ExecuteReader();
        if (读取.HasRows)
        {
            读取.Close();
            throw new Exception("表单项重复");
        }
        else
            读取.Close();

        int ZGID = 常用.SQL_最高ID(访问.连接, 程序.数据表前缀+"社区_用户_资料结构");
        语句 = new SqlCommand("INSERT INTO [" + 程序.数据表前缀 + "社区_用户_资料结构]([ID],[数据名称],[表单名称],[备注],[数据类型],[最小大小(长度)],[最大大小(长度)],[值列表],[是否注册项],[是否修改资料项],[是否允许重复],[是否资料显示项],[资料显示格式],[默认值],[表单代码])" +
            "VALUES(@ID,@数据名称,@表单名称,@备注,@数据类型,@最小大小,@最大大小,@值列表,@是否注册项,@是否修改资料项,@是否允许重复,@是否资料显示项,@资料显示格式,@默认值,@表单代码)", 访问.连接);
        语句.Parameters.Add("@ID", SqlDbType.Int).Value = ZGID;
        语句.Parameters.Add("@数据名称", SqlDbType.NVarChar).Value = 数据名称;
        语句.Parameters.Add("@表单名称", SqlDbType.NVarChar).Value = 表单名称;
        语句.Parameters.Add("@备注", SqlDbType.NVarChar).Value = 备注;
        语句.Parameters.Add("@数据类型", SqlDbType.NVarChar).Value = 数据类型;
        语句.Parameters.Add("@最小大小", SqlDbType.BigInt).Value = 最小大小;
        语句.Parameters.Add("@最大大小", SqlDbType.BigInt).Value = 最大大小;
        语句.Parameters.Add("@值列表", SqlDbType.NVarChar).Value = 值列表;
        语句.Parameters.Add("@是否注册项", SqlDbType.Bit).Value = 是否注册项;
        语句.Parameters.Add("@是否修改资料项", SqlDbType.Bit).Value = 是否修改资料项;
        语句.Parameters.Add("@是否允许重复", SqlDbType.Bit).Value = 是否允许重复;
        语句.Parameters.Add("@是否资料显示项", SqlDbType.Bit).Value = 是否资料显示项;
        语句.Parameters.Add("@资料显示格式", SqlDbType.NVarChar).Value = 资料显示格式;
        语句.Parameters.Add("@默认值", SqlDbType.NVarChar).Value = 默认值;
        语句.Parameters.Add("@表单代码", SqlDbType.NVarChar).Value = 表单代码;
        语句.ExecuteNonQuery();

        更新用户_资料结构(数据名称, 默认值);
        //重新编译文件();

        访问统计_管理记录 管理记录 = new 访问统计_管理记录(this.Context, 访问.连接);
        管理记录.记录("增加用户资料结构[" + 数据名称 + "]", 访问.用户["昵称"].ToString());

        Response.Redirect("YongHuZiLiaoJieGou.aspx");
    }
}
