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

namespace BLL
{
    public static class WBSRectificationMeasureSetService
    {
        /// <summary>
        ///获取纠偏措施设置信息
        /// </summary>
        /// <returns></returns>
        public static Model.WBSRectificationMeasureSet GetWBSRectificationMeasureSetByWBSRectificationMeasureSetId(string wBSRectificationMeasureSetId)
        {
            return Funs.DB.WBSRectificationMeasureSet.FirstOrDefault(e => e.WBSRectificationMeasureSetId == wBSRectificationMeasureSetId);
        }

        /// <summary>
        ///获取纠偏措施设置信息
        /// </summary>
        /// <returns></returns>
        public static Model.WBSRectificationMeasureSet GetWBSRectificationMeasureSetByDateAndToWbs(string toWbs, DateTime date, string rectificationMeasureType)
        {
            return Funs.DB.WBSRectificationMeasureSet.FirstOrDefault(e => e.ToWbs == toWbs && e.CompileDate.Value.Year == date.Year && e.CompileDate.Value.Month == date.Month && e.RectificationMeasureType == rectificationMeasureType);
        }

        /// <summary>
        /// 根据编制人和月份获取当月未落实纠偏措施设置信息集合
        /// </summary>
        /// <returns></returns>
        public static List<Model.WBSRectificationMeasureSet> GetWBSRectificationMeasuresByCompileManAndDate(string compileMan, DateTime date)
        {
            return (from x in Funs.DB.WBSRectificationMeasureSet where x.CompileMan == compileMan && x.CompileDate.Value.Year == date.Year && x.CompileDate.Value.Month == date.Month && (x.IsComplete == false || x.IsComplete == null) select x).ToList();
        }

        /// <summary>
        /// 增加纠偏措施设置信息
        /// </summary>
        /// <returns></returns>
        public static void AddWBSRectificationMeasureSet(Model.WBSRectificationMeasureSet wBSRectificationMeasureSet)
        {
            Model.WBSRectificationMeasureSet newWBSRectificationMeasureSet = new Model.WBSRectificationMeasureSet();
            newWBSRectificationMeasureSet.WBSRectificationMeasureSetId = wBSRectificationMeasureSet.WBSRectificationMeasureSetId;
            newWBSRectificationMeasureSet.ProjectId = wBSRectificationMeasureSet.ProjectId;
            newWBSRectificationMeasureSet.ToWbs = wBSRectificationMeasureSet.ToWbs;
            newWBSRectificationMeasureSet.RectificationMeasureIds = wBSRectificationMeasureSet.RectificationMeasureIds;
            newWBSRectificationMeasureSet.RectificationMeasureType = wBSRectificationMeasureSet.RectificationMeasureType;
            newWBSRectificationMeasureSet.RemindDay = wBSRectificationMeasureSet.RemindDay;
            newWBSRectificationMeasureSet.CompileMan = wBSRectificationMeasureSet.CompileMan;
            newWBSRectificationMeasureSet.CompileDate = wBSRectificationMeasureSet.CompileDate;
            newWBSRectificationMeasureSet.IsComplete = wBSRectificationMeasureSet.IsComplete;

            Funs.DB.WBSRectificationMeasureSet.InsertOnSubmit(newWBSRectificationMeasureSet);
            Funs.DB.SubmitChanges();
        }

        /// <summary>
        ///修改纠偏措施设置信息 
        /// </summary>
        /// <param name="wBSRectificationMeasureSet"></param>
        public static void UpdateWBSRectificationMeasureSet(Model.WBSRectificationMeasureSet wBSRectificationMeasureSet)
        {
            Model.WBSRectificationMeasureSet newWBSRectificationMeasureSet = Funs.DB.WBSRectificationMeasureSet.FirstOrDefault(e => e.WBSRectificationMeasureSetId == wBSRectificationMeasureSet.WBSRectificationMeasureSetId);
            if (newWBSRectificationMeasureSet != null)
            {
                newWBSRectificationMeasureSet.IsComplete = wBSRectificationMeasureSet.IsComplete;
                newWBSRectificationMeasureSet.HandleDate = wBSRectificationMeasureSet.HandleDate;

                Funs.DB.SubmitChanges();
            }
        }

        /// <summary>
        /// 根据纠偏措施设置Id删除一个纠偏措施设置信息
        /// </summary>
        /// <param name="wBSRectificationMeasureSetId"></param>
        public static void DeleteWBSRectificationMeasureSet(string wBSRectificationMeasureSetId)
        {
            Model.WBSRectificationMeasureSet wBSRectificationMeasureSet = Funs.DB.WBSRectificationMeasureSet.FirstOrDefault(e => e.WBSRectificationMeasureSetId == wBSRectificationMeasureSetId);
            if (wBSRectificationMeasureSet != null)
            {
                Funs.DB.WBSRectificationMeasureSet.DeleteOnSubmit(wBSRectificationMeasureSet);
                Funs.DB.SubmitChanges();
            }
        }
    }
}