using System;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.IO;
using System.Collections;
using System.Text.RegularExpressions;
using System.Text;

namespace UUN
{
    /// <summary>
    /// 编译Club/User_Edit_Data.aspx文件
    /// </summary>
    public class 编译扩展_Club_User_Edit_Data : 编译扩展接口
    {
        private SqlConnection 连接;
        private HttpContext HC;
        private 编译器 编译器;

        public 编译扩展_Club_User_Edit_Data(SqlConnection 连接, HttpContext HC, 编译器 编译器)
        {
            this.连接 = 连接;
            this.HC = HC;
            this.编译器 = 编译器;
        }

        #region 编译扩展接口 成员
        private DataSet 修改资料结构数据;

        public string 开始执行代码()
        {
            return @"
		访问.验证会员();
		Hashtable 用户=常用.SQL_获取(new SqlCommand(""SELECT [昵称],[性别],[个人资料] FROM [""+程序.数据表前缀+""社区_用户_用户] WHERE [用户类型]='会员' AND [ID]=""+访问.用户[""ID""],访问.连接));
		String 随机值=常用.随机字符(4);
		设置 其它资料=new 设置(用户[""个人资料""].ToString());
";
        }

        public string 编译公共标签(string 代码)
        {
            String 返回值 = "";
            switch (代码)
            {
                case "昵称":
                    返回值 += "\t\t返回值.Append(Server.HtmlEncode(用户[\"昵称\"].ToString()));\r\n";
                    break;
                case "性别":
                    返回值 += @"
		返回值.Append(""<select name=\""XingBie";
                    if (编译器.是否WML网页)
                        返回值 += @"""+随机值+""";
                    返回值+=@"\""";
                    if (编译器.是否WML网页)
                        返回值 += @" value=\""""+用户[""性别""]+""\""";
                    返回值 += @"><option value=\""True\""";
                    if (!编译器.是否WML网页)
                        返回值 += @"""+(Convert.ToBoolean(用户[""性别""])?"" selected=\""selected\"""":"""")+""";
                    返回值 += @">""+程序.设置[""单位名词_男性名词""]+""</option>";
                    返回值 += @"<option value=\""False\""";
                    if (!编译器.是否WML网页)
                        返回值 += @"""+((!Convert.ToBoolean(用户[""性别""]))?"" selected=\""selected\"""":"""")+""";
                    返回值 += @">""+程序.设置[""单位名词_女性名词""]+""</option></select>"");
";
                    break;
                case "随机值":
                    返回值 += "\t\t返回值.Append(随机值);\r\n";
                    break;
                case "其它资料数据项":
                    {
                        if (修改资料结构数据 == null)
                            修改资料结构数据 = 获取修改资料结构数据();
                        for (int i = 0; i < 修改资料结构数据.Tables[0].Rows.Count; i++)
                        {
                            DataRow 行 = 修改资料结构数据.Tables[0].Rows[i];
                            String 数据代码 = "";
                            switch (Convert.ToInt32(行["数据类型"]))
                            {
                                case 0:
                                    数据代码 = "<input type=\"\"text\"\" name=\"\"" + 行["表单名称"];
                                    if (编译器.是否WML网页)
                                        数据代码 += "\"+随机值+@\"";
                                    数据代码+="\"\" maxlength=\"\"" + 行["最大大小(长度)"] + "\"\" value=\"\"\"+Server.HtmlEncode(其它资料[\"" + 行["数据名称"] + "\"].ToString())+@\"\"\" />";
                                    break;
                                case 1:
                                    数据代码 = "<input type=\"\"text\"\" name=\"\"" + 行["表单名称"];
                                    if (编译器.是否WML网页)
                                        数据代码 += "\"+随机值+@\"";
                                    数据代码+="\"\" format=\"\"*N\"\" value=\"\"\"+Server.HtmlEncode(其它资料[\"" + 行["数据名称"] + "\"].ToString())+@\"\"\" size=\"\"4\"\" />";
                                    break;
                                default:
                                    {
                                        String[] 值数组 = 行["值列表"].ToString().Split(new String[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
                                        数据代码 = "<select name=\"\"" + 行["表单名称"];
                                        if (编译器.是否WML网页)
                                            数据代码 += "\"+随机值+@\"";
                                        数据代码+="\"\"";
                                        if (编译器.是否WML网页)
                                            数据代码 += " value=\"\"\"+Server.HtmlEncode(其它资料[\"" + 行["数据名称"] + "\"].ToString())+@\"\"\"";
                                        数据代码+=@">";
                                        for (int i1 = 0; i1 < 值数组.Length; i1++)
                                            数据代码 += "<option value=\"\"" + HC.Server.HtmlEncode(值数组[i1]) + "\"\""+
                                                (编译器.是否WML网页?"":"\"+(其它资料[\""+行["数据名称"]+"\"].ToString()==@\"\"?@\" selected=\\\"selected\\\"\":\"\")+@\"")+
                                                ">" + HC.Server.HtmlEncode(值数组[i1]) + "</option>";
                                        数据代码 += "</select>";
                                    }
                                    break;
                            }
                            返回值 += "\t\t" + @"返回值.Append(@""" +
                                行["表单代码"].ToString()
                                .Replace("$项名称$", HC.Server.HtmlEncode(行["数据名称"].ToString()))
                                .Replace("$项代码$", 数据代码)
                                + "\");\r\n";
                        }
                    }
                    break;
                case "其它资料表单项":
                    {
                        if (修改资料结构数据 == null)
                            修改资料结构数据 = 获取修改资料结构数据();
                        for (int i = 0; i < 修改资料结构数据.Tables[0].Rows.Count; i++)
                        {
                            DataRow 行 = 修改资料结构数据.Tables[0].Rows[i];
                            if (编译器.是否WML网页)
                                返回值 += "\t\t返回值.Append(@\"<postfield name=\"\"" +
                                    HC.Server.HtmlEncode(行["表单名称"].ToString()) +
                                    "\"\" value=\"\"$(" +
                                    HC.Server.HtmlEncode(行["表单名称"].ToString()) +
                                    "\"+随机值+@\")\"\" />\");\r\n";
                        }
                    }
                    break;
            }
            return 返回值;
        }
        private DataSet 获取修改资料结构数据()
        {
            DataSet 数据 = new DataSet();
            SqlCommand 语句 = new SqlCommand("SELECT [ID],[数据名称],[数据类型],[最小大小(长度)],[最大大小(长度)],[值列表],[是否允许重复],[默认值],[表单代码],[备注],[表单名称] FROM [" + 程序.数据表前缀 + "社区_用户_资料结构] WHERE [是否修改资料项]=@是否修改资料项 ORDER BY [ID]", 连接);
            语句.Parameters.Add("@是否修改资料项", SqlDbType.Bit).Value = true;
            SqlDataAdapter 填充 = new SqlDataAdapter(语句);
            填充.Fill(数据, "用户资料结构");
            return 数据;
        }

        public string 编译模板方法(string 方法名称, string[] 属性数组)
        {
            return "";
        }

        public string 结束执行代码()
        {
            return "";
        }

        #endregion
    }
}