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

namespace UUN
{
    /// <summary>
    /// 网站访问记录的相关操作
    /// </summary>
    public class 访问统计_访问记录
    {
        private HttpContext HC;
        private SqlConnection 连接;
        public 访问统计_访问记录(HttpContext HC, SqlConnection 连接)
        {
            this.HC = HC;
            this.连接 = 连接;
        }
        /// <summary>
        /// 向数据库增加一条访问记录
        /// </summary>
        /// <param name="用户ID">访问用户的ID</param>
        /// <param name="用户昵称">访问用户的昵称</param>
        /// <param name="所在地区">访问用户的所在地区</param>
        /// <param name="内容类型">用户浏览内容的类型</param>
        /// <param name="内容子类型">用户浏览内容的子类型</param>
        public void 记录(int 用户ID, String 用户昵称, String 所在地区, String 内容类型, String 内容子类型)
        {
            int 最高ID = 常用.SQL_最高ID(连接, 程序.数据表前缀+"其它_访问统计_访问记录");
            SqlCommand 语句 = new SqlCommand("INSERT INTO [" + 程序.数据表前缀 + "其它_访问统计_访问记录]([ID],[用户ID],[用户昵称],[用户IP],[所在地区],[浏览器],[访问地址],[来源网站],[来源地址],[内容类型],[内容子类型])" +
                "VALUES(" + 最高ID + ",@用户ID,@用户昵称,@用户IP,@所在地区,@浏览器,@访问地址,@来源网站,@来源地址,@内容类型,@内容子类型)", 连接);
            语句.Parameters.Add("@用户ID", SqlDbType.Int).Value = 用户ID;
            语句.Parameters.Add("@用户昵称", SqlDbType.NVarChar).Value = 用户昵称;
            语句.Parameters.Add("@用户IP", SqlDbType.NVarChar).Value = HC.Request.UserHostAddress;
            语句.Parameters.Add("@所在地区", SqlDbType.NVarChar).Value = 所在地区;
            语句.Parameters.Add("@浏览器", SqlDbType.NVarChar).Value = HC.Request.Browser.Browser==null?"":HC.Request.Browser.Browser;
            语句.Parameters.Add("@访问地址", SqlDbType.NVarChar).Value = 常用.截取最长字符串(HC.Request.Url.ToString(),500);
            语句.Parameters.Add("@来源网站", SqlDbType.NVarChar).Value = HC.Request.UrlReferrer == null ? "" : HC.Request.UrlReferrer.Authority;
            语句.Parameters.Add("@来源地址", SqlDbType.NVarChar).Value = HC.Request.UrlReferrer==null?"":常用.截取最长字符串(HC.Request.UrlReferrer.ToString(),500);
            语句.Parameters.Add("@内容类型", SqlDbType.NVarChar).Value = 内容类型;
            语句.Parameters.Add("@内容子类型", SqlDbType.NVarChar).Value = 内容子类型;
            语句.ExecuteNonQuery();
        }
        /// <summary>
        /// 获取今日的记录总数
        /// </summary>
        /// <returns>总数</returns>
        public int 获取记录总数()
        {
            SqlCommand 语句 = new SqlCommand("SELECT COUNT(ID) FROM [" + 程序.数据表前缀 + "其它_访问统计_访问记录]", 连接);
            return Convert.ToInt32(语句.ExecuteScalar());
        }
        /// <summary>
        /// 清空所有的访问记录
        /// </summary>
        public void 清空记录()
        {
            SqlCommand 语句 = new SqlCommand("DELETE FROM [" + 程序.数据表前缀 + "其它_访问统计_访问记录]", 连接);
            语句.ExecuteNonQuery();
        }
    }
}