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;
using System.IO;

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

    private void ZhiXing()
    {
        访问.验证管理员();

        if (this.IsPostBack)
            导入版块();
    }

    private void 删除版块()
    {
        DataSet 数据 = (DataSet)Application["UUN_UUN3G_LunTanBanKuai"];
        for (int i = 0; i < 数据.Tables[0].Rows.Count; i++)
            删除版块(Convert.ToInt32(数据.Tables[0].Rows[i]["ID"]));
        更新缓存数据 更新缓存数据 = new 更新缓存数据(this.Context, 访问.连接);
        更新缓存数据.论坛版块_更新();
    }

    private void 删除版块(int ID)
    {
        DataSet 数据 = new DataSet();
        SqlCommand 语句 = new SqlCommand("SELECT [ID],[附件内容] FROM [" + 程序.数据表前缀 + "社区_论坛_贴子] WHERE [所属版块]=" + ID, 访问.连接);
        SqlDataAdapter 填充 = new SqlDataAdapter(语句);
        填充.Fill(数据, "贴子");

        for (int i = 0; i < 数据.Tables[0].Rows.Count; i++)
        {
            DataRow 行 = 数据.Tables[0].Rows[i];
            File.Delete(Server.MapPath(程序.安装位置 + "Data/DT_TieZhi/" + (Convert.ToInt32(行["ID"]) /500) + "/" + 行["ID"] + ".txt"));
            String[] 附件数组 = Convert.ToString(行["附件内容"]).Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
            for (int i1 = 0; i1 < 附件数组.Length; i1++)
                if (File.Exists(Server.MapPath(附件数组[i1])))
                    File.Delete(Server.MapPath(附件数组[i1]));
            语句 = new SqlCommand("DELETE FROM [" + 程序.数据表前缀 + "社区_论坛_贴子] WHERE [ID]=" + 行["ID"], 访问.连接);
            语句.ExecuteNonQuery();
            语句 = new SqlCommand("DELETE FROM [" + 程序.数据表前缀 + "社区_论坛_回贴] WHERE [贴子ID]=" + 行["ID"], 访问.连接);
            语句.ExecuteNonQuery();
        }

        语句 = new SqlCommand("DELETE FROM [" + 程序.数据表前缀 + "社区_论坛_黑名单] WHERE [版块ID]=" + ID, 访问.连接);
        语句.ExecuteNonQuery();
        语句 = new SqlCommand("DELETE FROM [" + 程序.数据表前缀 + "社区_论坛_版主] WHERE [所属版块]=" + ID, 访问.连接);
        语句.ExecuteNonQuery();
        语句 = new SqlCommand("DELETE FROM [" + 程序.数据表前缀 + "社区_论坛_版块] WHERE [ID]=@ID", 访问.连接);
        语句.Parameters.Add("@ID", SqlDbType.Int).Value = ID;
        语句.ExecuteNonQuery();
    }

    private void 导入版块()
    {
        访问.验证权限("30");
        if (Request.Form["sub"] == "导入并删除现有版块")
            删除版块();

        HttpPostedFile HF = BanKuaiWenJian.PostedFile;
        if (HF.ContentLength < 1)
            throw new Exception("请上传正确的版块文件");

        常用.上传文件(HF, Server.MapPath("~/Temp/Temp_论坛版块.rar"));

        DataSet 数据 = (DataSet)常用.读取对象(Server.MapPath("~/Temp/Temp_论坛版块.rar"));
        for (int i = 0; i < 数据.Tables[0].Rows.Count; i++)
        {
            DataRow 行 = 数据.Tables[0].Rows[i];
            SqlCommand 语句 = new SqlCommand("INSERT INTO [" + 程序.数据表前缀 + "社区_论坛_版块]([ID],[版块名称],[外部链接地址],[所属版块],[版块简介],[版块状态],[禁止访问提示],[访问权限],[发贴权限],[回贴权限],[排序],[显示状态],[模板_贴子列表],[模板_贴子内容],[模板_回贴列表],[模板_3G贴子列表],[模板_3G贴子内容],[模板_3G回贴列表])" +
                "VALUES(@ID,@版块名称,@外部链接地址,@所属版块,@版块简介,@版块状态,@禁止访问提示,@访问权限,@发贴权限,@回贴权限,@排序,@显示状态,@模板_贴子列表,@模板_贴子内容,@模板_回贴列表,@模板_3G贴子列表,@模板_3G贴子内容,@模板_3G回贴列表)", 访问.连接);
            语句.Parameters.Add("@ID", SqlDbType.Int).Value = Convert.ToInt32(行["ID"]);
            语句.Parameters.Add("@版块名称", SqlDbType.NVarChar).Value = 行["版块名称"].ToString();
            语句.Parameters.Add("@外部链接地址", SqlDbType.NVarChar).Value = 行["外部链接地址"].ToString();
            语句.Parameters.Add("@所属版块", SqlDbType.Int).Value = Convert.ToInt32(行["所属版块"]);
            语句.Parameters.Add("@版块简介", SqlDbType.NVarChar).Value = 行["版块简介"].ToString();
            语句.Parameters.Add("@版块状态", SqlDbType.Bit).Value = Convert.ToBoolean(行["版块状态"]);
            语句.Parameters.Add("@禁止访问提示", SqlDbType.NVarChar).Value = 行["禁止访问提示"].ToString();
            语句.Parameters.Add("@访问权限", SqlDbType.Int).Value = Convert.ToInt32(行["访问权限"]);
            语句.Parameters.Add("@发贴权限", SqlDbType.Int).Value = Convert.ToInt32(行["发贴权限"]);
            语句.Parameters.Add("@回贴权限", SqlDbType.Int).Value = Convert.ToInt32(行["回贴权限"]);
            语句.Parameters.Add("@排序", SqlDbType.Int).Value = Convert.ToInt32(行["排序"]);
            语句.Parameters.Add("@显示状态", SqlDbType.Bit).Value = Convert.ToBoolean(行["显示状态"]);
            语句.Parameters.Add("@模板_贴子列表", SqlDbType.Int).Value = Convert.ToInt32(行["模板_贴子列表"]);
            语句.Parameters.Add("@模板_贴子内容", SqlDbType.Int).Value = Convert.ToInt32(行["模板_贴子内容"]);
            语句.Parameters.Add("@模板_回贴列表", SqlDbType.Int).Value = Convert.ToInt32(行["模板_回贴列表"]);
            语句.Parameters.Add("@模板_3G贴子列表", SqlDbType.Int).Value = Convert.ToInt32(行["模板_3G贴子列表"]);
            语句.Parameters.Add("@模板_3G贴子内容", SqlDbType.Int).Value = Convert.ToInt32(行["模板_3G贴子内容"]);
            语句.Parameters.Add("@模板_3G回贴列表", SqlDbType.Int).Value = Convert.ToInt32(行["模板_3G回贴列表"]);
            语句.ExecuteNonQuery();
        }
        File.Delete(Server.MapPath("~/Temp/Temp_论坛版块.rar"));

        更新缓存数据 更新缓存数据 = new 更新缓存数据(this.Context, 访问.连接);
        更新缓存数据.论坛版块_更新();

        访问统计_管理记录 管理记录 = new 访问统计_管理记录(this.Context, 访问.连接);
        管理记录.记录("导入版块", 访问.用户["昵称"].ToString());

        Label1.Text = "版块导入成功";
    }
}
