using BLL;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Linq;

namespace FineUIPro.Web.Evaluation
{
    public partial class FilesManagement : PageBase
    {
        #region 加载
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                InitTreeMenu();

                ddlPageSize.SelectedValue = Grid1.PageSize.ToString();
                // 绑定表格
            }
        }
        #endregion

        #region 查询
        protected void TextBox_TextChanged(object sender, EventArgs e)
        {
            this.InitTreeMenu();
        }
        #endregion

        #region 加载树
        private void InitTreeMenu()
        {
            this.tvFileManagement.Nodes.Clear();
            TreeNode rootRole = new TreeNode();
            rootRole.Text = "FO";
            rootRole.NodeID = "0";
            rootRole.Expanded = true;
            this.tvFileManagement.Nodes.Add(rootRole);
            BoundTree(rootRole.Nodes);
        }

        /// <summary>
        /// 遍历节点
        /// </summary>
        /// <param name="nodes"></param>
        /// <param name="parentId"></param>
        /// <param name="type"></param>
        private void BoundTree(TreeNodeCollection nodes)
        {
            List<Model.FC_SESRelatedData> datas = BLL.SESRelatedDataService.GetSESRelatedDataList();
            if (!string.IsNullOrEmpty(this.txtFO.Text))
            {
                datas = datas.Where(e => e.FO_NO.Contains(this.txtFO.Text.Trim())).ToList();
            }
            if (datas.Count() > 0)
            {
                TreeNode tn = null;
                foreach (var q in datas)
                {
                    tn = new TreeNode();
                    tn.Text = q.FO_NO;
                    tn.NodeID = q.FO_NO;
                    tn.ToolTip = q.FO_NO;
                    tn.EnableClickEvent = true;
                    nodes.Add(tn);
                }
            }
        }
        #endregion

        #region Tree点击事件
        /// <summary>
        /// 选择角色事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void tvFileManagement_NodeCommand(object sender, TreeCommandEventArgs e)
        {
            this.BindGrid(this.tvFileManagement.SelectedNodeID);
        }
        #endregion

        #region BindGrid

        private void BindGrid(string fo)
        {
            string strSql = "";
            strSql = @"SELECT FileId, FO, FileName, FileType, FileLength, UploadUser, UploadDate, Remark FROM FilesManagement       
                              WHERE FO=@FO
                              ORDER BY UploadDate";
            List<SqlParameter> parms = new List<SqlParameter>();
            parms.Add(new SqlParameter("@FO", fo));
            SqlParameter[] parameter = parms.ToArray();

            DataTable dt = SQLHelper.GetDataTableRunText(strSql, parameter);
            Grid1.RecordCount = dt.Rows.Count;
            var table = this.GetPagedDataTable(Grid1, dt);
            Grid1.DataSource = table;
            Grid1.DataBind();
        }
        #endregion

        #region 双击行事件
        /// <summary>
        /// 双击下载附件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e)
        {
            string url = "";
            string Id = Grid1.SelectedRowID;
            var files = (from x in Funs.DB.FilesManagement where x.FileId == Id select x).FirstOrDefault();
            if (files != null)
            {
                if (!string.IsNullOrEmpty(files.FileUrl))
                {

                    ////this.ShowFile(files.FileUrl);
                    //string fileName = files.FileName;//客户端保存的文件名 
                    ////string filePath = Server.MapPath("DownLoad/aaa.zip");//路径 
                    //string filePath = BLL.Funs.RootPath.Replace('\\', '/') + "Downloads/aaa.zip";//files.FileUrl.Replace('\\', '/');
                    //FileInfo fileInfo = new FileInfo(filePath);
                    //Response.Clear();
                    //Response.ClearContent();
                    //Response.ClearHeaders();
                    //Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
                    //Response.AddHeader("Content-Length", fileInfo.Length.ToString());
                    //Response.AddHeader("Content-Transfer-Encoding", "binary");
                    //Response.ContentType = "application/octet-stream";
                    //Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
                    //Response.WriteFile(fileInfo.FullName);
                    //Response.Flush();
                    //Response.End();

                    string file = files.FileUrl.Replace('\\', '/');
                    url = BLL.Funs.RootPath.Replace('\\', '/') + file;
                    string fileName = files.FileName;
                    long fileSize = long.Parse(files.FileLength);
                    Response.Clear();
                    Response.ContentType = "application/octet-stream";
                    Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
                    Response.AddHeader("Content-Length", fileSize.ToString());
                    Response.TransmitFile(url, 0, fileSize);
                    Response.Flush();
                    Response.End();
                }
                else
                {
                    Alert.ShowInTop("没有附件或附件已删除!", MessageBoxIcon.Warning);
                    return;
                }
            }
        }
        #endregion

        #region 分页、排序
        /// <summary>
        /// 分页
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
        {
            Grid1.PageIndex = e.NewPageIndex;
            this.BindGrid(this.tvFileManagement.SelectedNodeID);
        }

        /// <summary>
        /// 排序
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e)
        {
            Grid1.SortDirection = e.SortDirection;
            Grid1.SortField = e.SortField;
            this.BindGrid(this.tvFileManagement.SelectedNodeID);
        }

        /// <summary>
        /// 分页显示条数下拉框
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
        {
            Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
            this.BindGrid(this.tvFileManagement.SelectedNodeID);
        }
        #endregion
    }
}