using BLL;
using NPOI.SS.Formula.Functions;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
namespace FineUIPro.Web.DataShow
{
    public partial class JDWeekDetail : PageBase
    {
        #region 项目主键
        /// 
        /// 项目主键
        /// 
        public string ProjectId
        {
            get
            {
                return (string)ViewState["ProjectId"];
            }
            set
            {
                ViewState["ProjectId"] = value;
            }
        }
        public string WeekNo
        {
            get
            {
                return (string)ViewState["WeekNo"];
            }
            set
            {
                ViewState["WeekNo"] = value;
            }
        }
        #endregion
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.ProjectId = this.CurrUser.LoginProjectId;
                if (!string.IsNullOrEmpty(Request.Params["projectId"]) && Request.Params["projectId"] != this.CurrUser.LoginProjectId)
                {
                    this.ProjectId = Request.Params["projectId"];
                }
                Model.SGGLDB db = Funs.DB;
                var lastWeek = (from x in db.JDGL_WeekPlan where x.ProjectId == this.ProjectId && DateTime.Now > ((DateTime)x.EndDate).AddDays(1) orderby x.EndDate descending select x).FirstOrDefault();
                this.WeekNo = lastWeek != null ? lastWeek.WeekNo : string.Empty;
                this.InitDropDownList();
                BindGrid();
            }
        }
        /// 
        ///  初始化下拉框
        /// 
        private void InitDropDownList()
        {
            WeekItemService.InitWeekItemDropDownList(this.drpWeekNo, this.ProjectId, false);
            if (!string.IsNullOrWhiteSpace(this.WeekNo))
            {
                var item = WeekItemService.GetWeekItemByProjectIdAndWeekNo(this.ProjectId, int.Parse(this.WeekNo));
                if (item != null)
                {
                    this.drpWeekNo.SelectedValue = item.WeekNo.ToString();
                    this.txtStartDate.Text = string.Format("{0:yyyy-MM-dd}", item.StartDate);
                    this.txtEndDate.Text = string.Format("{0:yyyy-MM-dd}", item.EndDate);
                }
            }
            else
            {
                //获取当前时间所在周号,存在默认选中当前时间点所在周,否则选择最后一个周
                var item = WeekItemService.GetWeekItemByDateNow(this.ProjectId);
                if (item != null)
                {//存在默认选中当前时间点所在周
                    this.drpWeekNo.SelectedValue = item.WeekNo.ToString();
                    this.txtStartDate.Text = string.Format("{0:yyyy-MM-dd}", item.StartDate);
                    this.txtEndDate.Text = string.Format("{0:yyyy-MM-dd}", item.EndDate);
                }
                else
                {
                    var items = WeekItemService.GetWeekItemList(this.ProjectId);
                    if (items.Any())
                    {//否则选择最后一个周
                        item = items.First();
                        this.drpWeekNo.SelectedValue = item.WeekNo.ToString();
                        this.txtStartDate.Text = string.Format("{0:yyyy-MM-dd}", item.StartDate);
                        this.txtEndDate.Text = string.Format("{0:yyyy-MM-dd}", item.EndDate);
                    }
                }
            }
        }
        /// 
        /// 周号选择触发事件
        /// 
        /// 
        /// 
        protected void drpWeekNo_SelectedIndexChanged(object sender, EventArgs e)
        {
            string weekNo = this.drpWeekNo.SelectedValue;
            this.WeekNo = weekNo;
            var item = BLL.WeekItemService.GetWeekItemByProjectIdAndWeekNo(this.ProjectId, int.Parse(weekNo));
            if (item != null)
            {
                this.drpWeekNo.SelectedValue = item.WeekNo.ToString();
                this.txtStartDate.Text = string.Format("{0:yyyy-MM-dd}", item.StartDate);
                this.txtEndDate.Text = string.Format("{0:yyyy-MM-dd}", item.EndDate);
            }
            BindGrid();
        }
        /// 
        /// 加载Grid
        /// 
        private void BindGrid()
        {
            DataTable tb = BindData();
            Grid1.RecordCount = tb.Rows.Count;
            //tb = GetFilteredTable(Grid1.FilteredData, tb);
            var table = this.GetPagedDataTable(Grid1, tb);
            Grid1.DataSource = table;
            Grid1.DataBind();
        }
        /// 
        /// 加载数据
        /// 
        /// 
        private DataTable BindData()
        {
            string strSql = @"select mp.*,u.UnitName,uw.UnitWorkName,cn.ProfessionalName,case mp.IsOK when 1 then '已完成' when 0 then '未完成' else '' end as IsOKStr 
,DutyPersonName = STUFF((SELECT ',' + p.UserName FROM dbo.Sys_User as p where PATINDEX('%,' + RTRIM(p.UserId) + ',%', ',' + mp.DutyPerson + ',') > 0 FOR XML PATH('')), 1, 1,'') 
from [dbo].[JDGL_WeekPlan] mp
left join Base_Unit u on u.UnitId=mp.UnitId
left join WBS_UnitWork uw on uw.UnitWorkId=mp.UnitWork
left join Base_CNProfessional cn on cn.CNProfessionalId=mp.Major
where mp.ProjectId=@ProjectId and mp.WeekNo=@WeekNo order by mp.SortIndex";
            List listStr = new List();
            listStr.Add(new SqlParameter("@ProjectId", this.ProjectId));
            listStr.Add(new SqlParameter("@WeekNo", this.WeekNo));
            SqlParameter[] parameter = listStr.ToArray();
            DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
            return tb;
        }
        /// 
        /// 查询
        /// 
        /// 
        /// 
        protected void TextBox2_TextChanged(object sender, EventArgs e)
        {
            this.BindGrid();
        }
        #region 表排序、分页、关闭窗口
        /// 
        /// 分页
        /// 
        /// 
        /// 
        protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
        {
            BindGrid();
        }
        /// 
        /// 排序
        /// 
        /// 
        /// 
        protected void Grid1_Sort(object sender, GridSortEventArgs e)
        {
            BindGrid();
        }
        #endregion
    }
}