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.aspx文件
    /// </summary>
    public class 编译扩展_Club_User : 编译扩展接口
    {
        private SqlConnection 连接;
        private HttpContext HC;
        private 编译器 编译器;

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

        #region 编译扩展接口 成员

        private String 字段变量 = "[ID]";
        private bool 是否勋章;
        private bool 是否个人资料;
        public string 开始执行代码()
        {
            return @"		Hashtable ___用户=获取用户();
		if(___用户==null)
			throw new Exception(""用户不存在"");
";
        }

        public string 编译公共标签(string 代码)
        {
            String 返回值 = "";
            switch (代码)
            {
                case "ID":
                    返回值 += "\t\t返回值.Append(___用户[\"ID\"]);\r\n";
                    break;
                case "昵称":
                    返回值 += "\t\t返回值.Append(Server.HtmlEncode(___用户[\"昵称\"].ToString()));\r\n";
                    字段变量 = 常用.SQL_增加非重复字段(字段变量, "昵称");
                    break;
                case "手机号":
                    返回值 += "\t\t返回值.Append(___用户[\"手机号\"]);\r\n";
                    字段变量 = 常用.SQL_增加非重复字段(字段变量, "手机号");
                    break;
                case "性别":
                    返回值 += "\t\t返回值.Append(Convert.ToBoolean(___用户[\"性别\"])?程序.设置[\"单位名词_男性名词\"]:程序.设置[\"单位名词_女性名词\"]);\r\n";
                    字段变量 = 常用.SQL_增加非重复字段(字段变量, "性别");
                    break;
                case "积分":
                    返回值 += "\t\t返回值.Append(___用户[\"积分\"]);\r\n";
                    字段变量 = 常用.SQL_增加非重复字段(字段变量, "积分");
                    break;
                case "最后访问时间":
                    返回值 += "\t\t返回值.Append(___用户[\"最后访问时间\"]);\r\n";
                    字段变量 = 常用.SQL_增加非重复字段(字段变量, "最后访问时间");
                    break;
                case "最后登录时间":
                    返回值 += "\t\t返回值.Append(___用户[\"最后登录时间\"]);\r\n";
                    字段变量 = 常用.SQL_增加非重复字段(字段变量, "最后登录时间");
                    break;
                case "最后登录IP":
                    返回值 += "\t\t返回值.Append(___用户[\"最后登录IP\"]);\r\n";
                    字段变量 = 常用.SQL_增加非重复字段(字段变量, "最后登录IP");
                    break;
                case "最后登录地区":
                    返回值 += "\t\t返回值.Append(___用户[\"最后登录地区\"]);\r\n";
                    字段变量 = 常用.SQL_增加非重复字段(字段变量, "最后登录地区");
                    break;
                case "等级":
                    返回值 += "\t\t返回值.Append(___用户[\"等级\"]);\r\n";
                    字段变量 = 常用.SQL_增加非重复字段(字段变量, "等级");
                    break;
                case "所在位置":
                    返回值 += "\t\t返回值.Append(Server.HtmlEncode(___用户[\"所在位置\"].ToString()));\r\n";
                    字段变量 = 常用.SQL_增加非重复字段(字段变量, "所在位置");
                    break;
                case "今日访问次数":
                    返回值 += "\t\t返回值.Append(___用户[\"今日访问次数\"]);\r\n";
                    字段变量 = 常用.SQL_增加非重复字段(字段变量, "今日访问次数");
                    break;
                case "头像":
                    返回值 += "\t\t返回值.Append(\"<img src=\\\"\"+Server.HtmlEncode(___用户[\"头像\"].ToString())+\"\\\" alt=\\\"\\\" />\");\r\n";
                    字段变量 = 常用.SQL_增加非重复字段(字段变量, "头像");
                    break;
                case "勋章":
                    if (!是否勋章)
                    {
                        返回值 += "\t\tString[] 勋章数组=___用户[\"勋章\"].ToString().Split(new Char[]{','}, StringSplitOptions.RemoveEmptyEntries);\r\n";
                        是否勋章 = true;
                    }
                    返回值 += @"		for(int i=0;i<勋章数组.Length;i++)
			返回值.Append(""<img src=\""""+Server.HtmlEncode(勋章数组[i])+""\"" alt=\""\"" />"");
";
                    字段变量 = 常用.SQL_增加非重复字段(字段变量, "勋章");
                    break;
                case "创建时间":
                    返回值 += "\t\t返回值.Append(___用户[\"创建时间\"]);\r\n";
                    字段变量 = 常用.SQL_增加非重复字段(字段变量, "创建时间");
                    break;
                case "其它资料":
                    if (!是否个人资料)
                    {
                        返回值 += "\t\tString ___其它资料数据=new 用户(this.Context,访问.连接).获取用户其它资料(___用户[\"个人资料\"].ToString());\r\n";
                        是否个人资料 = true;
                    }
                    返回值 += "\t\t返回值.Append(___其它资料数据);\r\n";
                    字段变量 = 常用.SQL_增加非重复字段(字段变量, "个人资料");
                    break;
                case "等级称呼":
                    返回值 += "\t\t返回值.Append(用户.获取等级称呼(Convert.ToInt32(___用户[\"等级\"])));\r\n";
                    字段变量 = 常用.SQL_增加非重复字段(字段变量, "等级");
                    break;
                case "在线状态":
                    返回值 += "\t\t返回值.Append(Convert.ToDateTime(___用户[\"最后访问时间\"])>(DateTime.Now-new TimeSpan(0,Convert.ToInt32(程序.设置[\"离线时间\"]),0))?\"在线\":\"离线\");\r\n";
                    字段变量 = 常用.SQL_增加非重复字段(字段变量, "最后访问时间");
                    break;
                case "来源地址":
                    返回值 += "\t\t返回值.Append(Server.HtmlEncode(Request.QueryString[\"rurl\"]));\r\n";
                    break;
            }
            return 返回值;
        }

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

        public string 结束执行代码()
        {
            String 方法库 = "";
            方法库 += @"	private Hashtable 获取用户()
	{
		int ID=Convert.ToInt32(Request.QueryString[""ID""]);
		return 常用.SQL_获取(new SqlCommand(""SELECT " + 字段变量 + @" FROM [""+程序.数据表前缀+""社区_用户_用户] WHERE [用户类型]='会员' AND [ID]=""+ID,访问.连接));
	}
";
            编译器.方法库 += 方法库;
            return "";
        }

        #endregion
    }
}