using System.Collections.Generic;
using System.Data.Linq;
using System.Linq;

namespace BLL
{
    /// <summary>
    /// eProject主表
    /// </summary>
    public static class EProjectService
    {
        /// <summary>
        /// 根据主键获取eProject信息
        /// </summary>
        /// <param name="eProjectId"></param>
        /// <returns></returns>
        public static Model.Editor_EProject GeteProjectById(string eProjectId)
        {
            return Funs.DB.Editor_EProject.FirstOrDefault(e => e.EProjectId == eProjectId);
        }

        /// <summary>
        /// 根据项目号获取项目信息
        /// </summary>
        /// <param name="job_NO"></param>
        /// <returns></returns>
        public static Model.Editor_EProject GeteProjectByJobNO(string job_NO)
        {
            return Funs.DB.Editor_EProject.FirstOrDefault(e => e.ProjectControl_JobNo == job_NO);
        }

        #region 计划工程师
        /// <summary>
        /// 计划工程师增加
        /// </summary>
        /// <param name="eProject"></param>
        public static void AddProjectControlEditor(Model.Editor_EProject eProject)
        {
            Model.EProjectDB db = Funs.DB;
            Model.Editor_EProject newEProject = new Model.Editor_EProject();
            newEProject.EProjectId = eProject.EProjectId;
            newEProject.ProjectControl_JobNo = eProject.ProjectControl_JobNo;
            newEProject.ProjectControl_JobType = eProject.ProjectControl_JobType;
            newEProject.ProjectControl_ProjectType = eProject.ProjectControl_ProjectType;
            newEProject.ProjectControl_JobStatus = eProject.ProjectControl_JobStatus;
            newEProject.ProjectControl_JobTitle = eProject.ProjectControl_JobTitle;
            newEProject.ProjectControl_BUCode = eProject.ProjectControl_BUCode;
            newEProject.ProjectControl_MOCFormNo = eProject.ProjectControl_MOCFormNo;
            newEProject.ProjectControl_NetworkNo = eProject.ProjectControl_NetworkNo;
            newEProject.ProjectControl_NotesLink = eProject.ProjectControl_NotesLink;
            newEProject.ProjectControl_OrginalBudget = eProject.ProjectControl_OrginalBudget;
            newEProject.ProjectControl_Account = eProject.ProjectControl_Account;
            newEProject.ProjectControl_PVIPrediction = eProject.ProjectControl_PVIPrediction;
            newEProject.ProjectControl_CostEffectvitity = eProject.ProjectControl_CostEffectvitity;
            newEProject.ProjectControl_LeadBy = eProject.ProjectControl_LeadBy;
            newEProject.ProjectControl_LeadByName = eProject.ProjectControl_LeadByName;
            newEProject.ProjectControl_ProjectManager = eProject.ProjectControl_ProjectManager;
            newEProject.ProjectControl_ConstManager = eProject.ProjectControl_ConstManager;
            newEProject.ProjectControl_EMManager = eProject.ProjectControl_EMManager;
            newEProject.ProjectControl_OperationRep = eProject.ProjectControl_OperationRep;

            newEProject.PM_General_Priority = eProject.PM_General_Priority;

            newEProject.ProjectControl_Remarks = eProject.ProjectControl_Remarks;
            newEProject.ProjectControl_ChangedBudget = eProject.ProjectControl_ChangedBudget;
            newEProject.ProjectControl_CommittedPRPO = eProject.ProjectControl_CommittedPRPO;
            newEProject.ProjectControl_CommittedSSRs = eProject.ProjectControl_CommittedSSRs;
            newEProject.ProjectControl_Actual = eProject.ProjectControl_Actual;
            newEProject.ProjectControl_MS_ResourcePlanReceived = eProject.ProjectControl_MS_ResourcePlanReceived;
            newEProject.ProjectControl_MS_SR = eProject.ProjectControl_MS_SR;
            newEProject.ProjectControl_MS_Approval = eProject.ProjectControl_MS_Approval;
            newEProject.ProjectControl_MS_MC = eProject.ProjectControl_MS_MC;
            newEProject.ProjectControl_MS_Close = eProject.ProjectControl_MS_Close;

            newEProject.PM_SC_ApprovedQty = eProject.PM_SC_ApprovedQty;
            newEProject.PM_SC_ApprovedCost = eProject.PM_SC_ApprovedCost;
            newEProject.PM_SC_PendingQty = eProject.PM_SC_PendingQty;
            newEProject.PM_SC_PendingCost = eProject.PM_SC_PendingCost;

            newEProject.ProjectControl_CI_Process = eProject.ProjectControl_CI_Process;
            newEProject.ProjectControl_CI_ProcessName = eProject.ProjectControl_CI_ProcessName;
            newEProject.ProjectControl_CI_Equipment = eProject.ProjectControl_CI_Equipment;
            newEProject.ProjectControl_CI_EquipmentName = eProject.ProjectControl_CI_EquipmentName;
            newEProject.ProjectControl_CI_Instrument = eProject.ProjectControl_CI_Instrument;
            newEProject.ProjectControl_CI_InstrumentName = eProject.ProjectControl_CI_InstrumentName;
            newEProject.ProjectControl_CI_Electrical = eProject.ProjectControl_CI_Electrical;
            newEProject.ProjectControl_CI_ElectricalName = eProject.ProjectControl_CI_ElectricalName;
            newEProject.ProjectControl_CI_Civil = eProject.ProjectControl_CI_Civil;
            newEProject.ProjectControl_CI_CivilName = eProject.ProjectControl_CI_CivilName;
            newEProject.ProjectControl_BC_CloseDate = eProject.ProjectControl_BC_CloseDate;
            newEProject.ProjectControl_LP_SchStart = eProject.ProjectControl_LP_SchStart;
            newEProject.ProjectControl_LP_SchEnd = eProject.ProjectControl_LP_SchEnd;
            newEProject.ProjectControl_LP_Progress = eProject.ProjectControl_LP_Progress;
            newEProject.ProjectControl_CC_SchStart = eProject.ProjectControl_CC_SchStart;
            newEProject.ProjectControl_CC_SchEnd = eProject.ProjectControl_CC_SchEnd;
            newEProject.ProjectControl_CC_Progress = eProject.ProjectControl_CC_Progress;
            newEProject.ProjectControl_CM_SchStart = eProject.ProjectControl_CM_SchStart;
            newEProject.ProjectControl_CM_SchEnd = eProject.ProjectControl_CM_SchEnd;
            newEProject.ProjectControl_CM_Progress = eProject.ProjectControl_CM_Progress;
            newEProject.ProjectControl_PC_CancelDate = eProject.ProjectControl_PC_CancelDate;
            newEProject.Job_Hold=eProject.Job_Hold;
            newEProject.ProjectControl_ProjectManagerId = eProject.ProjectControl_ProjectManagerId;
            newEProject.ProjectControl_ConstManagerId = eProject.ProjectControl_ConstManagerId;
            newEProject.ProjectControl_EMManagerId = eProject.ProjectControl_EMManagerId;
            newEProject.ProjectControl_OperationRepId = eProject.ProjectControl_OperationRepId;
            newEProject.PM_Study_StartDate = eProject.PM_Study_StartDate;
            newEProject.PM_Study_EndDate = eProject.PM_Study_EndDate;
            newEProject.ProjectControl_FilesLink = eProject.ProjectControl_FilesLink;
            newEProject.PM_LLEP_RevisedStart = eProject.PM_LLEP_RevisedStart;
            newEProject.PM_LLEP_RevisedEnd = eProject.PM_LLEP_RevisedEnd;
            newEProject.PM_LLEP_ActualProgress = eProject.PM_LLEP_ActualProgress;
            newEProject.CM_CC_RevisedStart = eProject.CM_CC_RevisedStart;
            newEProject.CM_CC_RevisedEnd = eProject.CM_CC_RevisedEnd;
            newEProject.CM_CC_AcutalProgress = eProject.CM_CC_AcutalProgress;
            newEProject.CM_CM_RevisedStart = eProject.CM_CM_RevisedStart;
            newEProject.CM_CM_RevisedEnd = eProject.CM_CM_RevisedEnd;
            newEProject.CM_CM_AcutalProgress = eProject.CM_CM_AcutalProgress;
            newEProject.PM_General_CostToComplete = eProject.PM_General_CostToComplete;
            newEProject.CAPEXPlanNo = eProject.CAPEXPlanNo;
            newEProject.IsNewCreate = eProject.IsNewCreate;
            newEProject.ProjectControl_Revised_MC_Date = eProject.ProjectControl_Revised_MC_Date;
            newEProject.StudyWo = eProject.StudyWo;
            newEProject.CreateDate = eProject.CreateDate;
            newEProject.CreatePerson = eProject.CreatePerson;

            db.Editor_EProject.InsertOnSubmit(newEProject);
            db.SubmitChanges();
        }

