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

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

        public string 开始执行代码()
        {
            编译器.方法库 += @"	private new int ID;
	private int 栏目ID;
	private String 内容标题;
	private String 栏目名称;
";
            return @"
		ID=Convert.ToInt32(Request.QueryString[""ID""]);
		栏目ID=Convert.ToInt32(Request.QueryString[""CID""]);
		String 评论内容=Request.Form[""CommentText""];
		DataRow 栏目=常用.获取栏目(栏目ID);
		if(栏目==null)
			throw new Exception(""栏目不存在"");
		if(评论内容.Length<1||评论内容.Length>250)
			throw new Exception(""评论内容的长度只能在1-250之间"");

		栏目名称=栏目[""栏目名称""].ToString();

		Hashtable 内容=常用.SQL_获取(new SqlCommand(""SELECT [是否审核],[外部链接],[权限_仅限会员],[权限_需要等级],[权限_扣除积分],[标题],[是否关闭评论] FROM [""+程序.数据表前缀+""内容_""+栏目[""栏目类型""]+""_""+栏目[""栏目类型""]+""] WHERE [ID]=""+ID,访问.连接));
		常用.应用内容权限(内容,栏目[""栏目类型""].ToString(),访问);

		if(Convert.ToBoolean(内容[""是否关闭""]))
			throw new Exception(""该内容的评论已经关闭"");

		内容标题=内容[""标题""].ToString();
		int ZGID=常用.SQL_最高ID(访问.连接,程序.数据表前缀+""内容_评论"");
		SqlCommand 语句=new SqlCommand(""INSERT INTO [""+程序.数据表前缀+""内容_评论]([ID],[所属栏目],[内容类型],[楼数],[评论用户ID],[评论用户昵称],[评论用户IP],[评论用户地区],[内容ID],[内容标题],[评论内容])""+
			""VALUES(@ID,@所属栏目,@内容类型,@楼数,@评论用户ID,@评论用户昵称,@评论用户IP,@评论用户地区,@内容ID,@内容标题,@评论内容)"",访问.连接);
		语句.Parameters.Add(""@ID"",SqlDbType.Int).Value=ZGID;
		语句.Parameters.Add(""@所属栏目"",SqlDbType.Int).Value=栏目ID;
		语句.Parameters.Add(""@内容类型"",SqlDbType.NVarChar).Value=栏目[""栏目类型""].ToString();
		语句.Parameters.Add(""@楼数"",SqlDbType.Int).Value=常用.SQL_最高楼数(访问.连接,"" WHERE [内容ID]=""+ID,程序.数据表前缀+""内容_评论"");
		语句.Parameters.Add(""@评论用户ID"",SqlDbType.Int).Value=Convert.ToInt32(访问.用户[""ID""]);
		语句.Parameters.Add(""@评论用户昵称"",SqlDbType.NVarChar).Value=访问.用户[""昵称""].ToString();
		语句.Parameters.Add(""@评论用户IP"",SqlDbType.NVarChar).Value=访问.用户[""最后登录IP""].ToString();
		语句.Parameters.Add(""@评论用户地区"",SqlDbType.NVarChar).Value=访问.用户[""最后登录地区""].ToString();
		语句.Parameters.Add(""@内容ID"",SqlDbType.Int).Value=ID;
		语句.Parameters.Add(""@内容标题"",SqlDbType.NVarChar).Value=内容标题;
		语句.Parameters.Add(""@评论内容"",SqlDbType.NVarChar).Value=评论内容;
		语句.ExecuteNonQuery();

		int 评论数;
		语句=new SqlCommand(""SELECT COUNT(ID) FROM [""+程序.数据表前缀+""内容_评论] WHERE [内容ID]=""+ID,访问.连接);
		评论数=Convert.ToInt32(语句.ExecuteScalar());

		语句=new SqlCommand(""UPDATE [""+程序.数据表前缀+""内容_""+栏目[""栏目类型""]+""_""+栏目[""栏目类型""]+""] SET [评论数]=""+评论数+"" WHERE [ID]=""+ID,访问.连接);
		语句.ExecuteNonQuery();
";
        }

        public string 编译公共标签(string 代码)
        {
            switch (代码)
            {
                case "内容标题":
                    return @"
		返回值.Append(Server.HtmlEncode(内容标题));
";
                case "内容地址":
                    return @"
		返回值.Append(Server.HtmlEncode(常用.处理地址(""" + (编译器.是否WML网页 ? "" : "3G_") + @"Content.aspx?CID=""+栏目ID+""&ID=""+ID,访问.用户[""标识""].ToString())));
";
                case "评论地址":
                    return @"
		返回值.Append(Server.HtmlEncode(常用.处理地址(""" + (编译器.是否WML网页 ? "" : "3G_") + @"Comment.aspx?CID=""+栏目ID+""&ID=""+ID,访问.用户[""标识""].ToString())));
";
                case "栏目名称":
                    return @"
		返回值.Append(Server.HtmlEncode(栏目名称));
";
                case "栏目地址":
                    return @"
		返回值.Append(Server.HtmlEncode(常用.处理地址(""" + (编译器.是否WML网页 ? "" : "3G_") + @"Column.aspx?ID=""+栏目ID,访问.用户[""标识""].ToString())));
";
                default:
                    return "";
            }
        }

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

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