using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Web.UI.WebControls;
using BLL;
using Model;
using AspNet = System.Web.UI.WebControls;
namespace FineUIPro.Web.CQMS.Performance
{
    public partial class PerformanceConfig : PageBase
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                //当前年份
                dpYear.Text = DateTime.Now.Year.ToString();
                var model = Funs.DB.CQMS_Performance_SetUp.FirstOrDefault(x => x.CreateYear == dpYear.Text);
                if (model != null)
                {
                    BindGrid();
                }
            }
        }
        protected void btnSearch_searach(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(dpYear.Text.Trim()))
            {
                ShowNotify("年份不能为空。", MessageBoxIcon.Warning);
                PageContext.RegisterStartupScript("CloseRefresh()");
                return;
            }
            else
            {
                BindGrid();
            }
        }
        /// 
        /// 判断生成操作
        /// 
        protected void btnNew_Juge(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(dpYear.Text.Trim()))
            {
                ShowNotify("年份不能为空。", MessageBoxIcon.Warning);
                PageContext.RegisterStartupScript("CloseRefresh()");
                return;
            }
            //根据年份查询是否有数据
            var modelSum = Funs.DB.CQMS_Performance_SetUp.Where(x => x.CreateYear == dpYear.Text.Trim()).FirstOrDefault();
            //查到数据,二次确认
            if (modelSum != null)
            {
                PageContext.RegisterStartupScript(Confirm.GetShowReference("该日期已生成数据,是否确认重新生成?", String.Empty, MessageBoxIcon.Question,
                    PageManager1.GetCustomEventReference(false, "Confirmgd_OK"), PageManager1.GetCustomEventReference("Confirm_Cancel")));
                PageContext.RegisterStartupScript("CloseRefresh()");
            }
            else
            {
                //生成数据
                AddPerformanceConfig();
            }
        }
        private void BindGrid()
        {
            string strSql = @"SELECT * FROM CQMS_Performance_SetUp  where 1=1 ";
            List listStr = new List();
            if (!string.IsNullOrEmpty(dpYear.Text.Trim()))
            {
                strSql += " AND CreateYear = @CreateYear";
                listStr.Add(new SqlParameter("@CreateYear", dpYear.Text.Trim()));
            }
            strSql += " order by SortIndex ";
            SqlParameter[] parameter = listStr.ToArray();
            DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
            Grid1.RecordCount = tb.Rows.Count;
            var table = tb;
            Grid1.DataSource = table;
            Grid1.DataBind();
        }
        /// 
        /// 生成
        /// 
        private void AddPerformanceConfig()
        {
            List modelList = new List();
            for (int i = 0; i < 12; i++)
            {
                Model.CQMS_Performance_SetUp model = new CQMS_Performance_SetUp();
                model.PerformanceSteUpGid = Guid.NewGuid().ToString();
                //第一次是上一年的12月份
                if (i==0)
                {
                    model.SetUpMonth = (Convert.ToInt32(dpYear.Text.Trim()) - 1).ToString() +"-" + 12;
                    model.SetUpStartDate = (Convert.ToInt32(dpYear.Text.Trim()) - 1).ToString() + "-" + 12 + "-" + "01";
                    var dates = Convert.ToDateTime((dpYear.Text.Trim() + "-" + (i + 1) + "-" + "01")).AddMonths(1).AddDays(-1);
                    model.SetUpEndDate = (Convert.ToInt32(dpYear.Text.Trim()) - 1).ToString() + "-12-" + dates.Day;
                    model.CreateDate = Convert.ToDateTime(dpYear.Text.Trim() + "-" + 12);
                }
                else
                {
                    model.SetUpMonth = dpYear.Text.Trim() + "-" + (i);
                    model.SetUpStartDate = dpYear.Text.Trim() + "-" + (i ) + "-" + "01";
                    var dates = Convert.ToDateTime((dpYear.Text.Trim() + "-" + (i ) + "-" + "01")).AddMonths(1).AddDays(-1);
                    model.SetUpEndDate = dates.Year.ToString() + "-" + dates.Month + "-" + dates.Day;
                    model.CreateDate = Convert.ToDateTime(dpYear.Text.Trim() + "-" + (i));
                }
                model.SetUpWeek = 4;
                model.CreateYear = dpYear.Text.Trim();
                model.SortIndex = (i + 1);
                
                modelList.Add(model);
            }
            Funs.DB.CQMS_Performance_SetUp.InsertAllOnSubmit(modelList);
            Funs.DB.SubmitChanges();
            BindGrid();
        }
        // 
        /// 重新生成确认按钮
        /// 
        /// 
        /// 
        protected void PageManager1_CustomEvent(object sender, CustomEventArgs e)
        {
            if (e.EventArgument == "Confirmgd_OK" || e.EventArgument == "Confirmgy_OK")
            {
                // 根据日期查询是否有数据
                var modelSum = Funs.DB.CQMS_Performance_SetUp.Where(x => x.CreateYear == dpYear.Text.Trim()).ToList();
                if (modelSum.Count > 0)
                {
                    //删除所有数据
                    using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
                    {
                        db.CQMS_Performance_SetUp.DeleteAllOnSubmit(modelSum);
                        //生成数据
                    }
                }
            }
        }
        protected void Button2_Click(object sender, EventArgs e)
        {
            using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
            {
                Dictionary> modifiedDict = Grid1.GetModifiedDict();
                foreach (int rowIndex in modifiedDict.Keys)
                {
                    Model.CQMS_Performance_SetUp model = new CQMS_Performance_SetUp();
                    model.PerformanceSteUpGid = Grid1.DataKeys[rowIndex][0].ToString();
                    model = db.CQMS_Performance_SetUp.FirstOrDefault(x => x.PerformanceSteUpGid == model.PerformanceSteUpGid);
                    if (modifiedDict[rowIndex].ContainsKey("SetUpStartDate"))
                    {
                        model.SetUpStartDate = modifiedDict[rowIndex]["SetUpStartDate"].ToString();
                    }
                    if (modifiedDict[rowIndex].ContainsKey("SetUpEndDate"))
                    {
                        model.SetUpEndDate = modifiedDict[rowIndex]["SetUpEndDate"].ToString();
                    }
                    if (modifiedDict[rowIndex].ContainsKey("SetUpWeek"))
                    {
                        model.SetUpWeek = Convert.ToInt32(modifiedDict[rowIndex]["SetUpWeek"].ToString());
                    }
                    db.SubmitChanges();
                }
                BindGrid();
                ShowNotify("保存成功。", MessageBoxIcon.Success);
            }
        }
    }
}