using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BLL
{
    /// 
    /// 班组
    /// 
    public static class TeamGroupService
    {
        public static Model.SGGLDB db = Funs.DB;
        /// 
        /// 根据主键获取班组信息
        /// 
        /// 
        /// 
        public static Model.ProjectData_TeamGroup GetTeamGroupById(string teamGroupId)
        {
            return Funs.DB.ProjectData_TeamGroup.FirstOrDefault(e => e.TeamGroupId == teamGroupId);
        }
        public static Model.ProjectData_TeamGroup getTeamGroupByTeamGroupName(string projectId, string unitId, string name)
        {
            return Funs.DB.ProjectData_TeamGroup.FirstOrDefault(x => x.ProjectId == projectId && x.UnitId == unitId && x.TeamGroupName == name);
        }
        /// 
        /// 添加班组信息
        /// 
        /// 
        public static void AddTeamGroup(Model.ProjectData_TeamGroup teamGroup)
        {
            Model.SGGLDB db = Funs.DB;
            Model.ProjectData_TeamGroup newTeamGroup = new Model.ProjectData_TeamGroup
            {
                TeamGroupId = teamGroup.TeamGroupId,
                ProjectId = teamGroup.ProjectId,
                UnitId = teamGroup.UnitId,
                TeamGroupCode = teamGroup.TeamGroupCode,
                TeamGroupName = teamGroup.TeamGroupName,
                Remark = teamGroup.Remark,
                TeamTypeId = teamGroup.TeamTypeId,
                ThirdTeamCode = teamGroup.ThirdTeamCode,
                EntryTime = teamGroup.EntryTime,
                ExitTime = teamGroup.ExitTime,
                GroupLeaderId = teamGroup.GroupLeaderId,
                RealNamePushTime= null,
            };
            db.ProjectData_TeamGroup.InsertOnSubmit(newTeamGroup);
            db.SubmitChanges();
        }
        /// 
        /// 修改班组信息
        /// 
        /// 
        public static void UpdateTeamGroup(Model.ProjectData_TeamGroup teamGroup)
        {
            Model.SGGLDB db = Funs.DB;
            Model.ProjectData_TeamGroup newTeamGroup = db.ProjectData_TeamGroup.FirstOrDefault(e => e.TeamGroupId == teamGroup.TeamGroupId);
            if (newTeamGroup != null)
            {
                newTeamGroup.ProjectId = teamGroup.ProjectId;
                newTeamGroup.UnitId = teamGroup.UnitId;
                newTeamGroup.TeamGroupCode = teamGroup.TeamGroupCode;
                newTeamGroup.TeamGroupName = teamGroup.TeamGroupName;
                newTeamGroup.GroupLeaderId = teamGroup.GroupLeaderId;
                newTeamGroup.TeamTypeId = teamGroup.TeamTypeId;
                newTeamGroup.ThirdTeamCode = teamGroup.ThirdTeamCode;
                newTeamGroup.EntryTime = teamGroup.EntryTime;
                newTeamGroup.ExitTime = teamGroup.ExitTime;
                newTeamGroup.Remark = teamGroup.Remark;
                newTeamGroup.RealNamePushTime = null;
                db.SubmitChanges();
            }
        }
        /// 
        /// 根据主键删除班组信息
        /// 
        /// 
        public static void DeleteTeamGroupById(string teamGroupId)
        {
            try
            {
                using (var db = new Model.SGGLDB(Funs.ConnString))
                {
                    Model.ProjectData_TeamGroup teamGroup = db.ProjectData_TeamGroup.FirstOrDefault(e => e.TeamGroupId == teamGroupId);
                    if (teamGroup != null)
                    {
                        db.ProjectData_TeamGroup.DeleteOnSubmit(teamGroup);
                        db.SubmitChanges();
                    }
                }
            }catch(System.Exception ex)
            {
            }
               
           
        }
        /// 
        /// 获取班组人数
        /// 
        /// 
        /// 
        public static int getTeamGroupPersonNum(string teamGroupId)
        {
            Model.SGGLDB db = Funs.DB;
            return (from x in Funs.DB.SitePerson_Person
                    where x.TeamGroupId == teamGroupId && x.IsUsed == true && (!x.OutTime.HasValue || x.OutTime > DateTime.Now)
                    select x).Count();
        }
        /// 
        /// 根据项目Id获取班组下拉选择项
        /// 
        /// 
        /// 
        public static List GetTeamGroupList(string projectId)
        {
            return (from x in Funs.DB.ProjectData_TeamGroup where x.ProjectId == projectId orderby x.TeamGroupCode select x).ToList();
        }
        /// 
        /// 根据项目ID、单位ID获取班组下拉选择项
        /// 
        /// 
        /// 
        /// 
        public static object GetTeamGroupListByUnitId(string projectId, string unitId)
        {
            return (from x in Funs.DB.ProjectData_TeamGroup
                    where x.ProjectId == projectId && x.UnitId == unitId
                    orderby x.TeamGroupCode select x).ToList();
        }
        /// 
        /// 根据项目ID获取班组下拉选择项
        /// 
        /// 
        /// 
        /// 
        public static object GetTeamGroupListByProjectId(string projectId)
        {
            return (from x in Funs.DB.ProjectData_TeamGroup
                    where x.ProjectId == projectId
                    orderby x.TeamGroupCode
                    select x).ToList();
        }
        #region 表下拉框
        /// 
        ///  表下拉框
        /// 
        /// 下拉框名字
        /// 是否显示请选择
        public static void InitTeamGroupProjectUnitDropDownList(FineUIPro.DropDownList dropName, string projectId, string unitId, bool isShowPlease)
        {
            dropName.DataValueField = "TeamGroupId";
            dropName.DataTextField = "TeamGroupName";
            dropName.DataSource = GetTeamGroupListByUnitId(projectId, unitId);
            dropName.DataBind();
            if (isShowPlease)
            {
                Funs.FineUIPleaseSelect(dropName);
            }
        }
        #endregion
        #region 表下拉框
        /// 
        ///  表下拉框
        /// 
        /// 下拉框名字
        /// 是否显示请选择
        public static void InitTeamGroupProjectDropDownList(FineUIPro.DropDownList dropName, string projectId, bool isShowPlease)
        {
            dropName.DataValueField = "TeamGroupId";
            dropName.DataTextField = "TeamGroupName";
            dropName.DataSource = GetTeamGroupListByProjectId(projectId);
            dropName.DataBind();
            if (isShowPlease)
            {
                Funs.FineUIPleaseSelect(dropName);
            }
        }
        #endregion
        #region 表下拉框
        /// 
        ///  表下拉框
        /// 
        /// 下拉框名字
        /// 是否显示请选择
        public static void InitTeamGroupProjectUnitsDropDownList(FineUIPro.DropDownList dropName, string projectId, string unitId, bool isShowPlease)
        {
            List units = Funs.GetStrListByStr(unitId, ',');
            dropName.DataValueField = "TeamGroupId";
            dropName.DataTextField = "TeamGroupName";
            if (units.Count() > 0)
            {
                dropName.DataSource = (from x in Funs.DB.ProjectData_TeamGroup
                                       where x.ProjectId == projectId && units.Contains(x.UnitId)
                                       orderby x.TeamGroupCode
                                       select x).ToList();
            }
            else
            {
                dropName.DataSource = null;
            }
            dropName.DataBind();
            if (isShowPlease)
            {
                Funs.FineUIPleaseSelect(dropName);
            }
        }
        #endregion
        /// 
        /// 获取班组名称
        /// 
        /// 
        /// 
        public static string GetTeamGroupNameByTeamGroupId(string TeamGroupId)
        {
            string name = string.Empty;
            var TeamGroup = Funs.DB.ProjectData_TeamGroup.FirstOrDefault(x => x.TeamGroupId == TeamGroupId);
            if (TeamGroup != null)
            {
                name = TeamGroup.TeamGroupName;
            }
            return name;
        }
    }
}