        /// <summary>
        /// 计划工程师修改
        /// </summary>
        /// <param name="eProject"></param>
        public static void UpdateProjectControlEditor(Model.Editor_EProject eProject)
        {
            Model.EProjectDB db = Funs.DB;
            Model.Editor_EProject newEProject = db.Editor_EProject.FirstOrDefault(e => e.EProjectId == eProject.EProjectId);
            if (newEProject != null)
            {
                newEProject.ProjectControl_JobNo = eProject.ProjectControl_JobNo;
                newEProject.ProjectControl_JobType = eProject.ProjectControl_JobType; 
                newEProject.ProjectControl_ProjectType = eProject.ProjectControl_ProjectType;
                newEProject.ProjectControl_JobStatus = eProject.ProjectControl_JobStatus;
                newEProject.ProjectControl_JobTitle = eProject.ProjectControl_JobTitle;
                newEProject.ProjectControl_BUCode = eProject.ProjectControl_BUCode;
                newEProject.ProjectControl_MOCFormNo = eProject.ProjectControl_MOCFormNo;
                newEProject.ProjectControl_NetworkNo = eProject.ProjectControl_NetworkNo;
                newEProject.ProjectControl_NotesLink = eProject.ProjectControl_NotesLink;
                newEProject.ProjectControl_OrginalBudget = eProject.ProjectControl_OrginalBudget;
                newEProject.ProjectControl_Account = eProject.ProjectControl_Account;
                newEProject.ProjectControl_PVIPrediction = eProject.ProjectControl_PVIPrediction;
                newEProject.ProjectControl_CostEffectvitity = eProject.ProjectControl_CostEffectvitity;
                newEProject.ProjectControl_LeadBy = eProject.ProjectControl_LeadBy;
                newEProject.ProjectControl_LeadByName = eProject.ProjectControl_LeadByName;
                newEProject.ProjectControl_ProjectManager = eProject.ProjectControl_ProjectManager;
                newEProject.ProjectControl_ConstManager = eProject.ProjectControl_ConstManager;
                newEProject.ProjectControl_EMManager = eProject.ProjectControl_EMManager;
                newEProject.ProjectControl_OperationRep = eProject.ProjectControl_OperationRep;

                newEProject.PM_General_Priority = eProject.PM_General_Priority;

                newEProject.ProjectControl_Remarks = eProject.ProjectControl_Remarks;
                newEProject.ProjectControl_ChangedBudget = eProject.ProjectControl_ChangedBudget;
                newEProject.ProjectControl_CommittedPRPO = eProject.ProjectControl_CommittedPRPO;
                newEProject.ProjectControl_CommittedSSRs = eProject.ProjectControl_CommittedSSRs;
                newEProject.ProjectControl_Actual = eProject.ProjectControl_Actual;
                newEProject.ProjectControl_MS_ResourcePlanReceived = eProject.ProjectControl_MS_ResourcePlanReceived;
                newEProject.ProjectControl_MS_SR = eProject.ProjectControl_MS_SR;
                newEProject.ProjectControl_MS_Approval = eProject.ProjectControl_MS_Approval;
                newEProject.ProjectControl_MS_MC = eProject.ProjectControl_MS_MC;
                newEProject.ProjectControl_MS_Close = eProject.ProjectControl_MS_Close;

                newEProject.PM_SC_ApprovedQty = eProject.PM_SC_ApprovedQty;
                newEProject.PM_SC_ApprovedCost = eProject.PM_SC_ApprovedCost;
                newEProject.PM_SC_PendingQty = eProject.PM_SC_PendingQty;
                newEProject.PM_SC_PendingCost = eProject.PM_SC_PendingCost;

                newEProject.ProjectControl_CI_Process = eProject.ProjectControl_CI_Process;
                newEProject.ProjectControl_CI_ProcessName = eProject.ProjectControl_CI_ProcessName;
                newEProject.ProjectControl_CI_Equipment = eProject.ProjectControl_CI_Equipment;
                newEProject.ProjectControl_CI_EquipmentName = eProject.ProjectControl_CI_EquipmentName;
                newEProject.ProjectControl_CI_Instrument = eProject.ProjectControl_CI_Instrument;
                newEProject.ProjectControl_CI_InstrumentName = eProject.ProjectControl_CI_InstrumentName;
                newEProject.ProjectControl_CI_Electrical = eProject.ProjectControl_CI_Electrical;
                newEProject.ProjectControl_CI_ElectricalName = eProject.ProjectControl_CI_ElectricalName;
                newEProject.ProjectControl_CI_Civil = eProject.ProjectControl_CI_Civil;
                newEProject.ProjectControl_CI_CivilName = eProject.ProjectControl_CI_CivilName;
                newEProject.ProjectControl_BC_CloseDate = eProject.ProjectControl_BC_CloseDate;
                newEProject.ProjectControl_LP_SchStart = eProject.ProjectControl_LP_SchStart;
                newEProject.ProjectControl_LP_SchEnd = eProject.ProjectControl_LP_SchEnd;
                newEProject.ProjectControl_LP_Progress = eProject.ProjectControl_LP_Progress;
                newEProject.ProjectControl_CC_SchStart = eProject.ProjectControl_CC_SchStart;
                newEProject.ProjectControl_CC_SchEnd = eProject.ProjectControl_CC_SchEnd;
                newEProject.ProjectControl_CC_Progress = eProject.ProjectControl_CC_Progress;
                newEProject.ProjectControl_CM_SchStart = eProject.ProjectControl_CM_SchStart;
                newEProject.ProjectControl_CM_SchEnd = eProject.ProjectControl_CM_SchEnd;
                newEProject.ProjectControl_CM_Progress = eProject.ProjectControl_CM_Progress;
                newEProject.ProjectControl_PC_CancelDate = eProject.ProjectControl_PC_CancelDate;
                newEProject.Job_Hold=eProject.Job_Hold;
                newEProject.ProjectControl_ProjectManagerId = eProject.ProjectControl_ProjectManagerId;
                newEProject.ProjectControl_ConstManagerId = eProject.ProjectControl_ConstManagerId;
                newEProject.ProjectControl_EMManagerId = eProject.ProjectControl_EMManagerId;
                newEProject.ProjectControl_OperationRepId = eProject.ProjectControl_OperationRepId;
                newEProject.PM_Study_StartDate = eProject.PM_Study_StartDate;
                newEProject.PM_Study_EndDate = eProject.PM_Study_EndDate;
                newEProject.ProjectControl_NetworkDate = eProject.ProjectControl_NetworkDate;
                newEProject.ProjectControl_FilesLink = eProject.ProjectControl_FilesLink;
                newEProject.PM_General_CostToComplete = eProject.PM_General_CostToComplete;
                newEProject.CAPEXPlanNo = eProject.CAPEXPlanNo;
                newEProject.ProjectControl_Revised_MC_Date = eProject.ProjectControl_Revised_MC_Date;
                newEProject.StudyWo = eProject.StudyWo;
                newEProject.CreateDate = eProject.CreateDate;
                newEProject.CreatePerson = eProject.CreatePerson;
                //if (eProject.ProjectControl_JobStatus != "Hold")
                //{
                //    newEProject.Job_Hold =null;
                //}

                try
                {
                    db.SubmitChanges(ConflictMode.ContinueOnConflict);
                }
                catch (ChangeConflictException ex)
                {
                    db.ChangeConflicts.ResolveAll(RefreshMode.KeepCurrentValues);  //保持当前的值
                    db.ChangeConflicts.ResolveAll(RefreshMode.OverwriteCurrentValues);//保持原来的更新,放弃了当前的值.
                    db.ChangeConflicts.ResolveAll(RefreshMode.KeepChanges);//保存原来的值 有冲突的话保存当前版本

                    // 注意:解决完冲突后还得 SubmitChanges() 一次,不然一样是没有更新到数据库的
                    db.SubmitChanges();
                }
            }
        }
        #endregion

