using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BLL
{
    public class AccidentCaseService
    {
        public static Model.SGGLDB db = Funs.DB;
        /// 
        /// 根据主键获取事故伤害及预防
        /// 
        /// 
        /// 
        public static Model.EduTrain_AccidentCase GetAccidentCaseById(string accidentCaseId)
        {
            return Funs.DB.EduTrain_AccidentCase.FirstOrDefault(e => e.AccidentCaseId == accidentCaseId);
        }
        /// 
        /// 增加事故伤害及预防
        /// 
        /// 
        public static void AddAccidentCase(Model.EduTrain_AccidentCase accidentCase)
        {
            Model.SGGLDB db = Funs.DB;
            Model.EduTrain_AccidentCase newAccidentCase = new Model.EduTrain_AccidentCase
            {
                AccidentCaseId = accidentCase.AccidentCaseId,
                AccidentCaseCode = accidentCase.AccidentCaseCode,
                AccidentCaseName = accidentCase.AccidentCaseName,
                SupAccidentCaseId = accidentCase.SupAccidentCaseId,
                IsEndLever = accidentCase.IsEndLever
            };
            db.EduTrain_AccidentCase.InsertOnSubmit(newAccidentCase);
            db.SubmitChanges();
        }
        /// 
        /// 修改事故伤害及预防
        /// 
        /// 
        public static void UpdateAccidentCase(Model.EduTrain_AccidentCase accidentCase)
        {
            Model.SGGLDB db = Funs.DB;
            Model.EduTrain_AccidentCase newAccidentCase = db.EduTrain_AccidentCase.FirstOrDefault(e => e.AccidentCaseId == accidentCase.AccidentCaseId);
            if (newAccidentCase != null)
            {
                newAccidentCase.AccidentCaseCode = accidentCase.AccidentCaseCode;
                newAccidentCase.AccidentCaseName = accidentCase.AccidentCaseName;
                newAccidentCase.SupAccidentCaseId = accidentCase.SupAccidentCaseId;
                newAccidentCase.IsEndLever = accidentCase.IsEndLever;
                db.SubmitChanges();
            }
        }
        /// 
        /// 根据主键删除事故伤害及预防
        /// 
        /// 
        public static void DeleteAccidentCaseByAccidentCaseId(string accidentCaseId)
        {
            Model.SGGLDB db = Funs.DB;
            Model.EduTrain_AccidentCase accidentCase = db.EduTrain_AccidentCase.FirstOrDefault(e => e.AccidentCaseId == accidentCaseId);
            if (accidentCase != null)
            {
                BLL.AccidentCaseItemService.DeleteAccidentCaseItemsByAccidentCaseId(accidentCase.AccidentCaseId);
                db.EduTrain_AccidentCase.DeleteOnSubmit(accidentCase);
                db.SubmitChanges();
            }
        }
        /// 
        /// 是否可删除资源节点
        /// 
        /// 
        /// true-可以,false-不可以
        public static bool IsDeleteAccidentCase(string accidentCaseId)
        {
            bool isDelete = true;
            var accidentCase = BLL.AccidentCaseService.GetAccidentCaseById(accidentCaseId);
            if (accidentCase != null)
            {
                if (accidentCase.IsBuild == true)
                {
                    isDelete = false;
                }
                if (accidentCase.IsEndLever == true)
                {
                    var detailCout = Funs.DB.EduTrain_AccidentCaseItem.FirstOrDefault(x => x.AccidentCaseId == accidentCaseId);
                    if (detailCout != null)
                    {
                        isDelete = false;
                    }
                }
                else
                {
                    var supItemSetCount = BLL.AccidentCaseService.GetAccidentCaseBySupItem(accidentCaseId);
                    if (supItemSetCount.Count() > 0)
                    {
                        isDelete = false;
                    }
                }
            }
            return isDelete;
        }
        /// 
        /// 根据上级Id查询所有事故案例
        /// 
        /// 上级Id
        /// 事故案例的集合
        public static List GetAccidentCaseBySupItem(string supItem)
        {
            return (from x in Funs.DB.EduTrain_AccidentCase
                    where x.SupAccidentCaseId == supItem
                    orderby x.AccidentCaseCode
                    select x).ToList();
        }
    }
}