using BLL;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.UI.WebControls;
namespace FineUIPro.Web.HSSE.SitePerson
{
    public partial class DayReportDetailEdit : PageBase
    {
        #region 定义项
        /// 
        /// 工作月报明细主键
        /// 
        public string DayReportDetailId
        {
            get
            {
                return (string)ViewState["DayReportDetailId"];
            }
            set
            {
                ViewState["DayReportDetailId"] = value;
            }
        }
        #endregion
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                btnClose.OnClientClick = ActiveWindow.GetHideReference();
                this.DayReportDetailId = Request.Params["dayReportDetailId"];
                this.txtWorkTime.Focus();
                if (!string.IsNullOrEmpty(Request.Params["type"]))
                {
                    this.btnSave.Hidden = true;
                    this.txtWorkTime.Readonly = true;
                    this.Grid1.AllowCellEditing = false;
                }
                var dayReportDetail = BLL.SitePerson_DayReportDetailService.GetDayReportDetailByDayReportDetailId(this.DayReportDetailId);
                if (dayReportDetail != null)
                {
                    var unit = BLL.UnitService.GetUnitByUnitId(dayReportDetail.UnitId);
                    if (unit != null)
                    {
                        this.lbStaffData.Text = unit.UnitName + "人员情况";
                    }
                    this.txtStaffData.Text = dayReportDetail.StaffData;
                    this.txtWorkTime.Text = dayReportDetail.WorkTime.ToString();
                    var viewDayReportUnitDetail = from x in Funs.DB.View_SitePerson_DayReportUnitDetail where x.DayReportDetailId == dayReportDetail.DayReportDetailId orderby x.WorkPostCode select x;
                    if (viewDayReportUnitDetail.Count() > 0)
                    {
                        this.Grid1.DataSource = viewDayReportUnitDetail;
                        this.Grid1.DataBind();
                    }
                }
            }
        }
        /// 
        /// 保存按钮事件
        /// 
        /// 
        /// 
        protected void btnSave_Click(object sender, EventArgs e)
        {
            //Grid1.CommitChanges();
            var dayReportDetail = BLL.SitePerson_DayReportDetailService.GetDayReportDetailByDayReportDetailId(this.DayReportDetailId);
            int glAllPerson = 0, hsseAllPerson = 0, zyAllPerson = 0;
            if (dayReportDetail != null)
            {
                dayReportDetail.WorkTime = Funs.GetNewDecimalOrZero(this.txtWorkTime.Text.Trim());
                int totalRealPersonNum = 0;
                decimal totalPersonWorkTime = 0;
                List dayReportUnitDetails = (from x in Funs.DB.SitePerson_DayReportUnitDetail where x.DayReportDetailId == this.DayReportDetailId select x).ToList();
                JArray mergedData = Grid1.GetMergedData();
                foreach (JObject mergedRow in mergedData)
                {
                    string status = mergedRow.Value("status");
                    JObject values = mergedRow.Value("values");
                    Model.SitePerson_DayReportUnitDetail dayReportUnitDetail = dayReportUnitDetails.FirstOrDefault(x => x.DayReportUnitDetailId == values.Value("DayReportUnitDetailId").ToString());
                    if (dayReportUnitDetail != null)
                    {
                        string postType = values.Value("WorkPostName");
                        string ishsse = values.Value("CheckPersonNum");
                        dayReportUnitDetail.RealPersonNum = Funs.GetNewIntOrZero(values.Value("RealPersonNum").ToString());
                        dayReportUnitDetail.PersonWorkTime = Funs.GetNewDecimalOrZero(values.Value("PersonWorkTime").ToString()); ;
                        dayReportUnitDetail.Remark = values.Value("Remark").ToString();
                        BLL.SitePerson_DayReportUnitDetailService.UpdateDayReportUnitDetail(dayReportUnitDetail);
                        totalPersonWorkTime += dayReportUnitDetail.PersonWorkTime ?? 0;
                        totalRealPersonNum += dayReportUnitDetail.RealPersonNum ?? 0;
                        if (ishsse == "1")     ///安全专职人员集合
                        {
                            hsseAllPerson += dayReportUnitDetail.RealPersonNum.Value;
                        }
                        else
                        {
                            if (postType == Const.PostType_1)    //管理岗位
                            {
                                glAllPerson += dayReportUnitDetail.RealPersonNum.Value;
                            }
                            if (postType == Const.PostType_2 || postType == Const.PostType_3)    //特种作业人员和一般作业岗位
                            {
                                zyAllPerson += dayReportUnitDetail.RealPersonNum.Value;
                            }
                        }
                    }
                }
                dayReportDetail.RealPersonNum = totalRealPersonNum;
                dayReportDetail.PersonWorkTime = totalPersonWorkTime;
                string staffData = string.Empty;
                var unit = (from x in Funs.DB.Project_ProjectUnit
                            where x.ProjectId == this.CurrUser.LoginProjectId && x.UnitId == dayReportDetail.UnitId
                            select x).FirstOrDefault();
                if (unit != null)
                {
                    if (unit.UnitType == "1")
                    {
                        staffData += "总人数:" + (glAllPerson + hsseAllPerson + zyAllPerson).ToString() + ",管理人员总数" + glAllPerson.ToString() + "人,专职安全人员共" + hsseAllPerson.ToString() + " 人。";
                    }
                    else
                    {
                        staffData += "总人数:" + (glAllPerson + hsseAllPerson + zyAllPerson).ToString() + ",管理人员总数" + glAllPerson.ToString() + "人,持证专职安全人员共" + hsseAllPerson.ToString() + " 人,施工单位作业人员总数" + zyAllPerson.ToString() + "人。";
                    }
                }
                dayReportDetail.StaffData = staffData;
                BLL.SitePerson_DayReportDetailService.UpdateReportDetail(dayReportDetail);
            }
            PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
        }
        /// 
        /// 
        /// 
        /// 
        /// 
        protected void txtWorkTime_TextChanged(object sender, EventArgs e)
        {
            decimal time = Funs.GetNewDecimalOrZero(this.txtWorkTime.Text.Trim());
            List viwList = new List();
            var viewDayReportUnitDetail = from x in Funs.DB.View_SitePerson_DayReportUnitDetail where x.DayReportDetailId == this.DayReportDetailId orderby x.WorkPostCode select x;
            JArray mergedData = Grid1.GetMergedData();
            foreach (JObject mergedRow in mergedData)
            {
                JObject values = mergedRow.Value("values");
                var item = viewDayReportUnitDetail.FirstOrDefault(x => x.DayReportUnitDetailId == values.Value("DayReportUnitDetailId").ToString());
                if (item != null)
                {
                    item.RealPersonNum = Funs.GetNewIntOrZero(values.Value("RealPersonNum").ToString());
                    item.PersonWorkTime = item.RealPersonNum * time;
                    item.Remark = values.Value("Remark").ToString();
                    viwList.Add(item);
                }
            }
            this.Grid1.DataSource = viwList;
            this.Grid1.DataBind();
        }
    }
}