using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLL;
using Newtonsoft.Json.Linq;
namespace FineUIPro.Web.CQMS.ManageReportNew
{
    public partial class MonthReportNewEdit1 : PageBase
    {
        #region 定义项
        /// 
        /// 主键
        /// 
        public string ReportId
        {
            get
            {
                return (string)ViewState["ReportId"];
            }
            set
            {
                ViewState["ReportId"] = value;
            }
        }
        public string AddOrUpdate
        {
            get
            {
                return (string)ViewState["AddOrUpdate"];
            }
            set
            {
                ViewState["AddOrUpdate"] = value;
            }
        }
        #endregion
        #region 列表集合
        private static List detailsGrid1 = new List();
        #endregion
        #region 加载页面
        /// 
        /// 加载页面
        /// 
        /// 
        /// 
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.EnableViewState = true;
                this.lblProjectName.Text = BLL.ProjectService.GetProjectByProjectId(this.CurrUser.LoginProjectId).ProjectName;
                this.ReportId = Request.Params["reportId"];
                if (!string.IsNullOrEmpty(Request.Params["view"]))
                {
                    this.Button1.Visible = false;
                    this.Button2.Visible = false;
                }
                if (!string.IsNullOrEmpty(this.ReportId))
                {
                    Model.Report_WeekAndMonthReport_New weekAndMonthReport = WeekAndMonthReportNewService.Detail(this.ReportId);
                    if (weekAndMonthReport != null)
                    {
                        if (weekAndMonthReport.SortId != null)
                        {
                            this.txtPeriod.Text = Convert.ToString(weekAndMonthReport.SortId);
                        }
                        if (weekAndMonthReport.StartDate != null)
                        {
                            this.txtStartDate.Text = string.Format("{0:yyyy-MM-dd}", weekAndMonthReport.StartDate);
                        }
                        if (weekAndMonthReport.EndDate != null)
                        {
                            this.txtEndDate.Text = string.Format("{0:yyyy-MM-dd}", weekAndMonthReport.EndDate);
                        }
                    }
                    AddOrUpdate = "update";
                    #region 加载本月质量目标管理情况 
                    detailsGrid1.Clear();
                    detailsGrid1 = (from x in Funs.DB.Report_CqmsTarget
                                    where x.ReportId == this.ReportId
                                    orderby x.SortId
                                    select x).ToList();
                    if (detailsGrid1.Count > 0)
                    {
                        Grid1.Hidden = false;
                        Grid1.DataSource = detailsGrid1;
                        Grid1.DataBind();
                    }
                    #endregion
                    #region 加载文本框内容
                    var txtReportList = Funs.DB.Report_TextBoxContent.Where(x => x.ReportId == ReportId).ToList();
                    txtAre0.Text = txtReportList.FirstOrDefault(x => x.ContentType == "0").ContentText;
                    txtAre1.Text = txtReportList.FirstOrDefault(x => x.ContentType == "1").ContentText;
                    txtAre2.Text = txtReportList.FirstOrDefault(x => x.ContentType == "2").ContentText;
                    txtAre20.Text = txtReportList.FirstOrDefault(x => x.ContentType == "20").ContentText;
                    txtAre21.Text = txtReportList.FirstOrDefault(x => x.ContentType == "21").ContentText;
                    txtAre22.Text = txtReportList.FirstOrDefault(x => x.ContentType == "22").ContentText;
                    #endregion
                }
                else
                {
                    this.txtStartDate.Text = string.IsNullOrEmpty(Request.Params["startdate"]) ? string.Format("{0:yyyy-MM-dd}", DateTime.Now) : Request.Params["startdate"];
                    this.txtEndDate.Text = string.IsNullOrEmpty(Request.Params["enddate"]) ? string.Format("{0:yyyy-MM-dd}", Convert.ToDateTime(this.txtStartDate.Text).AddMonths(1).AddDays(-1)) : Request.Params["enddate"];
                    //给个新的主键
                    ReportId = Guid.NewGuid().ToString();
                    AddOrUpdate = "add";
                }
                hidReportId.Value = ReportId;
            }
        }
        #endregion
        #region 时间选择事件
        /// 
        /// 开始时间选择事件
        /// 
        /// 
        /// 
        protected void txtStartDate_TextChanged(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(this.txtStartDate.Text.Trim()))
            {
                string url = Request.Url.ToString();
                if (url.Contains("?"))
                {
                    url = Request.Url.ToString().Substring(0, Request.Url.ToString().LastIndexOf('?'));
                }
                Response.Redirect(url + "?startdate=" + txtStartDate.Text + "&enddate=" + txtEndDate.Text);
            }
        }
        #endregion
        #region 本月质量目标管理情况 Grid1方法
        protected void btnAddGrid1_Click(object sender, EventArgs e)
        {
            Grid1.Hidden = false;
            JArray teamGroupData = Grid1.GetMergedData();
            List list = new List();
            foreach (JObject teamGroupRow in teamGroupData)
            {
                JObject values = teamGroupRow.Value("values");
                values.Add("Id", teamGroupRow.Value("id"));
                list.Add(values);
            }
            JObject defaultObj = new JObject
                {   { "Id",Guid.NewGuid() },
                    { "ReportId", ReportId },
                    { "ProStage", "" },
                    { "ProDescribe",""},
                    { "TargetValue", "" },
                    { "MonthPer","" },
                    { "Remarks", "" },
                    { "SortId","" },
                    { "Delete1", String.Format(" ", GetDeleteScriptGrid1(), IconHelper.GetResolvedIconUrl(Icon.Delete)) }
                };
            list.Add(defaultObj);
            Grid1.DataSource = list;
            Grid1.DataBind();
        }
        protected void Grid1_PreDataBound(object sender, EventArgs e)
        {
            // 设置LinkButtonField的点击客户端事件
            LinkButtonField deleteField = Grid1.FindColumn("Delete1") as LinkButtonField;
            deleteField.OnClientClick = GetDeleteScriptGrid1();
        }
        /// 
        /// 删除提示
        /// 
        /// 
        private string GetDeleteScriptGrid1()
        {
            return Confirm.GetShowReference("删除选中行?", String.Empty, MessageBoxIcon.Question, Grid1.GetDeleteSelectedRowsReference(), String.Empty);
        }
        #endregion
        #region 保存
        /// 
        /// 保存按钮
        /// 
        /// 
        /// 
        protected void btnSave_Click(object sender, EventArgs e)
        {
            Model.Report_WeekAndMonthReport_New report = new Model.Report_WeekAndMonthReport_New();
            report.Id = ReportId;
            report.ProjectId = this.CurrUser.LoginProjectId;
            if (!string.IsNullOrEmpty(this.txtPeriod.Text.Trim()))
            {
                try
                {
                    report.SortId = this.txtPeriod.Text.Trim();
                }
                catch (Exception)
                {
                    ScriptManager.RegisterStartupScript(this, typeof(string), "_alert", "alert('周期输入格式不正确,请重新输入!')", true);
                    return;
                }
            }
            if (!string.IsNullOrEmpty(this.txtStartDate.Text))
            {
                report.StartDate = Convert.ToDateTime(this.txtStartDate.Text);
            }
            if (!string.IsNullOrEmpty(this.txtEndDate.Text))
            {
                report.EndDate = Convert.ToDateTime(this.txtEndDate.Text);
            }
            report.CreateDate = DateTime.Now;
            report.CreateMan = CurrUser.UserId;
            #region 删除所有子表
            //本月质量目标管理情况 
            CqmsTargetService.Delete(ReportId);
            //所有文本框表
            TextBoxContentService.Delete(ReportId);
            #endregion
            #region 保存所有子表
            //保存本月质量目标管理情况
            saveTarget();
            //保存文本框
            saveTxtContent();
            #endregion
            if (AddOrUpdate == "add")
            {
                WeekAndMonthReportNewService.Insert(report);
            }
            else
            {
                WeekAndMonthReportNewService.Update(report);
            }
            ShowNotify("编辑成功!", MessageBoxIcon.Success);
            PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
        }
        #region 保存本月质量目标管理情况 
        void saveTarget()
        {
            List detailLists = new List();
            JArray teamGroupData = Grid1.GetMergedData();
            foreach (JObject teamGroupRow in teamGroupData)
            {
                JObject values = teamGroupRow.Value("values");
                int rowIndex = teamGroupRow.Value("index");
                Model.Report_CqmsTarget newDetail = new Model.Report_CqmsTarget
                {
                    //Id = values.Value("Id"),
                    ReportId = ReportId,
                    ProStage = values.Value("ProStage"),
                    ProDescribe = values.Value("ProDescribe"),
                    TargetValue = values.Value("TargetValue"),
                    MonthPer = values.Value("MonthPer"),
                    Remarks = values.Value("Remarks"),
                    SortId = rowIndex + 1
                };
                if (Grid1.Rows[rowIndex].DataKeys.Length > 0)
                {
                    newDetail.Id = Grid1.Rows[rowIndex].DataKeys[0].ToString();
                }
                detailLists.Add(newDetail);
            }
            if (detailLists.Count > 0)
            {
                Funs.DB.Report_CqmsTarget.InsertAllOnSubmit(detailLists);
                Funs.DB.SubmitChanges();
            }
        }
        #endregion
        /// 
        /// 保存文本框内容
        /// 
        void saveTxtContent()
        {
            var txtContentList = new List();
            #region 给实体赋值
            var model0 = new Model.Report_TextBoxContent();
            model0.Id = Guid.NewGuid().ToString();
            model0.ReportId = ReportId;
            model0.ContentType = "0";
            model0.ContentText = txtAre0.Text;
            txtContentList.Add(model0);
            var model1 = new Model.Report_TextBoxContent();
            model1.Id = Guid.NewGuid().ToString();
            model1.ReportId = ReportId;
            model1.ContentType = "1";
            model1.ContentText = txtAre1.Text;
            txtContentList.Add(model1);
            var model2 = new Model.Report_TextBoxContent();
            model2.Id = Guid.NewGuid().ToString();
            model2.ReportId = ReportId;
            model2.ContentType = "2";
            model2.ContentText = txtAre2.Text;
            txtContentList.Add(model2);
            var model20 = new Model.Report_TextBoxContent();
            model20.Id = Guid.NewGuid().ToString();
            model20.ReportId = ReportId;
            model20.ContentType = "20";
            model20.ContentText = txtAre20.Text;
            txtContentList.Add(model20);
            var model21 = new Model.Report_TextBoxContent();
            model21.Id = Guid.NewGuid().ToString();
            model21.ReportId = ReportId;
            model21.ContentType = "21";
            model21.ContentText = txtAre21.Text;
            txtContentList.Add(model21);
            var model22 = new Model.Report_TextBoxContent();
            model22.Id = Guid.NewGuid().ToString();
            model22.ReportId = ReportId;
            model22.ContentType = "22";
            model22.ContentText = txtAre22.Text;
            txtContentList.Add(model22);
            #endregion
            Funs.DB.Report_TextBoxContent.InsertAllOnSubmit(txtContentList);
            Funs.DB.SubmitChanges();
        }
        #endregion
    }
}
", GetDeleteScriptGrid1(), IconHelper.GetResolvedIconUrl(Icon.Delete)) }
                };
            list.Add(defaultObj);
            Grid1.DataSource = list;
            Grid1.DataBind();
        }
        protected void Grid1_PreDataBound(object sender, EventArgs e)
        {
            // 设置LinkButtonField的点击客户端事件
            LinkButtonField deleteField = Grid1.FindColumn("Delete1") as LinkButtonField;
            deleteField.OnClientClick = GetDeleteScriptGrid1();
        }
        /// 
        /// 删除提示
        /// 
        /// 
        private string GetDeleteScriptGrid1()
        {
            return Confirm.GetShowReference("删除选中行?", String.Empty, MessageBoxIcon.Question, Grid1.GetDeleteSelectedRowsReference(), String.Empty);
        }
        #endregion
        #region 保存
        /// 
        /// 保存按钮
        /// 
        /// 
        /// 
        protected void btnSave_Click(object sender, EventArgs e)
        {
            Model.Report_WeekAndMonthReport_New report = new Model.Report_WeekAndMonthReport_New();
            report.Id = ReportId;
            report.ProjectId = this.CurrUser.LoginProjectId;
            if (!string.IsNullOrEmpty(this.txtPeriod.Text.Trim()))
            {
                try
                {
                    report.SortId = this.txtPeriod.Text.Trim();
                }
                catch (Exception)
                {
                    ScriptManager.RegisterStartupScript(this, typeof(string), "_alert", "alert('周期输入格式不正确,请重新输入!')", true);
                    return;
                }
            }
            if (!string.IsNullOrEmpty(this.txtStartDate.Text))
            {
                report.StartDate = Convert.ToDateTime(this.txtStartDate.Text);
            }
            if (!string.IsNullOrEmpty(this.txtEndDate.Text))
            {
                report.EndDate = Convert.ToDateTime(this.txtEndDate.Text);
            }
            report.CreateDate = DateTime.Now;
            report.CreateMan = CurrUser.UserId;
            #region 删除所有子表
            //本月质量目标管理情况 
            CqmsTargetService.Delete(ReportId);
            //所有文本框表
            TextBoxContentService.Delete(ReportId);
            #endregion
            #region 保存所有子表
            //保存本月质量目标管理情况
            saveTarget();
            //保存文本框
            saveTxtContent();
            #endregion
            if (AddOrUpdate == "add")
            {
                WeekAndMonthReportNewService.Insert(report);
            }
            else
            {
                WeekAndMonthReportNewService.Update(report);
            }
            ShowNotify("编辑成功!", MessageBoxIcon.Success);
            PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
        }
        #region 保存本月质量目标管理情况 
        void saveTarget()
        {
            List detailLists = new List();
            JArray teamGroupData = Grid1.GetMergedData();
            foreach (JObject teamGroupRow in teamGroupData)
            {
                JObject values = teamGroupRow.Value("values");
                int rowIndex = teamGroupRow.Value("index");
                Model.Report_CqmsTarget newDetail = new Model.Report_CqmsTarget
                {
                    //Id = values.Value("Id"),
                    ReportId = ReportId,
                    ProStage = values.Value("ProStage"),
                    ProDescribe = values.Value("ProDescribe"),
                    TargetValue = values.Value("TargetValue"),
                    MonthPer = values.Value("MonthPer"),
                    Remarks = values.Value("Remarks"),
                    SortId = rowIndex + 1
                };
                if (Grid1.Rows[rowIndex].DataKeys.Length > 0)
                {
                    newDetail.Id = Grid1.Rows[rowIndex].DataKeys[0].ToString();
                }
                detailLists.Add(newDetail);
            }
            if (detailLists.Count > 0)
            {
                Funs.DB.Report_CqmsTarget.InsertAllOnSubmit(detailLists);
                Funs.DB.SubmitChanges();
            }
        }
        #endregion
        /// 
        /// 保存文本框内容
        /// 
        void saveTxtContent()
        {
            var txtContentList = new List();
            #region 给实体赋值
            var model0 = new Model.Report_TextBoxContent();
            model0.Id = Guid.NewGuid().ToString();
            model0.ReportId = ReportId;
            model0.ContentType = "0";
            model0.ContentText = txtAre0.Text;
            txtContentList.Add(model0);
            var model1 = new Model.Report_TextBoxContent();
            model1.Id = Guid.NewGuid().ToString();
            model1.ReportId = ReportId;
            model1.ContentType = "1";
            model1.ContentText = txtAre1.Text;
            txtContentList.Add(model1);
            var model2 = new Model.Report_TextBoxContent();
            model2.Id = Guid.NewGuid().ToString();
            model2.ReportId = ReportId;
            model2.ContentType = "2";
            model2.ContentText = txtAre2.Text;
            txtContentList.Add(model2);
            var model20 = new Model.Report_TextBoxContent();
            model20.Id = Guid.NewGuid().ToString();
            model20.ReportId = ReportId;
            model20.ContentType = "20";
            model20.ContentText = txtAre20.Text;
            txtContentList.Add(model20);
            var model21 = new Model.Report_TextBoxContent();
            model21.Id = Guid.NewGuid().ToString();
            model21.ReportId = ReportId;
            model21.ContentType = "21";
            model21.ContentText = txtAre21.Text;
            txtContentList.Add(model21);
            var model22 = new Model.Report_TextBoxContent();
            model22.Id = Guid.NewGuid().ToString();
            model22.ReportId = ReportId;
            model22.ContentType = "22";
            model22.ContentText = txtAre22.Text;
            txtContentList.Add(model22);
            #endregion
            Funs.DB.Report_TextBoxContent.InsertAllOnSubmit(txtContentList);
            Funs.DB.SubmitChanges();
        }
        #endregion
    }
}