        /// <summary>
        /// 更行
        /// </summary>
        /// <param name="roleName"></param>
        /// <param name="def"></param>
        public static void UpdateProject(Model.Editor_EProject ep, string param)
        {
            Model.Editor_EProject eproject = Funs.DB.Editor_EProject.FirstOrDefault(e => e.EProjectId == ep.EProjectId);

            if (param.Equals("CM"))
            {
                eproject.CM_CC_RevisedStart = ep.CM_CC_RevisedStart;
                eproject.CM_CC_RevisedEnd = ep.CM_CC_RevisedEnd;
                eproject.CM_CC_RevisedStartIsAct = ep.CM_CC_RevisedStartIsAct;
                eproject.CM_CC_RevisedEndIsAct = ep.CM_CC_RevisedEndIsAct;
                eproject.CM_CC_AcutalProgress = ep.CM_CC_AcutalProgress;
                eproject.CM_CM_RevisedStart = ep.CM_CM_RevisedStart;
                eproject.CM_CM_RevisedEnd = ep.CM_CM_RevisedEnd;
                eproject.CM_CM_RevisedStartIsAct = ep.CM_CM_RevisedStartIsAct;
                eproject.CM_CM_RevisedEndIsAct = ep.CM_CM_RevisedEndIsAct;
                eproject.CM_CM_AcutalProgress = ep.CM_CM_AcutalProgress;
                eproject.CM_Punch_CKilledDate = ep.CM_Punch_CKilledDate;
                eproject.CM_KickOffMetting = ep.CM_KickOffMetting;
                eproject.CM_MA_MC = ep.CM_MA_MC;
                eproject.CM_FC = ep.CM_FC;
                eproject.CM_Remarks_Construction = ep.CM_Remarks_Construction;
                eproject.CM_Remarks_Procurement = ep.CM_Remarks_Procurement;
                eproject.CM_Remarks_QualityHSE = ep.CM_Remarks_QualityHSE;
                eproject.ProjectControl_JobStatus = ep.ProjectControl_JobStatus;
                eproject.PM_General_CostToComplete = ep.PM_General_CostToComplete;
                eproject.CM_Date_of_Registration = ep.CM_Date_of_Registration;
            }
            else if (param.Equals("SQIB"))
            {
                eproject.SQIB_PressureVessel = ep.SQIB_PressureVessel;
                eproject.SQIB_PressurePiping = ep.SQIB_PressurePiping;
                eproject.SQIB_SQIB = ep.SQIB_SQIB;
            }
            else if (param.Equals("PER"))
            {
                eproject.Permit_PS_EnvAssessChecked = ep.Permit_PS_EnvAssessChecked;
                eproject.Permit_PS_EnvAssess = ep.Permit_PS_EnvAssess;
                eproject.Permit_PPA_EnvAssess = ep.Permit_PPA_EnvAssess;

                eproject.Permit_PS_EnergySavingChecked = ep.Permit_PS_EnergySavingChecked;
                eproject.Permit_PS_EnergySaving = ep.Permit_PS_EnergySaving;
                eproject.Permit_PPA_EnergySaving = ep.Permit_PPA_EnergySaving;

                eproject.Permit_PS_ProjectRegistrChecked = ep.Permit_PS_ProjectRegistrChecked;
                eproject.Permit_PS_ProjectRegistr = ep.Permit_PS_ProjectRegistr;
                eproject.Permit_PPA_ProjectRegistration = ep.Permit_PPA_ProjectRegistration;

                eproject.Permit_PS_PlanningPermitChecked = ep.Permit_PS_PlanningPermitChecked;
                eproject.Permit_PS_PlanningPermit = ep.Permit_PS_PlanningPermit;
                eproject.Permit_PPA_PlanningPermit = ep.Permit_PPA_PlanningPermit;

                eproject.Permit_PS_SafetyConReviewChecked = ep.Permit_PS_SafetyConReviewChecked;
                eproject.Permit_PS_SafetyConReview = ep.Permit_PS_SafetyConReview;
                eproject.Permit_PPA_SafetyConRev = ep.Permit_PPA_SafetyConRev;

                eproject.Permit_PS_SafetyDesginReviewChecked = ep.Permit_PS_SafetyDesginReviewChecked;
                eproject.Permit_PS_SafetyDesginReview = ep.Permit_PS_SafetyDesginReview;
                eproject.Permit_PPA_SafetyDesignRev = ep.Permit_PPA_SafetyDesignRev;

                eproject.Permit_PS_FFDesginReviewChecked = ep.Permit_PS_FFDesginReviewChecked;
                eproject.Permit_PS_FFDesginReview = ep.Permit_PS_FFDesginReview;
                eproject.Permit_PPA_FFDesignReview = ep.Permit_PPA_FFDesignReview;

                eproject.Permit_PS_ConstPermitChecked = ep.Permit_PS_ConstPermitChecked;
                eproject.Permit_PS_ConstPermit = ep.Permit_PS_ConstPermit;
                eproject.Permit_PA_ConstPermit = ep.Permit_PA_ConstPermit;

                eproject.Permit_PS_SafetyFinalAccChecked = ep.Permit_PS_SafetyFinalAccChecked;
                eproject.Permit_PS_SafetyFinalAcc = ep.Permit_PS_SafetyFinalAcc;
                eproject.Permit_PA_SafetyFinalACC = ep.Permit_PA_SafetyFinalACC;

                eproject.Permit_PS_FFFinalAccChecked = ep.Permit_PS_FFFinalAccChecked;
                eproject.Permit_PS_FFFinalAcc = ep.Permit_PS_FFFinalAcc;
                eproject.Permit_PA_FFFinalACC = ep.Permit_PA_FFFinalACC;

                eproject.Permit_PS_EnvFinalAccChecked = ep.Permit_PS_EnvFinalAccChecked;
                eproject.Permit_PS_EnvFinalAcc = ep.Permit_PS_EnvFinalAcc;
                eproject.Permit_PA_EnvFinalACC = ep.Permit_PA_EnvFinalACC;

                eproject.Permit_PS_ArchiveAccepChecked = ep.Permit_PS_ArchiveAccepChecked;
                eproject.Permit_PS_ArchiveAccep = ep.Permit_PS_ArchiveAccep;

                eproject.Permit_PS_3rdConstJianChecked = ep.Permit_PS_3rdConstJianChecked;
                eproject.Permit_PS_3rdConstJian = ep.Permit_PS_3rdConstJian;
            }
            else if (param.Equals("PM"))
            {
                eproject.PM_General_CDI = ep.PM_General_CDI;
                eproject.PM_General_CostToComplete = ep.PM_General_CostToComplete;
                //eproject.PM_General_Priority = ep.PM_General_Priority;
                eproject.PM_General_Category = ep.PM_General_Category;
                eproject.PM_LLEP_RevisedStart = ep.PM_LLEP_RevisedStart;
                eproject.PM_LLEP_RevisedEnd = ep.PM_LLEP_RevisedEnd;
                eproject.PM_LLEP_RevisedStartIsAct = ep.PM_LLEP_RevisedStartIsAct;
                eproject.PM_LLEP_RevisedEndIsAct = ep.PM_LLEP_RevisedEndIsAct;
                eproject.PM_LLEP_ActualProgress = ep.PM_LLEP_ActualProgress;
                //eproject.PM_SC_ApprovedQty = ep.PM_SC_ApprovedQty;
                //eproject.PM_SC_ApprovedCost = ep.PM_SC_ApprovedCost;
                //eproject.PM_SC_PendingQty = ep.PM_SC_PendingQty;
                //eproject.PM_SC_PendingCost = ep.PM_SC_PendingCost;
                eproject.PM_MA_JobReveive = ep.PM_MA_JobReveive;
                eproject.PM_MA_KickOffMeeting = ep.PM_MA_KickOffMeeting;
                eproject.PM_MA_SR = ep.PM_MA_SR;
                eproject.PM_MA_ProjectApproval = ep.PM_MA_ProjectApproval;
                eproject.PM_Planning_Approval = ep.PM_Planning_Approval;
                eproject.PM_Pre_Approval = ep.PM_Pre_Approval;

                eproject.PM_Remarks_Engineering = ep.PM_Remarks_Engineering;
                eproject.PM_Remarks_Procurement = ep.PM_Remarks_Procurement;
                eproject.PM_PP_PressurePiping = ep.PM_PP_PressurePiping;
                eproject.PM_PP_SQIB = ep.PM_PP_SQIB;
                eproject.PM_PP_PressureVessel = ep.PM_PP_PressureVessel;
                eproject.PM_Study_StartDate = ep.PM_Study_StartDate;
                eproject.PM_Study_EndDate = ep.PM_Study_EndDate;
                eproject.PM_PressureVesselChecked = ep.PM_PressureVesselChecked;
                eproject.PM_PressurePipingChecked = ep.PM_PressurePipingChecked;
                eproject.PM_SQIBChecked = ep.PM_SQIBChecked;
                eproject.OutSourceType = ep.OutSourceType;
                eproject.PM_Critical = ep.PM_Critical;
                eproject.PM_ReasonForCritical = ep.PM_ReasonForCritical;

                // job
                eproject.Job_PlanEHSReview_Files = ep.Job_PlanEHSReview_Files;
                eproject.Job_EHSReview_Meeting = ep.Job_EHSReview_Meeting;
                eproject.Job_Budget = ep.Job_Budget;
                eproject.Job_EHSReview_Files = ep.Job_EHSReview_Files;
                eproject.Job_Estimate_Worksheet = ep.Job_Estimate_Worksheet;
                //eproject.Job_Hold = ep.Job_Hold;  
                eproject.Job_Plan_IFC = ep.Job_Plan_IFC;
                eproject.Job_TecoAlarm_Study = ep.Job_TecoAlarm_Study;
                eproject.Job_Delaybyteam1 = ep.Job_Delaybyteam1;
                eproject.Job_Delaybyteam2 = ep.Job_Delaybyteam2;
                eproject.Job_Delaybyteam3 = ep.Job_Delaybyteam3;
                eproject.Job_Delaybypersonel1 = ep.Job_Delaybypersonel1;
                eproject.Job_Delaybypersonel2 = ep.Job_Delaybypersonel2;
                eproject.Job_Delaybypersonel3 = ep.Job_Delaybypersonel3;
                eproject.Job_Remark1 = ep.Job_Remark1;
                eproject.Job_Remark2 = ep.Job_Remark2;
                eproject.Job_Remark3 = ep.Job_Remark3;
            }

            eproject.ModifyDate = ep.ModifyDate;
            eproject.ModifyPerson = ep.ModifyPerson;

            Funs.DB.SubmitChanges();
        }

