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;

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

        DataSet 数据 = (DataSet)Application["UUN_UUN3G_YongHuZu"];
        for (int i = 0; i < 数据.Tables[0].Rows.Count; i++)
        {
            DataRow 行 = 数据.Tables[0].Rows[i];
            if(行["用户类型"].ToString()=="会员")
                YongHuZu.Items.Add(new ListItem(行["组名称"].ToString(), 行["组名称"].ToString()));
        }

        DataSet _数据=new DataSet();
        SqlCommand 语句 = new SqlCommand("SELECT [数据名称],[数据类型],[最小大小(长度)],[最大大小(长度)],[值列表],[是否允许重复],[默认值],[备注],[表单名称] FROM [" + 程序.数据表前缀 + "社区_用户_资料结构] ORDER BY [ID]", 访问.连接);
        SqlDataAdapter 填充 = new SqlDataAdapter(语句);
        填充.Fill(_数据, "用户资料结构");

        String 表格代码 = "<table class=\"tab3\" border=\"0\" cellpadding=\"0\" cellspacing=\"1\">";

        for (int i = 0; i < _数据.Tables[0].Rows.Count; i++)
        {
            DataRow 行 = _数据.Tables[0].Rows[i];
            表格代码 += "<tr><td style=\"width:200px\">&nbsp;&nbsp;&nbsp;&nbsp;";
            表格代码 += 行["数据名称"];
            表格代码 += "</td><td>&nbsp;&nbsp;&nbsp;&nbsp;";
            if (Convert.ToInt32(行["数据类型"]) == 2)
            {
                String[] 值数组 = 行["值列表"].ToString().Split(new String[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
                for (int i1 = 0; i1 < 值数组.Length; i1++)
                    表格代码 += "<input type=\"radio\" name=\"" +
                        Server.HtmlEncode(行["表单名称"].ToString()) +
                        "\" value=\"" + Server.HtmlEncode(值数组[i1]) + "\""+
                        (行["默认值"].ToString()==值数组[i1]?" checked":"")+
                        " />" +
                        Server.HtmlEncode(值数组[i1]);
            }
            else
                表格代码 += "<input type=\"text\" name=\"" +
                    Server.HtmlEncode(行["表单名称"].ToString()) +
                    "\" value=\"" +
                    Server.HtmlEncode(行["默认值"].ToString()) +
                    "\"" +
                    (Convert.ToInt32(行["数据类型"]) == 0 ? " onkeydown=\"text_key('Button1')\" maxlength=\"" + 行["最大大小(长度)"] + "\"" : "") +
                    " style=\"width:250px\" />&nbsp;&nbsp;" +
                    "<span class=\"text_pt\">" + Server.HtmlEncode(行["备注"].ToString()) + "</span>";
            表格代码 += "</td></tr>";
        }

        表格代码 += "</table>";

        TouXiang.ImageUrl = 程序.安装位置 + "Data/TouXiang/0/1.gif";
        TouXiangDiZhi.Value = 程序.安装位置 + "Data/TouXiang/0/1.gif";

        HuiYuanZiLiaoDaiMa.Text = 表格代码;

        if (this.IsPostBack)
            增加会员();
    }
    private void 增加会员()
    {
        访问.验证权限("24");
        int ZGID = 常用.SQL_最高ID(访问.连接, 程序.数据表前缀 + "社区_用户_用户");
        String 昵称 = NiChen.Text;
        String 头像地址 = TouXiangDiZhi.Value;
        bool 性别 = XingBie_T.Checked;
        String 手机号 = ShouJiHao.Text;
        String 用户组 = YongHuZu.SelectedValue;
        String 密码 = MiMa.Text;
        String 标识 = "U" + ZGID + 常用.随机字符(30);

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

        String XML数据 = 生成XML();

        语句 = new SqlCommand("INSERT INTO [" + 程序.数据表前缀 + "社区_用户_用户]([ID],[昵称],[性别],[头像],[手机号],[密码],[标识],[用户类型],[用户组],[个人资料])" +
            "VALUES(@ID,@昵称,@性别,@头像,@手机号,@密码,@标识,@用户类型,@用户组,@个人资料)", 访问.连接);
        语句.Parameters.Add("@ID", SqlDbType.Int).Value = ZGID;
        语句.Parameters.Add("@昵称", SqlDbType.NVarChar).Value = 昵称;
        语句.Parameters.Add("@性别", SqlDbType.Bit).Value = 性别;
        语句.Parameters.Add("@头像", SqlDbType.NVarChar).Value = 头像地址;
        语句.Parameters.Add("@手机号", SqlDbType.NVarChar).Value = 手机号;
        语句.Parameters.Add("@密码", SqlDbType.NVarChar).Value = 密码;
        语句.Parameters.Add("@标识", SqlDbType.NVarChar).Value = 标识;
        语句.Parameters.Add("@用户类型", SqlDbType.NVarChar).Value = "会员";
        语句.Parameters.Add("@用户组", SqlDbType.NVarChar).Value = 用户组;
        语句.Parameters.Add("@个人资料", SqlDbType.NVarChar).Value = XML数据;
        语句.ExecuteNonQuery();
        访问统计_管理记录 管理记录 = new 访问统计_管理记录(this.Context, 访问.连接);
        管理记录.记录("增加会员[" + 昵称 + "]", 访问.用户["昵称"].ToString());

        Response.Redirect("HuiYuan.aspx");
    }
    private String 生成XML()
    {
        DataSet 数据 = new DataSet();
        SqlCommand 语句 = new SqlCommand("SELECT [数据名称],[数据类型],[是否允许重复],[最小大小(长度)],[最大大小(长度)],[值列表],[表单名称] FROM [" + 程序.数据表前缀 + "社区_用户_资料结构] ORDER BY [ID]", 访问.连接);
        SqlDataAdapter 填充 = new SqlDataAdapter(语句);
        填充.Fill(数据, "用户资料结构");

        String 返回值 = "<?xml version=\"1.0\" encoding=\"utf-8\"?><data>";
        for (int i = 0; i < 数据.Tables[0].Rows.Count; i++)
        {
            DataRow 行 = 数据.Tables[0].Rows[i];
            String 数据值 = Request.Form[行["表单名称"].ToString()];
            switch (Convert.ToInt32(行["数据类型"]))
            {
                case 0:
                    {
                        if (数据值.Length < Convert.ToInt32(行["最小大小(长度)"]) || 数据值.Length > Convert.ToInt32(行["最大大小(长度)"]))
                            throw new Exception(Server.HtmlEncode(行["数据名称"].ToString()) + "的长度必须在" + 行["最小大小(长度)"] + "到" + 行["最大大小(长度)"] + "之间。");
                    }
                    break;
                case 1:
                    {
                        if (Convert.ToInt64(数据值) < Convert.ToInt64(行["最小大小(长度)"]) || Convert.ToInt64(数据值) > Convert.ToInt64(行["最大大小(长度)"]))
                            throw new Exception(Server.HtmlEncode(行["数据名称"].ToString()) + "的大小必须在" + 行["最小大小(长度)"] + "到" + 行["最大大小(长度)"] + "之间。");
                    }
                    break;
                default:
                    {
                        String[] 值数组 = Convert.ToString(行["值列表"]).Split(new String[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
                        bool 是否存在 = false;
                        for (int i1 = 0; i1 < 值数组.Length; i1++)
                            if (值数组[i1] == 数据值)
                                是否存在 = true;
                        if (!是否存在)
                            throw new Exception(Server.HtmlEncode(行["数据名称"].ToString()) + "的值不存在");
                    }
                    break;
            }
            String 项代码 = "<set name=\"" + Server.HtmlEncode(行["数据名称"].ToString()) + "\" value=\"" + Server.HtmlEncode(数据值) + "\" />";
            if (!Convert.ToBoolean(行["是否允许重复"]))
            {
                语句 = new SqlCommand("SELECT [ID] FROM [" + 程序.数据表前缀 + "社区_用户_资料结构] WHERE CHARINDEX(@个人资料,[个人资料])>0", 访问.连接);
                语句.Parameters.Add("@个人资料", SqlDbType.NVarChar).Value = 项代码;
                SqlDataReader 读取 = 语句.ExecuteReader();
                if (读取.HasRows)
                {
                    读取.Close();
                    throw new Exception(行["数据名称"] + "不允许重复，请输入其它的值。");
                }
                else
                    读取.Close();
            }
            返回值 += 项代码;
        }
        返回值 += "</data>";
        return 返回值;
    }
}
