using BLL;
using Org.BouncyCastle.Asn1.Cms;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;

namespace FineUIPro.Web.Controls
{
    public partial class UnitProjectTControl : System.Web.UI.UserControl
    {

        #region 定义页面项
        public string ProjectId
        {
            get
            {
                return (string)ViewState["ProjectId"];
            }
            set
            {
                ViewState["ProjectId"] = value;
            }
        }

        /// <summary>
        /// 菜单ID
        /// </summary>
        public string UnitId
        {
            get
            {
                return (string)ViewState["UnitId"];
            }
            set
            {
                ViewState["UnitId"] = value;
            }
        }
        #endregion

        #region 加载页面
        /// <summary>
        /// 加载页面
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.UnitId = this.UnitId ?? CommonService.GetThisUnitId();
                this.ProjectId=this.ProjectId;
                ////加载树
                SetSubUnitProjectTree(this.tvProject);
            }
        }
        #endregion

        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void tvProject_NodeCommand(object sender, TreeCommandEventArgs e)
        {
            this.UnitId = string.Empty;
            this.ProjectId = string.Empty;
            if (this.tvProject != null && !string.IsNullOrEmpty(this.tvProject.SelectedNodeID))
            {
                if (this.tvProject.SelectedNode.ParentNode == null)
                {
                    this.UnitId = this.tvProject.SelectedNodeID;
                }
                else
                {
                    this.UnitId=this.tvProject.SelectedNode.ParentNode.NodeID;
                    this.ProjectId = this.tvProject.SelectedNodeID;
                }
                if (this.change != null)
                {
                    this.change(this, e);
                }

            }
        }

        public delegate void userEvent(object sender, EventArgs arg);

        public event userEvent change;


        #region 绑定分公司 单位-项目树
        /// <summary>
        ///  绑定分公司 单位-项目树
        /// </summary>
        /// <param name="tvProject"></param>                                                                                                    
        /// <param name="CurrUser"></param>
        public void SetSubUnitProjectTree(FineUIPro.Tree tvProject)
        {
            tvProject.Nodes.Clear();
            if (CommonService.GetThisUnitId() == this.UnitId)
            {
                var getSubUnit = from x in Funs.DB.Base_Unit
                                 where x.UnitId == this.UnitId || x.IsBranch == true
                                 orderby x.IsBranch, x.UnitCode
                                 select x;
                foreach (var item in getSubUnit)
                {
                    bool isHideUPTCode = false;
                    var sysSet17 = (from x in Funs.DB.Sys_Set where x.SetName == "是否隐藏公司项目树单位编码" select x).ToList().FirstOrDefault();
                    if (sysSet17 != null && sysSet17.IsAuto == true)
                    {
                        isHideUPTCode = true;
                    }
                    FineUIPro.TreeNode crootNode = new FineUIPro.TreeNode
                    {

                       // Text =item.UnitCode+":"+ item.UnitName,
                        NodeID = item.UnitId,
                        EnableClickEvent = true
                    };
                    if (isHideUPTCode)
                    {
                        crootNode.Text = item.UnitName;
                    }
                    else
                    {
                        crootNode.Text = item.UnitCode + ":" + item.UnitName;
                    }
                    tvProject.Nodes.Add(crootNode);

                    var getSProjects = ProjectService.GetProjectWorkList(item.UnitId);
                    foreach (var sitem in getSProjects)
                    {
                        FineUIPro.TreeNode scrootNode = new FineUIPro.TreeNode
                        {
                            Text = sitem.ProjectName,
                            NodeID = sitem.ProjectId,
                            EnableClickEvent = true
                        };
                        if (sitem.ProjectId == this.ProjectId)
                        {
                            scrootNode.Checked = true;
                        }
                        crootNode.Nodes.Add(scrootNode);
                    }
                }
            }
            else
            {
                var getSubUnit = Funs.DB.Base_Unit.FirstOrDefault(x => x.UnitId == this.UnitId);
                if (getSubUnit != null)
                {
                    FineUIPro.TreeNode crootNode = new FineUIPro.TreeNode
                    {
                        Text = getSubUnit.UnitName,
                        NodeID = getSubUnit.UnitId,
                        EnableClickEvent = true
                    };
                    tvProject.Nodes.Add(crootNode);

                    var getSProjects = ProjectService.GetProjectWorkList(getSubUnit.UnitId);
                    foreach (var sitem in getSProjects)
                    {
                        FineUIPro.TreeNode scrootNode = new FineUIPro.TreeNode
                        {
                            Text = sitem.ProjectName,
                            NodeID = sitem.ProjectId,
                            EnableClickEvent = true
                        };
                        if (sitem.ProjectId == this.ProjectId)
                        {
                            scrootNode.Checked = true;
                        }
                        crootNode.Nodes.Add(scrootNode);
                    }
                }
            }
        }
        #endregion

        protected void ckState_SelectedIndexChanged(object sender, EventArgs e)
        {
            ////加载树
            SetSubUnitProjectTree(this.tvProject);
        }
    }
}