        /// <summary>
        /// 根据主键删除EProject
        /// </summary>
        /// <param name="eProjectId"></param>
        public static void DeleteEproejctById(string eProjectId)
        {
            Model.Editor_EProject eProject = Funs.DB.Editor_EProject.FirstOrDefault(e => e.EProjectId == eProjectId);
            if (eProject != null)
            {
                Funs.DB.Editor_EProject.DeleteOnSubmit(eProject);
                Funs.DB.SubmitChanges();
            }
        }

        /// <summary>
        /// 更改项目状态
        /// </summary>
        /// <param name="eProject"></param>
        public static void UpdateProjectJobStatus(Model.Editor_EProject eProject)
        {
            Model.Editor_EProject newEproject = Funs.DB.Editor_EProject.FirstOrDefault(e => e.EProjectId == eProject.EProjectId);
            if (newEproject != null)
            {
                newEproject.ProjectControl_ClosedDate = eProject.ProjectControl_ClosedDate;
                newEproject.ProjectControl_JobStatus = eProject.ProjectControl_JobStatus;
                if (eProject.ProjectControl_JobStatus != "Hold")
                {
                    newEproject.Job_Hold = null;
                }
                Funs.DB.SubmitChanges();
            }
        }

        /// <summary>
        /// 获取项目列表
        /// </summary>
        /// <returns></returns>
        public static List<Model.Editor_EProject> GetEProjectList()
        {
            return (from x in Funs.DB.Editor_EProject orderby x.ProjectControl_JobNo descending select x).ToList();
        }

