using BLL;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
namespace FineUIPro.Web.HSSE.Emergency
{
    public partial class EmergencyProcessEdit : PageBase
    {
        #region 定义项
        /// 
        /// 主键
        /// 
        public string EmergencyProcessId
        {
            get
            {
                return (string)ViewState["EmergencyProcessId"];
            }
            set
            {
                ViewState["EmergencyProcessId"] = value;
            }
        }
        /// 
        /// 项目主键
        /// 
        public string ProjectId
        {
            get
            {
                return (string)ViewState["ProjectId"];
            }
            set
            {
                ViewState["ProjectId"] = value;
            }
        }
        #endregion
        #region 加载
        /// 
        /// 加载页面
        /// 
        /// 
        /// 
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.GetButtonPower();
                this.btnClose.OnClientClick = ActiveWindow.GetHideReference();
                this.EmergencyProcessId = Request.Params["EmergencyProcessId"];
                if (!string.IsNullOrEmpty(this.EmergencyProcessId))
                {
                    var EmergencyProcess = Funs.DB.Emergency_EmergencyProcess.FirstOrDefault(x => x.EmergencyProcessId == this.EmergencyProcessId);
                    if (EmergencyProcess != null)
                    {
                        this.txtProcessSteps.Text = EmergencyProcess.ProcessSteps;
                        this.txtProcessName.Text = EmergencyProcess.ProcessName;
                        this.txtStepOperator.Text = EmergencyProcess.StepOperator;
                        //this.txtRemark.Text = EmergencyProcess.Remark;
                        if (EmergencyProcess.ProcessSteps == "0")
                        {
                            this.State1.Hidden = false;
                            this.State2.Hidden = true;
                            this.State2Person.Hidden = true;
                            BindGrid();
                        }
                        else
                        {
                            EmergencyTeamAndTrainService.InitTeamDropDownList(drpTeam, this.CurrUser.LoginProjectId, true);
                            if (!string.IsNullOrEmpty(EmergencyProcess.ProcessTeam))
                            {
                                this.drpTeam.SelectedValueArray = EmergencyProcess.ProcessTeam.Split(',');
                                string Users = string.Empty;
                                string[] array = this.drpTeam.SelectedValueArray;
                                List str = new List();
                                foreach (var item in array)
                                {
                                    if (item != BLL.Const._Null)
                                    {
                                        var TeamItem = (from x in Funs.DB.Emergency_EmergencyTeamItem where x.FileId == item select x).ToList();
                                        foreach (var teams in TeamItem)
                                        {
                                            Users += PersonService.GetPersonNameById(teams.PersonId) + ",";
                                        }
                                    }
                                }
                                if (!string.IsNullOrEmpty(Users))
                                {
                                    txtUser.Text = Users.Substring(0, Users.LastIndexOf(","));
                                }
                            }
                        }
                    }
                }
            }
        }
        private void BindGrid()
        {
            string strSql = @"select * from Emergency_EmergencyProcessItem where EmergencyProcessId=@EmergencyProcessId";
            List listStr = new List();
            listStr.Add(new SqlParameter("@EmergencyProcessId", this.EmergencyProcessId));
            SqlParameter[] parameter = listStr.ToArray();
            DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
            Grid1.RecordCount = tb.Rows.Count;
            tb = GetFilteredTable(Grid1.FilteredData, tb);
            var table = this.GetPagedDataTable(Grid1, tb);
            Grid1.DataSource = table;
            Grid1.DataBind();
        }
        #endregion
        #region 保存
        /// 
        /// 保存按钮
        /// 
        /// 
        /// 
        protected void btnSave_Click(object sender, EventArgs e)
        {
            this.SaveData();
            PageContext.RegisterStartupScript(ActiveWindow.GetHideRefreshReference());
        }
        /// 
        /// 保存数据
        /// 
        /// 
        void SaveData()
        {
            var EmergencyProcess = Funs.DB.Emergency_EmergencyProcess.FirstOrDefault(x => x.EmergencyProcessId == this.EmergencyProcessId);
            if (EmergencyProcess != null)
            {
                EmergencyProcess.ProcessName = this.txtProcessName.Text.Trim();
                EmergencyProcess.StepOperator = this.txtStepOperator.Text.Trim();
                //EmergencyProcess.Remark = this.txtRemark.Text.Trim();
                //队伍
                EmergencyProcess.ProcessTeam = Funs.GetStringByArray(this.drpTeam.SelectedValueArray);
                Funs.DB.SubmitChanges();
                if (EmergencyProcess.ProcessSteps == "0")
                {
                    var getViewList = this.CollectGridInfo();
                    foreach (var item in getViewList)
                    {
                        var ProcessItem = Funs.DB.Emergency_EmergencyProcessItem.FirstOrDefault(x => x.EmergencyProcessItemId == item.EmergencyProcessItemId);
                        if (ProcessItem != null)
                        {
                            ProcessItem.Content = item.Content;
                            ProcessItem.SortId = item.SortId;
                            Funs.DB.SubmitChanges();
                        }
                        else
                        {
                            Model.Emergency_EmergencyProcessItem newItem = new Model.Emergency_EmergencyProcessItem
                            {
                                EmergencyProcessItemId = item.EmergencyProcessItemId,
                                EmergencyProcessId = this.EmergencyProcessId,
                                Content = item.Content,
                                SortId = item.SortId,
                            };
                            Funs.DB.Emergency_EmergencyProcessItem.InsertOnSubmit(newItem);
                            Funs.DB.SubmitChanges();
                        }
                    }
                }
            }
        }
        //private string GetStringByArray(string[] array)
        //{
        //    string str = string.Empty;
        //    foreach (var item in array)
        //    {
        //        if (item != BLL.Const._Null)
        //        {
        //            str += item + ",";
        //        }
        //    }
        //    if (!string.IsNullOrEmpty(str))
        //    {
        //        str = str.Substring(0, str.LastIndexOf(","));
        //    }
        //    return str;
        //}
        #endregion
        #region 获取按钮权限
        /// 
        /// 获取按钮权限
        /// 
        /// 
        /// 
        void GetButtonPower()
        {
            if (Request.Params["value"] == "0")
            {
                return;
            }
            var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.ProjectEmergencyProcessMenuId);
            if (buttonList.Count() > 0)
            {
                if (buttonList.Contains(BLL.Const.BtnModify))
                {
                    this.btnSave.Hidden = false;
                }
            }
        }
        #endregion
        #region 确定按钮
        /// 
        /// 确定按钮
        /// 
        /// 
        /// 
        protected void btnSure_Click(object sender, EventArgs e)
        {
            var getViewList = this.CollectGridInfo();
            getViewList = getViewList.Where(x => x.EmergencyProcessItemId != this.hdEmergencyProcessId.Text).ToList();
            Model.Emergency_EmergencyProcessItem newView = new Model.Emergency_EmergencyProcessItem
            {
                EmergencyProcessItemId = SQLHelper.GetNewID(),
                EmergencyProcessId = this.EmergencyProcessId,
                Content = this.txtContent.Text,
                SortId=this.txtSortId.Text,
            };
            getViewList.Add(newView);
            
            this.Grid1.DataSource = getViewList;
            this.Grid1.DataBind();
            this.InitText();
        }
        #endregion
        #region 收集页面信息
        /// 
        ///  收集页面信息
        /// 
        /// 
        private List CollectGridInfo()
        {
            List getViewList = new List();
            for (int i = 0; i < Grid1.Rows.Count; i++)
            {
                Model.Emergency_EmergencyProcessItem newView = new Model.Emergency_EmergencyProcessItem
                {
                    EmergencyProcessItemId = Grid1.Rows[i].DataKeys[0].ToString(),
                    EmergencyProcessId = this.EmergencyProcessId,
                    Content = Grid1.Rows[i].Values[1].ToString(),
                    SortId = Grid1.Rows[i].Values[0].ToString(),
                };
                getViewList.Add(newView);
            }
            return getViewList;
        }
        #endregion
        #region 页面清空
        /// 
        /// 页面清空
        /// 
        private void InitText()
        {
            this.hdEmergencyProcessId.Text = string.Empty;
            this.txtContent.Text = string.Empty;
            this.txtSortId.Text = string.Empty;
        }
        #endregion
        #region Grid 操作事件
        /// 
        /// 双击
        /// 
        /// 
        /// 
        protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e)
        {
            this.EditData();
        }
        /// 
        /// 编辑
        /// 
        /// 
        /// 
        protected void btnMenuEdit_Click(object sender, EventArgs e)
        {
            this.EditData();
        }
        /// 
        /// 编辑事件
        /// 
        private void EditData()
        {
            if (Grid1.SelectedRowIndexArray.Length == 0)
            {
                Alert.ShowInParent("请至少选择一条记录!", MessageBoxIcon.Warning);
                return;
            }
            var getViewList = this.CollectGridInfo();
            var item = getViewList.FirstOrDefault(x => x.EmergencyProcessItemId == Grid1.SelectedRowID);
            if (item != null)
            {
                this.hdEmergencyProcessId.Text = item.EmergencyProcessItemId;
                this.txtContent.Text = item.Content;
                this.txtSortId.Text = item.SortId;
            }
            
        }
        /// 
        ///  删除
        /// 
        /// 
        /// 
        protected void btnMenuDelete_Click(object sender, EventArgs e)
        {
            if (Grid1.SelectedRowIndexArray.Length > 0)
            {
                var getViewList = this.CollectGridInfo();
                foreach (int rowIndex in Grid1.SelectedRowIndexArray)
                {
                    string rowID = Grid1.DataKeys[rowIndex][0].ToString();
                    var item = getViewList.FirstOrDefault(x => x.EmergencyProcessItemId == rowID);
                    if (item != null)
                    {
                        getViewList.Remove(item);
                    }
                    var ProcessItem = Funs.DB.Emergency_EmergencyProcessItem.First(x => x.EmergencyProcessItemId == rowID);
                    if (ProcessItem != null) {
                        Funs.DB.Emergency_EmergencyProcessItem.DeleteOnSubmit(ProcessItem);
                        Funs.DB.SubmitChanges();
                    }
                }
                this.Grid1.DataSource = getViewList;
                this.Grid1.DataBind();
            }
        }
        #endregion
        protected void drpTeam_SelectedIndexChanged(object sender, EventArgs e)
        {
            txtUser.Text = string.Empty; ;
            string Users = string.Empty;
            string[] array = this.drpTeam.SelectedValueArray;
            List str = new List();
            foreach (var item in array)
            {
                if (item != BLL.Const._Null)
                {
                    var TeamItem = (from x in Funs.DB.Emergency_EmergencyTeamItem where x.FileId == item select x).ToList();
                    foreach (var teams in TeamItem)
                    {
                        Users += PersonService.GetPersonNameById(teams.PersonId)+ ",";
                    }
                }
            }
            if (!string.IsNullOrEmpty(Users))
            {
                txtUser.Text = Users.Substring(0, Users.LastIndexOf(","));
            }
        }
    }
}