using System.Collections.Generic;
using System.Linq;
namespace BLL
{
    public static class MillionsMonthlyReportItemService
    {
        /// 
        /// 百万工时安全统计月报表明细表
        /// 
        /// 百万工时安全统计月报表明细表Id
        /// 百万工时安全统计月报表明细表
        public static Model.Information_MillionsMonthlyReportItem GetMillionsMonthlyReportItemByMillionsMonthlyReportItemId(string MillionsMonthlyReportItemId)
        {
            return Funs.DB.Information_MillionsMonthlyReportItem.FirstOrDefault(e => e.MillionsMonthlyReportItemId == MillionsMonthlyReportItemId);
        }
        /// 
        /// 百万工时安全统计月报表明细表
        /// 
        /// 百万工时安全统计月报表明细表Id
        /// 百万工时安全统计月报表明细表
        public static Model.Information_MillionsMonthlyReportItem GetMillionsMonthlyReportItemByMillionsMonthlyReportIdAndTypeId(string MillionsMonthlyReportId)
        {
            return Funs.DB.Information_MillionsMonthlyReportItem.FirstOrDefault(e => e.MillionsMonthlyReportId == MillionsMonthlyReportId);
        }
        /// 
        /// 根据主表Id判断是否存在明细记录
        /// 
        /// 百万工时安全统计月报表表Id
        /// 是否存在明细记录
        public static bool IsExitItems(string MillionsMonthlyReportId)
        {
            return (from x in Funs.DB.Information_MillionsMonthlyReportItem where x.MillionsMonthlyReportId == MillionsMonthlyReportId select x).Count() > 0;
        }
        /// 
        /// 根据主表Id获取明细记录集合
        /// 
        /// 百万工时安全统计月报表明细表Id
        /// 明细记录集合
        public static List GetItems(string MillionsMonthlyReportId)
        {
            return (from x in Funs.DB.Information_MillionsMonthlyReportItem
                    where x.MillionsMonthlyReportId == MillionsMonthlyReportId
                    orderby x.SortIndex
                    select x).ToList();
        }
        /// 
        /// 根据主表Id获取明细记录集合
        /// 
        /// 百万工时安全统计月报表明细表Id
        /// 明细记录集合
        public static List GetYearSumItems(string unitId, int? year, int? month)
        {
            return (from x in Funs.DB.Information_MillionsMonthlyReportItem
                    join y in Funs.DB.Information_MillionsMonthlyReport
                    on x.MillionsMonthlyReportId equals y.MillionsMonthlyReportId
                    where y.UnitId == unitId && y.Year == year && y.Month <= month
                    && x.Affiliation == "本月合计"
                    select x).Distinct().ToList();
        }
        /// 
        /// 根据主表Id获取明细记录集合
        /// 
        /// 百万工时安全统计月报表明细表Id
        /// 明细记录集合
        public static List GetAllUnitYearSumItems(int year, int month)
        {
            return (from x in Funs.DB.Information_MillionsMonthlyReportItem
                    join y in Funs.DB.Information_MillionsMonthlyReport
                    on x.MillionsMonthlyReportId equals y.MillionsMonthlyReportId
                    where y.Year == year && y.Month <= month && x.Affiliation == "本月合计"
                    select x).Distinct().ToList();
        }
        /// 
        /// 根据主表Id获取明细记录集合(不包含本月合计行)
        /// 
        /// 百万工时安全统计月报表明细表Id
        /// 明细记录集合
        public static List GetItemsNoSum(string MillionsMonthlyReportId)
        {
            return (from x in Funs.DB.Information_MillionsMonthlyReportItem
                    where x.MillionsMonthlyReportId == MillionsMonthlyReportId
                    && (x.Affiliation != "本月合计" || x.Affiliation == null)
                    orderby x.SortIndex
                    select x).ToList();
        }
        /// 
        /// 增加百万工时安全统计月报表明细表
        /// 
        /// 百万工时安全统计月报表明细表实体
        public static void AddMillionsMonthlyReportItem(Model.Information_MillionsMonthlyReportItem MillionsMonthlyReportItem)
        {
            Model.Information_MillionsMonthlyReportItem newMillionsMonthlyReportItem = new Model.Information_MillionsMonthlyReportItem
            {
                MillionsMonthlyReportItemId = MillionsMonthlyReportItem.MillionsMonthlyReportItemId,
                MillionsMonthlyReportId = MillionsMonthlyReportItem.MillionsMonthlyReportId,
                SortIndex = MillionsMonthlyReportItem.SortIndex,
                Affiliation = MillionsMonthlyReportItem.Affiliation,
                Name = MillionsMonthlyReportItem.Name,
                PostPersonNum = MillionsMonthlyReportItem.PostPersonNum,
                SnapPersonNum = MillionsMonthlyReportItem.SnapPersonNum,
                ContractorNum = MillionsMonthlyReportItem.ContractorNum,
                SumPersonNum = MillionsMonthlyReportItem.SumPersonNum,
                TotalWorkNum = MillionsMonthlyReportItem.TotalWorkNum,
                SeriousInjuriesNum = MillionsMonthlyReportItem.SeriousInjuriesNum,
                SeriousInjuriesPersonNum = MillionsMonthlyReportItem.SeriousInjuriesPersonNum,
                SeriousInjuriesLossHour = MillionsMonthlyReportItem.SeriousInjuriesLossHour,
                MinorAccidentNum = MillionsMonthlyReportItem.MinorAccidentNum,
                MinorAccidentPersonNum = MillionsMonthlyReportItem.MinorAccidentPersonNum,
                MinorAccidentLossHour = MillionsMonthlyReportItem.MinorAccidentLossHour,
                OtherAccidentNum = MillionsMonthlyReportItem.OtherAccidentNum,
                OtherAccidentPersonNum = MillionsMonthlyReportItem.OtherAccidentPersonNum,
                OtherAccidentLossHour = MillionsMonthlyReportItem.OtherAccidentLossHour,
                RestrictedWorkPersonNum = MillionsMonthlyReportItem.RestrictedWorkPersonNum,
                RestrictedWorkLossHour = MillionsMonthlyReportItem.RestrictedWorkLossHour,
                MedicalTreatmentPersonNum = MillionsMonthlyReportItem.MedicalTreatmentPersonNum,
                MedicalTreatmentLossHour = MillionsMonthlyReportItem.MedicalTreatmentLossHour,
                FireNum = MillionsMonthlyReportItem.FireNum,
                ExplosionNum = MillionsMonthlyReportItem.ExplosionNum,
                TrafficNum = MillionsMonthlyReportItem.TrafficNum,
                EquipmentNum = MillionsMonthlyReportItem.EquipmentNum,
                QualityNum = MillionsMonthlyReportItem.QualityNum,
                OtherNum = MillionsMonthlyReportItem.OtherNum,
                FirstAidDressingsNum = MillionsMonthlyReportItem.FirstAidDressingsNum,
                AttemptedEventNum = MillionsMonthlyReportItem.AttemptedEventNum,
                LossDayNum = MillionsMonthlyReportItem.LossDayNum
            };
            Funs.DB.Information_MillionsMonthlyReportItem.InsertOnSubmit(newMillionsMonthlyReportItem);
            Funs.DB.SubmitChanges();
        }
        /// 
        /// 修改百万工时安全统计月报表明细表
        /// 
        /// 百万工时安全统计月报表明细表实体
        public static void UpdateMillionsMonthlyReportItem(Model.Information_MillionsMonthlyReportItem MillionsMonthlyReportItem)
        {
            Model.Information_MillionsMonthlyReportItem newMillionsMonthlyReportItem = Funs.DB.Information_MillionsMonthlyReportItem.FirstOrDefault(e => e.MillionsMonthlyReportItemId == MillionsMonthlyReportItem.MillionsMonthlyReportItemId);
            newMillionsMonthlyReportItem.SortIndex = MillionsMonthlyReportItem.SortIndex;
            newMillionsMonthlyReportItem.Affiliation = MillionsMonthlyReportItem.Affiliation;
            newMillionsMonthlyReportItem.Name = MillionsMonthlyReportItem.Name;
            newMillionsMonthlyReportItem.PostPersonNum = MillionsMonthlyReportItem.PostPersonNum;
            newMillionsMonthlyReportItem.SnapPersonNum = MillionsMonthlyReportItem.SnapPersonNum;
            newMillionsMonthlyReportItem.ContractorNum = MillionsMonthlyReportItem.ContractorNum;
            newMillionsMonthlyReportItem.SumPersonNum = MillionsMonthlyReportItem.SumPersonNum;
            newMillionsMonthlyReportItem.TotalWorkNum = MillionsMonthlyReportItem.TotalWorkNum;
            newMillionsMonthlyReportItem.SeriousInjuriesNum = MillionsMonthlyReportItem.SeriousInjuriesNum;
            newMillionsMonthlyReportItem.SeriousInjuriesPersonNum = MillionsMonthlyReportItem.SeriousInjuriesPersonNum;
            newMillionsMonthlyReportItem.SeriousInjuriesLossHour = MillionsMonthlyReportItem.SeriousInjuriesLossHour;
            newMillionsMonthlyReportItem.MinorAccidentNum = MillionsMonthlyReportItem.MinorAccidentNum;
            newMillionsMonthlyReportItem.MinorAccidentPersonNum = MillionsMonthlyReportItem.MinorAccidentPersonNum;
            newMillionsMonthlyReportItem.MinorAccidentLossHour = MillionsMonthlyReportItem.MinorAccidentLossHour;
            newMillionsMonthlyReportItem.OtherAccidentNum = MillionsMonthlyReportItem.OtherAccidentNum;
            newMillionsMonthlyReportItem.OtherAccidentPersonNum = MillionsMonthlyReportItem.OtherAccidentPersonNum;
            newMillionsMonthlyReportItem.OtherAccidentLossHour = MillionsMonthlyReportItem.OtherAccidentLossHour;
            newMillionsMonthlyReportItem.RestrictedWorkPersonNum = MillionsMonthlyReportItem.RestrictedWorkPersonNum;
            newMillionsMonthlyReportItem.RestrictedWorkLossHour = MillionsMonthlyReportItem.RestrictedWorkLossHour;
            newMillionsMonthlyReportItem.MedicalTreatmentPersonNum = MillionsMonthlyReportItem.MedicalTreatmentPersonNum;
            newMillionsMonthlyReportItem.MedicalTreatmentLossHour = MillionsMonthlyReportItem.MedicalTreatmentLossHour;
            newMillionsMonthlyReportItem.FireNum = MillionsMonthlyReportItem.FireNum;
            newMillionsMonthlyReportItem.ExplosionNum = MillionsMonthlyReportItem.ExplosionNum;
            newMillionsMonthlyReportItem.TrafficNum = MillionsMonthlyReportItem.TrafficNum;
            newMillionsMonthlyReportItem.EquipmentNum = MillionsMonthlyReportItem.EquipmentNum;
            newMillionsMonthlyReportItem.QualityNum = MillionsMonthlyReportItem.QualityNum;
            newMillionsMonthlyReportItem.OtherNum = MillionsMonthlyReportItem.OtherNum;
            newMillionsMonthlyReportItem.FirstAidDressingsNum = MillionsMonthlyReportItem.FirstAidDressingsNum;
            newMillionsMonthlyReportItem.AttemptedEventNum = MillionsMonthlyReportItem.AttemptedEventNum;
            newMillionsMonthlyReportItem.LossDayNum = MillionsMonthlyReportItem.LossDayNum;
            Funs.DB.SubmitChanges();
        }
        /// 
        /// 根据Id删除所有数据
        /// 
        /// 
        public static void DeleteMillionsMonthlyReportItemByMillionsMonthlyReportId(string MillionsMonthlyReportId)
        {
            var q = from x in Funs.DB.Information_MillionsMonthlyReportItem where x.MillionsMonthlyReportId == MillionsMonthlyReportId select x;
            if (q != null)
            {
                Funs.DB.Information_MillionsMonthlyReportItem.DeleteAllOnSubmit(q);
                Funs.DB.SubmitChanges();
            }
        }
    }
}