using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BLL
{
    public class CostControlDetailHistoryService
    {
        /// 
        /// 根据Id获取一个费控项明细历史记录信息
        /// 
        /// 费控项明细历史记录Id
        public static Model.WBS_CostControlDetailHistory GetCostControlDetailHistoryByCostControlDetailHistoryId(string costControlDetailHistoryId)
        {
            return Funs.DB.WBS_CostControlDetailHistory.FirstOrDefault(e => e.CostControlDetailHistoryId == costControlDetailHistoryId);
        }
        /// 
        /// 根据CostControlId判断是否存在费控项明细历史记录信息
        /// 
        /// costControlId
        public static bool IsExitCostControlDetailHistoryByCostControlId(string costControlId)
        {
            return (from x in Funs.DB.WBS_CostControlDetailHistory where x.CostControlId == costControlId select x).Count() > 0;
        }
        /// 
        /// 根据Id获取对应费控项明细历史记录信息
        /// 
        /// 对应wbsId
        public static List GetCostControlDetailHistorysByCostControlId(string costControlId)
        {
            return (from x in Funs.DB.WBS_CostControlDetailHistory where x.CostControlId == costControlId orderby x.VersionNum, x.Months select x).ToList();
        }
        /// 
        /// 根据costControlId和年及月获取对应费控项明细历史记录信息
        /// 
        /// 对应wbsId
        /// 对应标志
        /// 年
        /// 月
        public static Model.WBS_CostControlDetailHistory GetCostControlDetailHistoryByCostControlIdAndMonths(string costControlId, DateTime months)
        {
            return (from x in Funs.DB.WBS_CostControlDetailHistory where x.CostControlId == costControlId && x.Months == months select x).FirstOrDefault();
        }
        public static Model.WBS_CostControlDetailHistory GetWBS_CostControlDetailHistoryByCostControlId(string costControlId)
        {
            return (from x in Funs.DB.WBS_CostControlDetailHistory where x.CostControlId == costControlId select x).FirstOrDefault();
        }
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        public static bool IsExitWBS_CostControlDetailHistoryByCostControlIdOrMonth(string costControlId, DateTime months)
        {
            bool result = false;
            var q = Funs.DB.WBS_CostControlDetailHistory.FirstOrDefault(e => e.CostControlId == costControlId && e.Months == months);
            if (q != null)
            {
                result = true;
            }
            return result;
        }
        /// 
        /// 根据年及月获取之前月份的对应费控项明细历史记录信息集合(含当月)
        /// 
        /// 年
        /// 月
        public static List GetTotalWBS_CostControlDetailHistorysByYearMonth2(string costControlId, DateTime months)
        {
            return (from x in Funs.DB.WBS_CostControlDetailHistory where x.CostControlId == costControlId && x.Months <= months select x).ToList();
        }
        /// 
        /// 根据CostControlId月获取当前最大版本
        /// 
        /// costControlId
        public static int GetMaxVersionNumByCostControlId(string costControlId)
        {
            int i = 0;
            var q = (from x in Funs.DB.WBS_CostControlDetailHistory where x.CostControlId == costControlId orderby x.VersionNum descending select x.VersionNum ?? 0).ToList();
            if (q.Count > 0)
            {
                i = q[0];
            }
            return i;
        }
        /// 
        /// 增加费控项明细历史记录
        /// 
        /// 费控项明细历史记录
        public static void AddCostControlDetailHistory(Model.WBS_CostControlDetailHistory costControlDetailHistory)
        {
            Model.SGGLDB db = Funs.DB;
            Model.WBS_CostControlDetailHistory newWBS_CostControlDetailHistory = new Model.WBS_CostControlDetailHistory();
            newWBS_CostControlDetailHistory.CostControlDetailHistoryId = costControlDetailHistory.CostControlDetailHistoryId;
            newWBS_CostControlDetailHistory.CostControlId = costControlDetailHistory.CostControlId;
            newWBS_CostControlDetailHistory.Months = costControlDetailHistory.Months;
            newWBS_CostControlDetailHistory.PlanNum = costControlDetailHistory.PlanNum;
            newWBS_CostControlDetailHistory.VersionNum = costControlDetailHistory.VersionNum;
            db.WBS_CostControlDetailHistory.InsertOnSubmit(newWBS_CostControlDetailHistory);
            db.SubmitChanges();
        }
        /// 
        /// 修改费控项明细历史记录
        /// 
        /// 费控项明细历史记录
        public static void UpdateCostControlDetailHistory(Model.WBS_CostControlDetailHistory costControlDetailHistory)
        {
            Model.SGGLDB db = Funs.DB;
            Model.WBS_CostControlDetailHistory newWBS_CostControlDetailHistory = db.WBS_CostControlDetailHistory.First(e => e.CostControlDetailHistoryId == costControlDetailHistory.CostControlDetailHistoryId);
            newWBS_CostControlDetailHistory.PlanNum = costControlDetailHistory.PlanNum;
            db.SubmitChanges();
        }
        /// 
        /// 根据Id删除费控项明细历史记录信息
        /// 
        /// 
        public static void DeleteCostControlDetailHistory(string costControlDetailHistoryId)
        {
            Model.SGGLDB db = Funs.DB;
            Model.WBS_CostControlDetailHistory ins = db.WBS_CostControlDetailHistory.First(e => e.CostControlDetailHistoryId == costControlDetailHistoryId);
            db.WBS_CostControlDetailHistory.DeleteOnSubmit(ins);
            db.SubmitChanges();
        }
        /// 
        /// 根据costControlId删除费控项明细历史记录信息
        /// 
        /// 
        public static void DeleteCostControlDetailHistoryByCostControlId(string costControlId)
        {
            Model.SGGLDB db = Funs.DB;
            var details = from x in db.WBS_CostControlDetailHistory where x.CostControlId == costControlId select x;
            if (details.Count() > 0)
            {
                db.WBS_CostControlDetailHistory.DeleteAllOnSubmit(details);
                db.SubmitChanges();
            }
        }
    }
}