using BLL;
using Model;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace FineUIPro.Web.TestRun.TestRunManage
{
    public partial class TailTermApprove : PageBase
    {
        /// 
        /// 主键
        /// 
        public string TailTermId
        {
            get { return (string)ViewState["TailTermId"]; }
            set { ViewState["TailTermId"] = value; }
        }
        /// 
        /// 问题图片是否可编辑
        /// 
        public int QuestionEditImg
        {
            get { return (int)ViewState["QuestionEditImg"]; }
            set { ViewState["QuestionEditImg"] = value; }
        }
        /// 
        /// 整改图片是否可编辑
        /// 
        public int RectifyEditImg
        {
            get { return (int)ViewState["RectifyEditImg"]; }
            set { ViewState["RectifyEditImg"] = value; }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                this.TailTermId = Request["TailTermId"];
                this.QuestionEditImg = -1;
                this.RectifyEditImg = -1;
                //数据绑定
                PageInit();
                //处理意见绑定
                gvHandleBrid();
            }
        }
        /// 
        /// 绑定数据
        /// 
        public void PageInit()
        {
            var data = from tail in Funs.DB.TestRun_InspectTailTerm
                       join unit in Funs.DB.Base_Unit on tail.ConstructionUnit equals unit.UnitId
                       join inspuser in Funs.DB.Sys_User on tail.InspectUser equals inspuser.UserId
                       join approuser in Funs.DB.Sys_User on tail.ApproveUser equals approuser.UserId
                       join termitem in Funs.DB.TestRun_SubInspectTermItem on tail.TermItemId equals termitem.TermItemId
                       where tail.TailTermId == this.TailTermId
                       select new
                       {
                           tail.ProjectName,
                           tail.TailTermCode,
                           unit.UnitName,
                           TermItemName = termitem.WorkInspectName,
                           tail.SubInspectId,
                           tail.QuestionDesc,
                           tail.RectifyOpinion,
                           tail.RectifyTime,
                           tail.InspectUser,
                           InspectUserName = inspuser.UserName,
                           tail.ApproveUser,
                           ApproveUserName = approuser.UserName,
                           tail.AdjustCompleteTime
                       };
            if (data.Count() > 0)
            {
                var model = data.FirstOrDefault();
                //项目名称
                lblProjectName.Text = model.ProjectName;
                //巡检编号
                lblTailTermCode.Text = model.TailTermCode;
                //施工单位
                lblConstructionUnit.Text = model.UnitName;
                //检查项
                lblTermItemName.Text = model.TermItemName;
                //问题描述
                lblQuestionDesc.Text = model.QuestionDesc;
                //整改意见
                lblRectifyOpinion.Text = model.RectifyOpinion;
                //要求整改完成时间
                lblAdjustCompleteTime.Text = model.AdjustCompleteTime != null ? model.AdjustCompleteTime.Value.ToString("yyyy-MM-dd hh:mm:ss") : string.Empty;
                //检查人
                lblInspectUser.Text = model.InspectUserName;
                //审核人
                lblApproveUser.Text = model.ApproveUserName;
                hidApproveUserId.Text = model.ApproveUser;
                //审核时间
                lblApproveTime.Text = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
            }
        }
        /// 
        /// 处理意见绑定
        /// 
        public void gvHandleBrid()
        {
            string strSql = @"select a.InspectTermId,a.ApproveOpinion,a.ApproveTime,a.ApproveType,a.ApproveState,(case a.ApproveState when 0 then '处理退回' when 1 then '处理完成' else '' end) as ApproveStateName,b.ConstructionUnit,d.UnitName as ConstructionUnitName,a.AddUser,a.AddTime from TestRun_InspectTermApproveRecords as a inner join TestRun_InspectTailTerm as b on a.TailTermId=b.TailTermId inner join TestRun_SubInspectTermItem as c on c.TermItemId=a.TermItemId inner join Base_Unit as d on d.UnitId=b.ConstructionUnit where 1=1 and a.ApproveType=0 and a.ProjectId=@ProjectId and a.TailTermId=@TailTermId ";
            List listStr = new List();
            listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
            listStr.Add(new SqlParameter("@TailTermId", this.TailTermId));
            strSql += " order by a.AddTime asc";
            SqlParameter[] parameter = listStr.ToArray();
            DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
            gvHandle.DataSource = tb;
            gvHandle.DataBind();
        }
        /// 
        /// 问题图片
        /// 
        protected void imgBtnQuestionFile_Click(object sender, EventArgs e)
        {
            PageContext.RegisterStartupScript(WindowAtt.GetShowReference(String.Format("../../AttachFile/webuploader.aspx?type={0}&toKeyId={1}&path=FileUpload/CheckControl&menuId={2}", QuestionEditImg, this.TailTermId + "q", Const.InspectTailTerm)));
        }
        /// 
        /// 整改图片
        /// 
        protected void imgBtnRectifyFile_Click(object sender, EventArgs e)
        {
            PageContext.RegisterStartupScript(WindowAtt.GetShowReference(String.Format("../../AttachFile/webuploader.aspx?type={0}&toKeyId={1}&path=FileUpload/CheckControl&menuId={2}", RectifyEditImg, this.TailTermId + "h", Const.InspectTailTerm)));
        }
        /// 
        /// 退回
        /// 
        protected void btnReturn_Click(object sender, EventArgs e)
        {
            var tailTerm = Funs.DB.TestRun_InspectTailTerm.FirstOrDefault(x => x.TailTermId == this.TailTermId);
            if (tailTerm != null)
            {
                tailTerm.ApproveState = 3;
                var model = new TestRun_InspectTermApproveRecords();
                model.InspectTermId = Guid.NewGuid().ToString();
                model.ProjectId = this.CurrUser.LoginProjectId;
                model.TermItemId = tailTerm.TermItemId;
                model.TailTermId = this.TailTermId;
                model.ApproveOpinion = txtApproveOpinion.Text;
                model.ApproveTime = DateTime.Parse(lblApproveTime.Text);
                model.ApproveUser = hidApproveUserId.Text;
                //0:处理记录1:审核记录
                model.ApproveType = 1;
                //0:退回1:通过
                model.ApproveState = 0;
                model.AddUser = this.CurrUser.UserId;
                model.AddTime = DateTime.Now;
                Funs.DB.TestRun_InspectTermApproveRecords.InsertOnSubmit(model);
                Funs.DB.SubmitChanges();
                ShowNotify("退回成功!", MessageBoxIcon.Success);
                PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
            }
        }
        /// 
        /// 通过
        /// 
        protected void btnPass_Click(object sender, EventArgs e)
        {
            var tailTerm = Funs.DB.TestRun_InspectTailTerm.FirstOrDefault(x => x.TailTermId == this.TailTermId);
            if (tailTerm != null)
            {
                //获取审核项
                if (Funs.DB.TestRun_InspectTailTerm.Count(x => x.TermItemId == tailTerm.TermItemId && x.ApproveState != 5 && x.TailTermId != this.TailTermId && x.InspectUser == tailTerm.InspectUser) == 0)
                {
                    var termItemModel = Funs.DB.TestRun_TermItemInspectedUser.FirstOrDefault(x => x.TermItemId == tailTerm.TermItemId && x.InspectedUser == tailTerm.InspectUser);
                    if (termItemModel != null)
                    {
                        termItemModel.InspectionResults = 1;
                        //检查表
                        var subModel = Funs.DB.TestRun_SubInspectTerm.FirstOrDefault(x => x.SubInspectId == termItemModel.SubInspectId);
                        if (subModel != null)
                        {
                            if (Funs.DB.TestRun_TermItemInspectedUser.Count(x => x.SubInspectId == termItemModel.SubInspectId && x.InspectionResults.GetValueOrDefault() != 1 && x.TermItemId != termItemModel.TermItemId) == 0)
                            {
                                subModel.InspectionIsAllPass = 1;
                            }
                            else
                            {
                                subModel.InspectionIsAllPass = 0;
                            }
                        }
                        //检查项表
                        var subItemModel = Funs.DB.TestRun_SubInspectTermItem.FirstOrDefault(x => x.TermItemId == termItemModel.TermItemId);
                        if (subItemModel != null)
                        {
                            if (Funs.DB.TestRun_TermItemInspectedUser.Count(x => x.InspectionResults.GetValueOrDefault() != 1 && x.TermItemId == termItemModel.TermItemId && x.InspectedUser != tailTerm.InspectUser) == 0)
                            {
                                subItemModel.AllUserInspectionPass = 1;
                            }
                            else
                            {
                                subItemModel.AllUserInspectionPass = 0;
                            }
                        }
                    }
                }
                tailTerm.ApproveState = 5;
                var model = new TestRun_InspectTermApproveRecords();
                model.InspectTermId = Guid.NewGuid().ToString();
                model.ProjectId = this.CurrUser.LoginProjectId;
                model.TermItemId = tailTerm.TermItemId;
                model.TailTermId = this.TailTermId;
                model.ApproveOpinion = txtApproveOpinion.Text;
                model.ApproveTime = DateTime.Parse(lblApproveTime.Text);
                model.ApproveUser = hidApproveUserId.Text;
                //0:处理记录1:审核记录
                model.ApproveType = 1;
                //0:退回1:通过
                model.ApproveState = 1;
                model.AddUser = this.CurrUser.UserId;
                model.AddTime = DateTime.Now;
                Funs.DB.TestRun_InspectTermApproveRecords.InsertOnSubmit(model);
                Funs.DB.SubmitChanges();
                ShowNotify("审核成功!", MessageBoxIcon.Success);
                PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
            }
        }
        /// 
        /// 关闭
        /// 
        protected void WindowAtt_Close(object sender, WindowCloseEventArgs e)
        {
        }
    }
}