using System;
using System.Collections;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Linq;
using System.Data.Linq;
using System.Web.Security;
using System.Web.UI.WebControls;
using Model;
using BLL;
using System.Collections.Generic;
namespace BLL
{
    public class CnProfessionService
    {
        /// 
        /// 根据专业Id获取专业信息
        /// 
        /// 专业Id
        /// 
        public static Model.WBS_CnProfession GetCnProfessionByCnProfessionId(string cnProfessionId)
        {
            return Funs.DB.WBS_CnProfession.FirstOrDefault(e => e.CnProfessionId == cnProfessionId);
        }
        /// 
        /// 根据装置Id和专业编号获取专业Id
        /// 
        /// 专业Id
        /// 
        public static List GetCnProfessionIdsByInstallationIdAndOldId(string installationId, string oldId)
        {
            List cnProfessionIds = new List();
            Model.SGGLDB db = Funs.DB;
            var ins = db.Project_Installation.FirstOrDefault(x => x.InstallationId == installationId);
            var childInss = from x in db.Project_Installation where x.SuperInstallationId == installationId select x;
            if (childInss.Count() == 0)
            {
                var cn = db.WBS_CnProfession.FirstOrDefault(x => x.InstallationId == ins.InstallationId && x.OldId.ToString() == oldId);
                if (cn != null)
                {
                    cnProfessionIds.Add(cn.CnProfessionId);
                }
            }
            else
            {
                var childIns = from x in db.Project_Installation where x.SuperInstallationId == installationId select x;
                foreach (var childIn in childIns)
                {
                    cnProfessionIds.AddRange(GetCnProfessionIdsByInstallationIdAndOldId(childIn.InstallationId,oldId));
                }
            }
            return cnProfessionIds;
        }
        /// 
        /// 增加专业
        /// 
        /// 专业
        public static void AddCnProfession(Model.WBS_CnProfession cnProfession)
        {
            Model.SGGLDB db = Funs.DB;
            Model.WBS_CnProfession newCnP = new Model.WBS_CnProfession();
            newCnP.CnProfessionId = SQLHelper.GetNewID(typeof(Model.WBS_CnProfession));
            newCnP.CnProfessionName = cnProfession.CnProfessionName;
            newCnP.CnProfessionCode = cnProfession.CnProfessionCode;
            newCnP.InstallationId = cnProfession.InstallationId;
            newCnP.ProjectId = cnProfession.ProjectId;
            newCnP.StartDate = cnProfession.StartDate;
            newCnP.EndDate = cnProfession.EndDate;
            newCnP.Weights = cnProfession.Weights;
            newCnP.OldId = cnProfession.OldId;
            newCnP.UnitId = cnProfession.UnitId;
            db.WBS_CnProfession.InsertOnSubmit(newCnP);
            db.SubmitChanges();
        }
        /// 
        /// 修改专业
        /// 
        /// 专业
        public static void UpdateCnProfession(Model.WBS_CnProfession cnProfession)
        {
            Model.SGGLDB db = Funs.DB;
            Model.WBS_CnProfession newCnP = db.WBS_CnProfession.First(e => e.CnProfessionId == cnProfession.CnProfessionId);
            newCnP.CnProfessionName = cnProfession.CnProfessionName;
            newCnP.CnProfessionCode = cnProfession.CnProfessionCode;
            newCnP.StartDate = cnProfession.StartDate;
            newCnP.EndDate = cnProfession.EndDate;
            newCnP.Weights = cnProfession.Weights;
            newCnP.WeightsMoney = cnProfession.WeightsMoney;
            newCnP.IsWeightsApprove = cnProfession.IsWeightsApprove;
            newCnP.UnitId = cnProfession.UnitId;
            newCnP.IsSelected = cnProfession.IsSelected;
            newCnP.IsApprove = cnProfession.IsApprove;
            db.SubmitChanges();
        }
        /// 
        /// 根据Id删除专业信息
        /// 
        /// 
        public static void DeleteCnProfession(string cnProfessionId)
        {
            Model.SGGLDB db = Funs.DB;
            Model.WBS_CnProfession CnP = db.WBS_CnProfession.First(e => e.CnProfessionId == cnProfessionId);
            db.WBS_CnProfession.DeleteOnSubmit(CnP);
            db.SubmitChanges();
        }
        /// 
        /// 获取装置下所有专业
        /// 
        /// 
        public static List GetCnProfessionByInstallation(string ins)
        {
            var list = (from x in Funs.DB.WBS_CnProfession where x.InstallationId == ins orderby x.CnProfessionId select x).ToList();
            return list;
        }
        /// 
        /// 获取专业下拉选项
        /// 
        /// 
        public static List GetCnProfessionDropDownList()
        {
            var list = (from x in Funs.DB.WBS_CnProfessionInit orderby x.CnProfessionId select x).ToList();
            return list;
        }
        /// 
        /// 获取专业下拉选项(不含总图)
        /// 
        /// 
        public static List GetCnProfessionDropDownList2()
        {
            var list = (from x in Funs.DB.WBS_CnProfessionInit where x.CnProfessionId != 19 orderby x.CnProfessionId select x).ToList();
            return list;
        }
    }
}