using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using BLL;
namespace FineUIPro.Web.Transfer.Chart
{
    public partial class PunchlistFromChart : PageBase
    {
        #region 定义项
        /// 
        /// 项目主键
        /// 
        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.ProjectId = this.CurrUser.LoginProjectId;
                if (!string.IsNullOrEmpty(Request.Params["projectId"]))
                {
                    this.ProjectId = Request.Params["projectId"];
                }
                this.AnalyseData();
            }
        }
        #endregion
        /// 
        /// 统计分析
        /// 
        /// 
        /// 
        protected void BtnAnalyse_Click(object sender, EventArgs e)
        {
            this.AnalyseData();
        }
        #region 统计
        private void AnalyseData()
        {
            if (string.IsNullOrEmpty(ProjectId))
            {
                Alert.ShowInTop("项目未获取到,请刷新页面。", MessageBoxIcon.Warning);
                return;
            }
            var forms = from x in Funs.DB.Transfer_PunchlistFrom
                        where x.ProjectId == this.CurrUser.LoginProjectId
                        select x;
            var dates = (from x in forms where x.PUNCH_ITEM_FINISH_DATE != null orderby x.PUNCH_ITEM_FINISH_DATE select x.PUNCH_ITEM_FINISH_DATE).Distinct().ToList();
            DataTable dtTime = new DataTable();
            if (rblType.SelectedValue == "1")
            {
                dtTime.Columns.Add("日期", typeof(string));
                dtTime.Columns.Add("Finished(%)", typeof(string));
                if (dates.Count() > 0)
                {
                    List months = new List();
                    DateTime startDate = Convert.ToDateTime(dates.First());
                    DateTime endDate = Convert.ToDateTime(dates.Last());
                    do
                    {
                        months.Add(startDate);
                        startDate = startDate.AddDays(15);
                    } while (startDate <= endDate);
                    var nums = forms.Count();
                    foreach (var item in months)
                    {
                        DataRow rowTime = dtTime.NewRow();
                        Model.SpTDesktopItem newspItem = new Model.SpTDesktopItem();
                        rowTime["日期"] = string.Format("{0:yyyy-MM-dd}", item);
                        var finishedNums = forms.Count(x => x.PUNCH_ITEM_FINISH_DATE <= item && x.PUNCH_ITEM_STATUS == "Finished");
                        if (nums > 0)
                        {
                            rowTime["Finished(%)"] = 1.0 * finishedNums / nums;
                        }
                        dtTime.Rows.Add(rowTime);
                    }
                    this.ChartUc.CreateChartPunchlistFrom(BLL.ChartControlService.GetDataSourceChartByYijiao(dtTime, "PROGRESS REPORT", "Line", 1100, 600, false));
                }
            }
            else
            {
                dtTime.Columns.Add("日期", typeof(string));
                dtTime.Columns.Add("Finished", typeof(string));
                if (dates.Count() > 0)
                {
                    List months = new List();
                    DateTime startDate = Convert.ToDateTime(dates.First());
                    DateTime endDate = Convert.ToDateTime(dates.Last());
                    do
                    {
                        months.Add(startDate);
                        startDate = startDate.AddDays(15);
                    } while (startDate <= endDate);
                    var nums = forms.Count();
                    foreach (var item in months)
                    {
                        DataRow rowTime = dtTime.NewRow();
                        Model.SpTDesktopItem newspItem = new Model.SpTDesktopItem();
                        rowTime["日期"] = string.Format("{0:yyyy-MM-dd}", item);
                        var finishedNums = forms.Count(x => x.PUNCH_ITEM_FINISH_DATE <= item && x.PUNCH_ITEM_STATUS == "Finished");
                        rowTime["Finished"] = finishedNums;
                        dtTime.Rows.Add(rowTime);
                    }
                    this.ChartUc.CreateChart(BLL.ChartControlService.GetDataSourceChartByYijiao(dtTime, "PROGRESS REPORT", "Line", 1100, 600, false));
                }
            }
        }
        #endregion
        protected void rblType_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.AnalyseData();
        }
    }
}