using BLL;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
namespace FineUIPro.Web.CQMS.ManageReport
{
    public partial class QuarterlyProjectQualityEdit : PageBase
    {
        #region 定义变量
        /// 
        /// 主键
        /// 
        public string QuarterlyProjectQualityId
        {
            get
            {
                return (string)ViewState["QuarterlyProjectQualityId"];
            }
            set
            {
                ViewState["QuarterlyProjectQualityId"] = value;
            }
        }
        #region 项目主键
        /// 
        /// 项目主键
        /// 
        public string ProjectId
        {
            get
            {
                return (string)ViewState["ProjectId"];
            }
            set
            {
                ViewState["ProjectId"] = value;
            }
        }
        #endregion
        #endregion
        #region 加载页面
        /// 
        /// 加载页面
        /// 
        /// 
        /// 
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.btnClose.OnClientClick = ActiveWindow.GetHideReference();
                this.ProjectId = this.CurrUser.LoginProjectId;
                if (!string.IsNullOrEmpty(Request.Params["projectId"]) && Request.Params["projectId"] != this.CurrUser.LoginProjectId)
                {
                    this.ProjectId = Request.Params["projectId"];
                }
                BLL.ConstValue.InitConstValueDropDownList(this.ddlYearId, BLL.ConstValue.Group_0008, true);
                BLL.ConstValue.InitConstValueDropDownList(this.ddlQuarter, BLL.ConstValue.Group_0011, true);
                BLL.UserService.InitUserProjectIdUnitIdDropDownList(this.drpCompileMan, this.ProjectId, this.CurrUser.UnitId, true);
                BLL.UserService.InitUserProjectIdUnitIdDropDownList(this.drpResponsiblePerson, this.ProjectId, this.CurrUser.UnitId, true);
                this.QuarterlyProjectQualityId = Request.Params["QuarterlyProjectQualityId"];
                if (!string.IsNullOrEmpty(this.QuarterlyProjectQualityId))
                {
                    var quarterlyProjectQuality = BLL.ProjectQuarterlyProjectQualityService.GetQuarterlyProjectQualityById(this.QuarterlyProjectQualityId);
                    if (quarterlyProjectQuality != null)
                    {
                        this.ProjectId = quarterlyProjectQuality.ProjectId;
                        if (quarterlyProjectQuality.Year.HasValue)
                        {
                            this.ddlYearId.SelectedValue = quarterlyProjectQuality.Year.ToString();
                        }
                        if (quarterlyProjectQuality.Quarter.HasValue)
                        {
                            this.ddlQuarter.SelectedValue = quarterlyProjectQuality.Quarter.ToString();
                        }
                        if (quarterlyProjectQuality.CompileDate != null)
                        {
                            this.txtCompileDate.Text = string.Format("{0:yyyy-MM-dd}", quarterlyProjectQuality.CompileDate);
                        }
                        if (!string.IsNullOrEmpty(quarterlyProjectQuality.ResponsiblePerson))
                        {
                            this.drpResponsiblePerson.SelectedValue = quarterlyProjectQuality.ResponsiblePerson;
                        }
                        if (!string.IsNullOrEmpty(quarterlyProjectQuality.CompileMan))
                        {
                            this.drpCompileMan.SelectedValue = quarterlyProjectQuality.CompileMan;
                        }
                        this.txtTel.Text = quarterlyProjectQuality.Tel;
                        this.txtQualityManagePersonNum.Text = quarterlyProjectQuality.QualityManagePersonNum.HasValue ? quarterlyProjectQuality.QualityManagePersonNum.ToString() : "";
                        this.txtAdvancedTitlePersonNum.Text = quarterlyProjectQuality.AdvancedTitlePersonNum.HasValue ? quarterlyProjectQuality.AdvancedTitlePersonNum.ToString() : "";
                        this.txtIntermediateTitlePersonNum.Text = quarterlyProjectQuality.IntermediateTitlePersonNum.HasValue ? quarterlyProjectQuality.IntermediateTitlePersonNum.ToString() : "";
                        this.txtBeImplementedProjectNum.Text = quarterlyProjectQuality.BeImplementedProjectNum.HasValue ? quarterlyProjectQuality.BeImplementedProjectNum.ToString() : "";
                        this.txtStartImplementedProjectNum.Text = quarterlyProjectQuality.StartImplementedProjectNum.HasValue ? quarterlyProjectQuality.StartImplementedProjectNum.ToString() : "";
                        this.txtAccumulativeStartImplemented.Text = quarterlyProjectQuality.AccumulativeStartImplemented.HasValue ? quarterlyProjectQuality.AccumulativeStartImplemented.ToString() : "";
                        this.txtCompleteProjectNum.Text = quarterlyProjectQuality.CompleteProjectNum.HasValue ? quarterlyProjectQuality.CompleteProjectNum.ToString() : "";
                        this.txtYearCompleteProjectNum.Text = quarterlyProjectQuality.YearCompleteProjectNum.HasValue ? quarterlyProjectQuality.YearCompleteProjectNum.ToString() : "";
                        this.txtQuarterTotal.Text = quarterlyProjectQuality.QuarterTotal.HasValue ? quarterlyProjectQuality.QuarterTotal.ToString() : "";
                        this.txtQuarterFirstPassNum.Text = quarterlyProjectQuality.QuarterFirstPassNum.HasValue ? quarterlyProjectQuality.QuarterFirstPassNum.ToString() : "";
                        this.txtQuarterFirstPassRate.Text = quarterlyProjectQuality.QuarterFirstPassRate.HasValue ? quarterlyProjectQuality.QuarterFirstPassRate.ToString() : "";
                        this.txtYearTotal.Text = quarterlyProjectQuality.YearTotal.HasValue ? quarterlyProjectQuality.YearTotal.ToString() : "";
                        this.txtYearFirstPassNum.Text = quarterlyProjectQuality.YearFirstPassNum.HasValue ? quarterlyProjectQuality.YearFirstPassNum.ToString() : "";
                        this.txtYearFirstPassRate.Text = quarterlyProjectQuality.YearFirstPassRate.HasValue ? quarterlyProjectQuality.YearFirstPassRate.ToString() : "";
                        this.txtQuaterCheckSuperviseNum.Text = quarterlyProjectQuality.QuaterCheckSuperviseNum.HasValue ? quarterlyProjectQuality.QuaterCheckSuperviseNum.ToString() : "";
                        this.txtQuaterCorrectiveNoticeNum.Text = quarterlyProjectQuality.QuaterCorrectiveNoticeNum.HasValue ? quarterlyProjectQuality.QuaterCorrectiveNoticeNum.ToString() : "";
                        this.txtQuaterQualityProblemNum.Text = quarterlyProjectQuality.QuaterQualityProblemNum.HasValue ? quarterlyProjectQuality.QuaterQualityProblemNum.ToString() : "";
                        this.txtQuaterClosedQualityProblemNum.Text = quarterlyProjectQuality.QuaterClosedQualityProblemNum.HasValue ? quarterlyProjectQuality.QuaterClosedQualityProblemNum.ToString() : "";
                        this.txtYearCheckSuperviseNum.Text = quarterlyProjectQuality.YearCheckSuperviseNum.HasValue ? quarterlyProjectQuality.YearCheckSuperviseNum.ToString() : "";
                        this.txtYearCorrectiveNoticeNum.Text = quarterlyProjectQuality.YearCorrectiveNoticeNum.HasValue ? quarterlyProjectQuality.YearCorrectiveNoticeNum.ToString() : "";
                        this.txtYearQualityProblemNum.Text = quarterlyProjectQuality.YearQualityProblemNum.HasValue ? quarterlyProjectQuality.YearQualityProblemNum.ToString() : "";
                        this.txtYearClosedQualityProblemNum.Text = quarterlyProjectQuality.YearClosedQualityProblemNum.HasValue ? quarterlyProjectQuality.YearClosedQualityProblemNum.ToString() : "";
                        this.txtQuaterQualityAccidentNum.Text = quarterlyProjectQuality.QuaterQualityAccidentNum.HasValue ? quarterlyProjectQuality.QuaterQualityAccidentNum.ToString() : "";
                        this.txtQuaterDirectEconomicLoss.Text = quarterlyProjectQuality.QuaterDirectEconomicLoss.HasValue ? quarterlyProjectQuality.QuaterDirectEconomicLoss.ToString() : "";
                        this.txtYearQualityAccidentNum.Text = quarterlyProjectQuality.YearQualityAccidentNum.HasValue ? quarterlyProjectQuality.YearQualityAccidentNum.ToString() : "";
                        this.txtYearDirectEconomicLoss.Text = quarterlyProjectQuality.YearDirectEconomicLoss.HasValue ? quarterlyProjectQuality.YearDirectEconomicLoss.ToString() : "";
                    }
                }
                else
                {
                    DateTime showDate = DateTime.Now.AddMonths(-3);
                    this.ddlQuarter.SelectedValue = Funs.GetNowQuarterlyByTime(showDate).ToString();
                    this.ddlYearId.SelectedValue = showDate.Year.ToString();
                    this.txtCompileDate.Text = string.Format("{0:yyyy-MM-dd}", DateTime.Now);
                    DateTime startTime = Funs.GetQuarterlyMonths(this.ddlYearId.SelectedValue, this.ddlQuarter.SelectedValue);
                    DateTime endTime = startTime.AddMonths(3);
                }
            }
        }
        #endregion
        #region 年季度变化事件
        /// 
        /// 年季度变化事件
        /// 
        /// 
        /// 
        protected void drpYear_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (this.ddlYearId.SelectedValue != BLL.Const._Null && this.ddlQuarter.SelectedValue != BLL.Const._Null)
            {
                DateTime startTime = Funs.GetQuarterlyMonths(this.ddlYearId.SelectedValue, this.ddlQuarter.SelectedValue);
                DateTime endTime = startTime.AddMonths(3);
            }
        }
        #endregion
        #region 保存
        /// 
        /// 保存按钮
        /// 
        /// 
        /// 
        protected void btnSave_Click(object sender, EventArgs e)
        {
            if (this.ddlYearId.SelectedValue == BLL.Const._Null)
            {
                Alert.ShowInTop("请选择年度", MessageBoxIcon.Warning);
                return;
            }
            if (this.ddlQuarter.SelectedValue == BLL.Const._Null)
            {
                Alert.ShowInTop("请选择季度", MessageBoxIcon.Warning);
                return;
            }
            this.SaveData(BLL.Const.BtnSave);
            PageContext.RegisterStartupScript(ActiveWindow.GetHideRefreshReference());
        }
        /// 
        /// 保存数据
        /// 
        /// 
        private void SaveData(string type)
        {
            Model.InformationProject_QuarterlyProjectQuality quarterlyProjectQuality = new Model.InformationProject_QuarterlyProjectQuality
            {
                ProjectId = this.ProjectId,
                UnitId = string.IsNullOrEmpty(this.CurrUser.UnitId) ? BLL.Const.UnitId_CWCEC : this.CurrUser.UnitId,
                QualityManagePersonNum = Funs.GetNewInt(this.txtQualityManagePersonNum.Text.Trim()),
                AdvancedTitlePersonNum = Funs.GetNewInt(this.txtAdvancedTitlePersonNum.Text.Trim()),
                IntermediateTitlePersonNum = Funs.GetNewInt(this.txtIntermediateTitlePersonNum.Text.Trim()),
                BeImplementedProjectNum = Funs.GetNewInt(this.txtBeImplementedProjectNum.Text.Trim()),
                StartImplementedProjectNum = Funs.GetNewInt(this.txtStartImplementedProjectNum.Text.Trim()),
                AccumulativeStartImplemented = Funs.GetNewInt(this.txtAccumulativeStartImplemented.Text.Trim()),
                CompleteProjectNum = Funs.GetNewInt(this.txtCompleteProjectNum.Text.Trim()),
                YearCompleteProjectNum = Funs.GetNewInt(this.txtYearCompleteProjectNum.Text.Trim()),
                QuarterTotal = Funs.GetNewInt(this.txtQuarterTotal.Text.Trim()),
                QuarterFirstPassNum = Funs.GetNewInt(this.txtQuarterFirstPassNum.Text.Trim()),
                QuarterFirstPassRate = Funs.GetNewDecimal(this.txtQuarterFirstPassRate.Text.Trim()),
                YearTotal = Funs.GetNewInt(this.txtYearTotal.Text.Trim()),
                YearFirstPassNum = Funs.GetNewInt(this.txtYearFirstPassNum.Text.Trim()),
                YearFirstPassRate = Funs.GetNewDecimal(this.txtYearFirstPassRate.Text.Trim()),
                QuaterCheckSuperviseNum = Funs.GetNewInt(this.txtQuaterCheckSuperviseNum.Text.Trim()),
                QuaterCorrectiveNoticeNum = Funs.GetNewInt(this.txtQuaterCorrectiveNoticeNum.Text.Trim()),
                QuaterQualityProblemNum = Funs.GetNewInt(this.txtQuaterQualityProblemNum.Text.Trim()),
                QuaterClosedQualityProblemNum = Funs.GetNewInt(this.txtQuaterClosedQualityProblemNum.Text.Trim()),
                YearCheckSuperviseNum = Funs.GetNewInt(this.txtYearCheckSuperviseNum.Text.Trim()),
                YearCorrectiveNoticeNum = Funs.GetNewInt(this.txtYearCorrectiveNoticeNum.Text.Trim()),
                YearQualityProblemNum = Funs.GetNewInt(this.txtYearQualityProblemNum.Text.Trim()),
                YearClosedQualityProblemNum = Funs.GetNewInt(this.txtYearClosedQualityProblemNum.Text.Trim()),
                QuaterQualityAccidentNum = Funs.GetNewInt(this.txtQuaterQualityAccidentNum.Text.Trim()),
                QuaterDirectEconomicLoss = Funs.GetNewDecimal(this.txtQuaterDirectEconomicLoss.Text.Trim()),
                YearQualityAccidentNum = Funs.GetNewInt(this.txtYearQualityAccidentNum.Text.Trim()),
                YearDirectEconomicLoss = Funs.GetNewInt(this.txtYearDirectEconomicLoss.Text.Trim()),
                Tel = this.txtTel.Text.Trim()
            };
            if (this.ddlYearId.SelectedValue != BLL.Const._Null)
            {
                quarterlyProjectQuality.Year = Funs.GetNewIntOrZero(this.ddlYearId.SelectedValue);
            }
            if (this.ddlQuarter.SelectedValue != BLL.Const._Null)
            {
                quarterlyProjectQuality.Quarter = Funs.GetNewIntOrZero(this.ddlQuarter.SelectedValue);
            }
            if (this.drpResponsiblePerson.SelectedValue != BLL.Const._Null)
            {
                quarterlyProjectQuality.ResponsiblePerson = this.drpResponsiblePerson.SelectedValue;
            }
            if (this.drpCompileMan.SelectedValue != BLL.Const._Null)
            {
                quarterlyProjectQuality.CompileMan = this.drpCompileMan.SelectedValue;
            }
            quarterlyProjectQuality.CompileDate = Funs.GetNewDateTime(this.txtCompileDate.Text.Trim());
            if (!string.IsNullOrEmpty(this.QuarterlyProjectQualityId))
            {
                quarterlyProjectQuality.QuarterlyProjectQualityId = this.QuarterlyProjectQualityId;
                BLL.ProjectQuarterlyProjectQualityService.UpdateQuarterlyProjectQuality(quarterlyProjectQuality);
                BLL.LogService.AddSys_Log(this.CurrUser, quarterlyProjectQuality.Year.ToString() + "-" + quarterlyProjectQuality.Quarter.ToString(), quarterlyProjectQuality.QuarterlyProjectQualityId, BLL.Const.ProjectQuarterlyProjectQualityMenuId, BLL.Const.BtnModify);
            }
            else
            {
                Model.InformationProject_QuarterlyProjectQuality oldDrillConductedQuarterlyReport = (from x in Funs.DB.InformationProject_QuarterlyProjectQuality
                                                                                                     where x.ProjectId == quarterlyProjectQuality.ProjectId && x.Year == quarterlyProjectQuality.Year && x.Quarter == quarterlyProjectQuality.Quarter
                                                                                                     select x).FirstOrDefault();
                if (oldDrillConductedQuarterlyReport == null)
                {
                    this.QuarterlyProjectQualityId = SQLHelper.GetNewID(typeof(Model.InformationProject_QuarterlyProjectQuality));
                    quarterlyProjectQuality.QuarterlyProjectQualityId = this.QuarterlyProjectQualityId;
                    BLL.ProjectQuarterlyProjectQualityService.AddQuarterlyProjectQuality(quarterlyProjectQuality);
                    BLL.LogService.AddSys_Log(this.CurrUser, quarterlyProjectQuality.Year.ToString() + "-" + quarterlyProjectQuality.Quarter.ToString(), quarterlyProjectQuality.QuarterlyProjectQualityId, BLL.Const.ProjectQuarterlyProjectQualityMenuId, BLL.Const.BtnAdd);
                }
                else
                {
                    Alert.ShowInTop("该季度记录已存在", MessageBoxIcon.Warning);
                    return;
                }
            }
        }
        #endregion
        /// 
        /// 本季度完成一次合格率
        /// 
        /// 
        /// 
        protected void txtQuarterTotal_TextChanged(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(this.txtQuarterTotal.Text.Trim()) && !string.IsNullOrEmpty(txtQuarterFirstPassNum.Text.Trim()))
            {
                txtQuarterFirstPassRate.Text = (Funs.GetNewDecimalOrZero(txtQuarterFirstPassNum.Text.Trim()) / Funs.GetNewDecimalOrZero(this.txtQuarterTotal.Text.Trim())*100).ToString();
            }
            else
            {
                this.txtQuarterFirstPassRate.Text = string.Empty;
            }
        }
        /// 
        /// 本年度完成一次合格率
        /// 
        /// 
        /// 
        protected void txtYearTotal_TextChanged(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(this.txtYearTotal.Text.Trim()) && !string.IsNullOrEmpty(this.txtYearFirstPassNum.Text.Trim()))
            {
                this.txtYearFirstPassRate.Text = (Funs.GetNewDecimalOrZero(this.txtYearFirstPassNum.Text.Trim()) / Funs.GetNewDecimalOrZero(this.txtYearTotal.Text.Trim())*100).ToString();
            }
        }
        /// 
        /// 获取本年累计开始实施项目数量(个)
        /// 
        /// 
        /// 
        //protected void txtStartImplementedProjectNum_TextChanged(object sender, EventArgs e)
        //{
        //    var q = (from x in Funs.DB.InformationProject_QuarterlyProjectQuality where x.Year == Convert.ToInt32(this.ddlYearId.SelectedValue) select x.StartImplementedProjectNum).Sum();
        //    if (q > 0)
        //    {
        //        this.txtAccumulativeStartImplemented.Text = (q + Funs.GetNewIntOrZero(txtStartImplementedProjectNum.Text.Trim())).ToString();
        //    }
        //}
        /// 
        /// 获取本年累计完成(竣工)项目数量(个)
        /// 
        /// 
        /// 
        //protected void txtCompleteProjectNum_TextChanged(object sender, EventArgs e)
        //{
        //    var q = (from x in Funs.DB.InformationProject_QuarterlyProjectQuality where x.Year == Convert.ToInt32(this.ddlYearId.SelectedValue) select x.CompleteProjectNum).Sum();
        //    if (q > 0)
        //    {
        //        this.txtYearCompleteProjectNum.Text = (q + Funs.GetNewIntOrZero(this.txtCompleteProjectNum.Text.Trim())).ToString();
        //    }
        //}
    }
}