using System;
using System.Collections.Generic;
using System.Linq;

namespace BLL
{
    /// <summary>
    /// 部门
    /// </summary>
    public static class DepartService
    {
        /// <summary>
        /// 根据主键获取部门信息
        /// </summary>
        /// <param name="departId"></param>
        /// <returns></returns>
        public static Model.Base_Depart GetDepartById(string departId)
        {
            return Funs.DB.Base_Depart.FirstOrDefault(e => e.DepartId == departId);
        }


        public static List<Model.Base_Depart> GetDepartListBySupCheckItem(string supCheckItem)
        {
            return (from x in Funs.DB.Base_Depart where x.SupCheckItem == supCheckItem orderby x.DepartName select x).ToList();
        }

        /// <summary>
        /// 根据主键获取部门名称
        /// </summary>
        /// <param name="departId"></param>
        /// <returns></returns>
        public static string GetDepartNameById(string departId)
        {
            return Funs.DB.Base_Depart.FirstOrDefault(e => e.DepartId == departId).DepartName;
        }

        /// <summary>
        /// 获取部门列表
        /// </summary>
        /// <returns></returns>
        public static List<Model.Base_Depart> GetDepartList()
        {
            return (from x in Funs.DB.Base_Depart orderby x.DepartCode select x).ToList();
        }

        /// <summary>
        /// 获取CTE部门列表
        /// </summary>
        /// <returns></returns>
        public static List<Model.Base_Depart> GetDepartManMonthHourList()
        {
            return (from x in Funs.DB.Base_Depart where x.DepartName.Contains("CTE") orderby x.DepartCode select x).ToList();
        }

        /// <summary>
        /// 添加部门
        /// </summary>
        /// <param name="depart"></param>
        public static void AddDepart(Model.Base_Depart depart)
        {
            Model.Base_Depart newDepart = new Model.Base_Depart();
            newDepart.DepartId = depart.DepartId;
            newDepart.DepartCode = depart.DepartCode;
            newDepart.DepartName = depart.DepartName;
            newDepart.Remark = depart.Remark;
            newDepart.SupCheckItem = depart.SupCheckItem;
            newDepart.DepartLeader = depart.DepartLeader;
            Funs.DB.Base_Depart.InsertOnSubmit(newDepart);
            Funs.DB.SubmitChanges();
        }

        /// <summary>
        /// 修改部门
        /// </summary>
        /// <param name="depart"></param>
        public static void UpdateDepart(Model.Base_Depart depart)
        {
            Model.Base_Depart newDepart = Funs.DB.Base_Depart.FirstOrDefault(e => e.DepartId == depart.DepartId);
            if (newDepart != null)
            {
                newDepart.DepartCode = depart.DepartCode;
                newDepart.DepartName = depart.DepartName;
                newDepart.Remark = depart.Remark;
                newDepart.SupCheckItem = depart.SupCheckItem;
                newDepart.DepartLeader = depart.DepartLeader;
                Funs.DB.SubmitChanges();
            }
        }

        /// <summary>
        /// 根据主键删除部门信息
        /// </summary>
        /// <param name="departId"></param>
        public static void DeleteDepartById(string departId)
        {
            Model.Base_Depart depart = Funs.DB.Base_Depart.FirstOrDefault(e => e.DepartId == departId);
            if (depart != null)
            {
                Funs.DB.Base_Depart.DeleteOnSubmit(depart);
                Funs.DB.SubmitChanges();
            }
        }

        /// <summary>
        /// 根据部门名称获取部门信息
        /// </summary>
        /// <param name="departName"></param>
        /// <returns></returns>
        public static Model.Base_Depart GetDepartByName(string departName)
        {
            return Funs.DB.Base_Depart.FirstOrDefault(e => e.DepartName == departName);
        }

        /// <summary>
        /// 验证是否存在相同的部门编号
        /// </summary>
        /// <param name="departCode"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        public static bool IsExitDepartCode(string departCode, string id)
        {
            var q = Funs.DB.Base_Depart.FirstOrDefault(x => x.DepartCode == departCode && x.DepartId != id);
            if (q != null)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        /// <summary>
        /// 判断是否存在相同的部门名称
        /// </summary>
        /// <param name="departName"></param>
        /// <param name="id"></param>
        /// <returns></returns>
        public static bool IsExitDepartName(string departName, string id)
        {
            var q = Funs.DB.Base_Depart.FirstOrDefault(x => x.DepartName == departName && x.DepartId != id);
            if (q != null)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        /// <summary>
        /// 获取部门下拉框
        /// </summary>
        /// <param name="dropName"></param>
        /// <param name="isShowPlease"></param>
        public static void InitDepartDropDownList(FineUIPro.DropDownList dropName, bool isShowPlease)
        {
            dropName.DataValueField = "DepartId";
            dropName.DataTextField = "DepartName";
            dropName.DataSource = BLL.DepartService.GetDepartList();
            dropName.DataBind();
            if (isShowPlease)
            {
                Funs.FineUIPleaseSelect(dropName);
            }
        }

        /// <summary>
        /// 显示CTE部门项
        /// </summary>
        /// <param name="dropName"></param>
        /// <param name="isShowPlease"></param>
        public static void InitCTEDepartDropDownList(FineUIPro.DropDownList dropName, bool isShowPlease)
        {
            dropName.DataValueField = "DepartId";
            dropName.DataTextField = "DepartName";
            dropName.DataSource = (from x in Funs.DB.Base_Depart where x.DepartName.Contains("CTE") orderby x.DepartName select x).ToList();
            dropName.DataBind();
            if (isShowPlease)
            {
                Funs.FineUIPleaseSelect(dropName);
            }
        }

        public static void InitSupDepartDropDownList(FineUIPro.DropDownList dropName, bool isShowPlease)
        {
            dropName.DataValueField = "DepartId";
            dropName.DataTextField = "DepartName";
            dropName.DataSource = (from x in Funs.DB.Base_Depart where x.SupCheckItem == "0" orderby x.DepartName select x).ToList();
            dropName.DataBind();
            if (isShowPlease)
            {
                Funs.FineUIPleaseSelect(dropName);
            }
        }
    }
}