        /// <summary>
        /// 根据项目ID和项目类型获取项目信息
        /// </summary>
        /// <param name="eProjectId"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        public static Model.Editor_EProject GetEprojectByIdAndType(string eProjectId, string type)
        {
            return Funs.DB.Editor_EProject.FirstOrDefault(e => e.EProjectId == eProjectId && e.ProjectControl_JobType == type);
        }

        /// <summary>
        /// 更改项目状态
        /// </summary>
        /// <param name="eProject"></param>
        public static void UpdateProjectJobTime(Model.Editor_EProject eProject)
        {
            Model.Editor_EProject newEproject = Funs.DB.Editor_EProject.FirstOrDefault(e => e.EProjectId == eProject.EProjectId);
            if (newEproject != null)
            {
                newEproject.PM_PP_PressureVessel = eProject.PM_PP_PressureVessel;
                Funs.DB.SubmitChanges();
            }
        }


        /// <summary>
        /// 根据项目类型获取项目信息
        /// </summary>
        /// <param name="jobtype"></param>
        /// <returns></returns>
        public static List<Model.Editor_EProject> GetEprojectByJobType(string jobtype)
        {
            return (from x in Funs.DB.Editor_EProject where x.ProjectControl_JobType == jobtype orderby x.ProjectControl_JobNo descending select x).ToList();
        }

