using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BLL
{
    public class CostControlParentDetailService
    {
        /// 
        /// 根据Id获取一个费控项父级明细信息
        /// 
        /// 费控项父级明细Id
        public static Model.WBS_CostControlParentDetail GetCostControlParentDetailByCostControlParentDetailId(string costControlParentDetailId)
        {
            return Funs.DB.WBS_CostControlParentDetail.FirstOrDefault(e => e.CostControlParentDetailId == costControlParentDetailId);
        }
        /// 
        /// 根据ParentId判断是否存在费控项父级明细信息
        /// 
        /// costControlParentId
        public static bool IsExitCostControlParentDetailByParentId(string parentId)
        {
            return (from x in Funs.DB.WBS_CostControlParentDetail where x.ParentId == parentId select x).Count() > 0;
        }
        /// 
        /// 根据costControlParentId和年及月获取对应费控项父级明细信息
        /// 
        /// 对应wbsId
        /// 对应标志
        /// 年
        /// 月
        public static Model.WBS_CostControlParentDetail GetCostControlParentDetailByParentIdAndMonths(string parentId, DateTime months)
        {
            return (from x in Funs.DB.WBS_CostControlParentDetail where x.ParentId == parentId && x.Months == months select x).FirstOrDefault();
        }
        /// 
        /// 根据costControlParentId和年及月获取对应费控项父级明细视图信息
        /// 
        /// 对应wbsId
        /// 对应标志
        /// 年
        /// 月
        public static Model.View_WBS_CostControlParentDetail GetCostControlParentDetailViewByParentIdAndMonths(string parentId, DateTime months)
        {
            return (from x in Funs.DB.View_WBS_CostControlParentDetail where x.ParentId == parentId && x.Months == months select x).FirstOrDefault();
        }
        public static Model.WBS_CostControlParentDetail GetCostControlParentDetailByParentId(string parentId)
        {
            return (from x in Funs.DB.WBS_CostControlParentDetail where x.ParentId == parentId select x).FirstOrDefault();
        }
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        public static bool IsExitWBS_CostControlParentDetailByParentIdOrMonth(string parentId, DateTime months)
        {
            bool result = false;
            var q = Funs.DB.WBS_CostControlParentDetail.FirstOrDefault(e => e.ParentId == parentId && e.Months == months);
            if (q != null)
            {
                result = true;
            }
            return result;
        }
        /// 
        /// 根据CostControlParentId月获取所有月份的对应费控项父级明细信息集合
        /// 
        /// costControlParentId
        public static List GetTotalCostControlParentDetailsByParentId(string parentId)
        {
            return (from x in Funs.DB.WBS_CostControlParentDetail where x.ParentId == parentId orderby x.Months select x).ToList();
        }
        /// 
        /// 增加费控项父级明细
        /// 
        /// 费控项父级明细
        public static void AddCostControlParentDetail(Model.WBS_CostControlParentDetail costControlParentDetail)
        {
            Model.SGGLDB db = Funs.DB;
            Model.WBS_CostControlParentDetail newWBS_CostControlParentDetail = new Model.WBS_CostControlParentDetail();
            newWBS_CostControlParentDetail.CostControlParentDetailId = costControlParentDetail.CostControlParentDetailId;
            newWBS_CostControlParentDetail.ParentId = costControlParentDetail.ParentId;
            newWBS_CostControlParentDetail.Months = costControlParentDetail.Months;
            newWBS_CostControlParentDetail.ThisPlanValue = costControlParentDetail.ThisPlanValue;
            newWBS_CostControlParentDetail.ThisRealCost = costControlParentDetail.ThisRealCost;
            newWBS_CostControlParentDetail.ThisPlanCost = costControlParentDetail.ThisPlanCost;
            db.WBS_CostControlParentDetail.InsertOnSubmit(newWBS_CostControlParentDetail);
            db.SubmitChanges();
        }
        /// 
        /// 修改费控项父级明细
        /// 
        /// 费控项父级明细
        public static void UpdateCostControlParentDetail(Model.WBS_CostControlParentDetail costControlParentDetail)
        {
            Model.SGGLDB db = Funs.DB;
            Model.WBS_CostControlParentDetail newWBS_CostControlParentDetail = db.WBS_CostControlParentDetail.First(e => e.CostControlParentDetailId == costControlParentDetail.CostControlParentDetailId);
            newWBS_CostControlParentDetail.ThisPlanValue = costControlParentDetail.ThisPlanValue;
            newWBS_CostControlParentDetail.ThisRealCost = costControlParentDetail.ThisRealCost;
            newWBS_CostControlParentDetail.ThisPlanCost = costControlParentDetail.ThisPlanCost;
            db.SubmitChanges();
        }
        /// 
        /// 根据Id删除费控项父级明细信息
        /// 
        /// 
        public static void DeleteWBS_CostControlParentDetail(string costControlParentDetailId)
        {
            Model.SGGLDB db = Funs.DB;
            Model.WBS_CostControlParentDetail ins = db.WBS_CostControlParentDetail.First(e => e.CostControlParentDetailId == costControlParentDetailId);
            db.WBS_CostControlParentDetail.DeleteOnSubmit(ins);
            db.SubmitChanges();
        }
        /// 
        /// 根据costControlParentId删除费控项父级明细信息
        /// 
        /// 
        public static void DeleteWBS_CostControlParentDetailByCostControlParentId(string parentId)
        {
            Model.SGGLDB db = Funs.DB;
            var details = from x in db.WBS_CostControlParentDetail where x.ParentId == parentId select x;
            if (details.Count() > 0)
            {
                db.WBS_CostControlParentDetail.DeleteAllOnSubmit(details);
                db.SubmitChanges();
            }
        }
    }
}