        /// <summary>
        /// 根据项目类型获取项目号下拉项
        /// </summary>
        /// <param name="dropName"></param>
        /// <param name="jobType"></param>
        /// <param name="isShowPlease"></param>
        public static void InitEprojectJobNoDropDownList(FineUIPro.DropDownList dropName, bool isShowPlease)
        {
            dropName.DataValueField = "EProjectId";
            dropName.DataTextField = "ProjectControl_JobNo";
            dropName.DataSource = GetEProjectList();
            dropName.DataBind();
            if (isShowPlease)
            {
                Funs.FineUIPleaseSelect(dropName);
            }
        }

        /// <summary>
        /// 更新附件链接
        /// </summary>
        /// <param name="eproject"></param>
        public static void UpdateEprojectFileLink(Model.Editor_EProject eproject)
        {
            Model.Editor_EProject newEproject = Funs.DB.Editor_EProject.FirstOrDefault(e => e.ProjectControl_JobNo == eproject.ProjectControl_JobNo);
            if (newEproject != null)
            {
                newEproject.ProjectControl_FilesLink = eproject.ProjectControl_FilesLink;
                Funs.DB.SubmitChanges();
            }
        }

        /// <summary>
        /// 更新OrginalBudget
        /// </summary>
        /// <param name="ep"></param>
        public static void UpdateOrginalBudget(Model.Editor_EProject ep)
        {
            Model.Editor_EProject newEproject = Funs.DB.Editor_EProject.FirstOrDefault(e => e.EProjectId == ep.EProjectId);
            if (newEproject != null)
            {
                newEproject.ProjectControl_OrginalBudget = ep.ProjectControl_OrginalBudget;
                newEproject.ProjectControl_ChangedBudget = ep.ProjectControl_ChangedBudget;
                newEproject.ProjectControl_Actual = ep.ProjectControl_Actual;
                newEproject.ProjectControl_CommittedPRPO = ep.ProjectControl_CommittedPRPO;
                newEproject.ProjectControl_CommittedSSRs = ep.ProjectControl_CommittedSSRs;
                newEproject.PM_General_CostToComplete = ep.PM_General_CostToComplete;
                newEproject.ModifyDate = ep.ModifyDate;
                newEproject.ModifyPerson = ep.ModifyPerson;
                Funs.DB.SubmitChanges();
            }
        }

        /// <summary>
        /// 验证项目号是否存在
        /// </summary>
        /// <param name="jobNo"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        public static bool IsExitJobNoById(string jobNo, string id)
        {
            var q = Funs.DB.Editor_EProject.FirstOrDefault(x => x.ProjectControl_JobNo == jobNo && x.EProjectId != id);
            if (q == null)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        public static bool IsExitJobNo(string jobNo)
        {
            var q = Funs.DB.Editor_EProject.FirstOrDefault(x => x.ProjectControl_JobNo == jobNo);
            if (q == null)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
}