using Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BLL
{
    public class SubPackLaborTeamService
    {
        /// 
        /// 分包商名称 下拉框绑定
        /// 
        public static void DropSelectUnitWork(FineUIPro.DropDownList dropName, string projectid, bool isShowPlease)
        {
            Model.SGGLDB db = Funs.DB;
            var unitWorkList = (from x in db.Base_Unit
                                join y in db.Project_ProjectUnit on x.UnitId equals y.UnitId
                                where y.UnitType == "2" && y.ProjectId == projectid
                                select new
                                {
                                    UnitName = x.UnitName,
                                    UnitId = x.UnitId,
                                }).ToList();
            dropName.DataValueField = "UnitId";
            dropName.DataTextField = "UnitName";
            dropName.DataSource = unitWorkList;
            dropName.DataBind();
            if (isShowPlease)
                BLL.Funs.FineUIPleaseSelect(dropName);
        }
        /// 
        /// 分包队伍 下拉框绑定
        /// 
        public static void DropSelectLaborTeam(FineUIPro.DropDownList dropName, string unitId, string BranchTeamListId, string projectId, bool isShowPlease)
        {
            Model.SGGLDB db = Funs.DB;
            var unitWorkList = (from x in db.SubPack_LaborTeam
                                where x.ProjectId == projectId && (x.BranchTeamListId == BranchTeamListId || BranchTeamListId == null) && (x.UnitId == unitId || unitId == null) && (x.State == null || x.State == "" || x.State == "0")
                                select new
                                {
                                    LaborTeamName = x.LaborTeamName,
                                    LaborTeamId = x.LaborTeamId,
                                }).ToList();
            dropName.DataValueField = "LaborTeamId";
            dropName.DataTextField = "LaborTeamName";
            dropName.DataSource = unitWorkList;
            dropName.DataBind();
            if (isShowPlease)
                BLL.Funs.FineUIPleaseSelect(dropName);
        }
        /// 
        /// 分包公司 下拉框绑定
        /// 
        public static void DropSelectLaborTeamUpdate(FineUIPro.DropDownList dropName, string unitId, string BranchTeamListId, string projectId, bool isShowPlease)
        {
            Model.SGGLDB db = Funs.DB;
            var unitWorkList = (from x in db.SubPack_LaborTeam
                                where x.ProjectId == projectId && (x.UnitId == unitId || unitId == null) && (x.BranchTeamListId == BranchTeamListId || BranchTeamListId == null)
                                select new
                                {
                                    LaborTeamName = x.LaborTeamName,
                                    LaborTeamId = x.LaborTeamId,
                                }).ToList();
            dropName.DataValueField = "LaborTeamId";
            dropName.DataTextField = "LaborTeamName";
            dropName.DataSource = unitWorkList;
            dropName.DataBind();
            if (isShowPlease)
                BLL.Funs.FineUIPleaseSelect(dropName);
        }
        /// 
        /// 新增
        /// 
        /// 劳务队伍信息
        public static void AddSubPackLaborTeam(Model.SubPack_LaborTeam subPackLaborTeam)
        {
            Model.SGGLDB db = Funs.DB;
            db.SubPack_LaborTeam.InsertOnSubmit(subPackLaborTeam);
            var v_subPackTeamList = db.View_SubPack_TeamList.FirstOrDefault(p => p.SubPackTeamListDetailID == subPackLaborTeam.BranchTeamListId);
            if (v_subPackTeamList != null)
            {
                var branchTeamList = db.Base_BranchTeamList.FirstOrDefault(p => p.CorporateIDCard == v_subPackTeamList.CorporateIDCard);
                if (branchTeamList != null)
                {
                    var baseLaborTeam = db.Base_LaborTeam.FirstOrDefault(p => p.CaptainIDCard == subPackLaborTeam.CaptainIDCard);
                    if (baseLaborTeam == null)
                    {
                        Model.Base_LaborTeam newBase_LaborTeam = new Model.Base_LaborTeam();
                        newBase_LaborTeam.LaborTeamId = SQLHelper.GetNewID(typeof(Model.SubPack_LaborTeam));
                        newBase_LaborTeam.UnitId = subPackLaborTeam.UnitId;
                        newBase_LaborTeam.BranchTeamListId = branchTeamList.BranchTeamListId;
                        newBase_LaborTeam.LaborTeamName = subPackLaborTeam.LaborTeamName;
                        newBase_LaborTeam.Remark = subPackLaborTeam.Remark;
                        newBase_LaborTeam.SortIndex = subPackLaborTeam.SortIndex;
                        newBase_LaborTeam.CaptainName = subPackLaborTeam.CaptainName;
                        newBase_LaborTeam.CaptainIDCard = subPackLaborTeam.CaptainIDCard;
                        db.Base_LaborTeam.InsertOnSubmit(newBase_LaborTeam);
                    }
                    //else
                    //{
                    //baseLaborTeam.BranchTeamListId = branchTeamList.BranchTeamListId;
                    //baseLaborTeam.UnitId = subPackLaborTeam.UnitId;
                    //baseLaborTeam.CaptainIDCard = subPackLaborTeam.CaptainIDCard;
                    //baseLaborTeam.CaptainName = subPackLaborTeam.CaptainName;
                    //baseLaborTeam.LaborTeamName = subPackLaborTeam.LaborTeamName;
                    //baseLaborTeam.Remark = subPackLaborTeam.Remark;
                    //}
                }
            }
            db.SubmitChanges();
        }
        /// 
        /// 批量新增
        /// 
        /// 劳务队伍信息列表
        public static void AddSubPackLaborTeam(List subPackLaborTeams)
        {
            Model.SGGLDB db = Funs.DB;
            db.SubPack_LaborTeam.InsertAllOnSubmit(subPackLaborTeams);
            foreach (var subPackLaborTeam in subPackLaborTeams)
            {
                var v_subPackTeamList = db.View_SubPack_TeamList.FirstOrDefault(p => p.SubPackTeamListDetailID == subPackLaborTeam.BranchTeamListId);
                if (v_subPackTeamList != null)
                {
                    var branchTeamList = db.Base_BranchTeamList.FirstOrDefault(p => p.CorporateIDCard == v_subPackTeamList.CorporateIDCard);
                    if (branchTeamList != null)
                    {
                        var baseLaborTeam = db.Base_LaborTeam.FirstOrDefault(p => p.CaptainIDCard == subPackLaborTeam.CaptainIDCard);
                        if (baseLaborTeam == null)
                        {
                            Model.Base_LaborTeam newBase_LaborTeam = new Model.Base_LaborTeam();
                            newBase_LaborTeam.LaborTeamId = SQLHelper.GetNewID(typeof(Model.SubPack_LaborTeam));
                            newBase_LaborTeam.UnitId = subPackLaborTeam.UnitId;
                            newBase_LaborTeam.BranchTeamListId = branchTeamList.BranchTeamListId;
                            newBase_LaborTeam.LaborTeamName = subPackLaborTeam.LaborTeamName;
                            newBase_LaborTeam.Remark = subPackLaborTeam.Remark;
                            newBase_LaborTeam.SortIndex = subPackLaborTeam.SortIndex;
                            newBase_LaborTeam.CaptainName = subPackLaborTeam.CaptainName;
                            newBase_LaborTeam.CaptainIDCard = subPackLaborTeam.CaptainIDCard;
                            db.Base_LaborTeam.InsertOnSubmit(newBase_LaborTeam);
                            
                        }
                        //else
                        //{
                        //    baseLaborTeam.BranchTeamListId = branchTeamList.BranchTeamListId;
                        //    baseLaborTeam.UnitId = subPackLaborTeam.UnitId;
                        //    baseLaborTeam.CaptainIDCard = subPackLaborTeam.CaptainIDCard;
                        //    baseLaborTeam.CaptainName = subPackLaborTeam.CaptainName;
                        //    baseLaborTeam.LaborTeamName = subPackLaborTeam.LaborTeamName;
                        //    baseLaborTeam.Remark = subPackLaborTeam.Remark;
                        //}
                    }
                }
            }
            db.SubmitChanges();
        }
        /// 
        /// 修改
        /// 
        /// 劳务队伍信息
        public static void UpdateSubPackLaborTeam(Model.SubPack_LaborTeam subPackLaborTeam)
        {
            Model.SGGLDB db = Funs.DB;
            var updateItem = db.SubPack_LaborTeam.FirstOrDefault(p => p.LaborTeamId == subPackLaborTeam.LaborTeamId);
            if (updateItem != null)
            {
                updateItem.ProjectId = subPackLaborTeam.ProjectId;
                updateItem.UnitId = subPackLaborTeam.UnitId;
                updateItem.BranchTeamListId = subPackLaborTeam.BranchTeamListId;
                updateItem.LaborTeamName = subPackLaborTeam.LaborTeamName;
                updateItem.Remark = subPackLaborTeam.Remark;
                updateItem.SortIndex = subPackLaborTeam.SortIndex;
                updateItem.CaptainName = subPackLaborTeam.CaptainName;
                updateItem.CaptainIDCard = subPackLaborTeam.CaptainIDCard;
                var v_subPackTeamList = db.View_SubPack_TeamList.FirstOrDefault(p => p.SubPackTeamListDetailID == subPackLaborTeam.BranchTeamListId);
                if (v_subPackTeamList != null)
                {
                    var branchTeamList = db.Base_BranchTeamList.FirstOrDefault(p => p.CorporateIDCard == v_subPackTeamList.CorporateIDCard);
                    if (branchTeamList != null)
                    {
                        var baseLaborTeam = db.Base_LaborTeam.FirstOrDefault(p => p.CaptainIDCard == subPackLaborTeam.CaptainIDCard);
                        if (baseLaborTeam == null)
                        {
                            Model.Base_LaborTeam newBase_LaborTeam = new Model.Base_LaborTeam();
                            newBase_LaborTeam.LaborTeamId = SQLHelper.GetNewID(typeof(Model.SubPack_LaborTeam));
                            newBase_LaborTeam.UnitId = subPackLaborTeam.UnitId;
                            newBase_LaborTeam.BranchTeamListId = branchTeamList.BranchTeamListId;
                            newBase_LaborTeam.LaborTeamName = subPackLaborTeam.LaborTeamName;
                            newBase_LaborTeam.Remark = subPackLaborTeam.Remark;
                            newBase_LaborTeam.SortIndex = subPackLaborTeam.SortIndex;
                            newBase_LaborTeam.CaptainName = subPackLaborTeam.CaptainName;
                            newBase_LaborTeam.CaptainIDCard = subPackLaborTeam.CaptainIDCard;
                            db.Base_LaborTeam.InsertOnSubmit(newBase_LaborTeam);
                            
                        }
                        //else
                        //{
                        //    baseLaborTeam.BranchTeamListId = branchTeamList.BranchTeamListId;
                        //    baseLaborTeam.UnitId = subPackLaborTeam.UnitId;
                        //    baseLaborTeam.CaptainIDCard = subPackLaborTeam.CaptainIDCard;
                        //    baseLaborTeam.CaptainName = subPackLaborTeam.CaptainName;
                        //    baseLaborTeam.LaborTeamName = subPackLaborTeam.LaborTeamName;
                        //    baseLaborTeam.Remark = subPackLaborTeam.Remark;
                        //}
                    }
                }
                db.SubmitChanges();
            }
        }
        /// 
        /// 删除
        /// 
        /// 主表主键
        public static void DeleteSubPackLaborTeam(string laborTeamId)
        {
            Model.SGGLDB db = Funs.DB;
            var deleteItem = db.SubPack_LaborTeam.FirstOrDefault(p => p.LaborTeamId == laborTeamId);
            if (deleteItem != null)
            {
                string captainIDCard = deleteItem.CaptainIDCard;
                //删除主表
                db.SubPack_LaborTeam.DeleteOnSubmit(deleteItem);
                db.SubmitChanges();
                //删除黑名单
                var backItems = db.SubPack_Blacklist.Where(p => p.BlackForeignKey == laborTeamId && p.BlackType == Const.SubPackBlackLaborTeam && p.IDCard == captainIDCard);
                if (backItems.Count() > 0)
                {
                    db.SubPack_Blacklist.DeleteAllOnSubmit(backItems);
                    db.SubmitChanges();
                }
                //这个队伍再所有项目删除了,那么将删除公司级的队伍
                if (db.SubPack_LaborTeam.Where(p => p.CaptainIDCard == captainIDCard).Count() <= 0) {
                    var deleteBaseItem = db.Base_LaborTeam.Where(p => p.CaptainIDCard == captainIDCard);
                    if (deleteBaseItem.Count() > 0) {
                        db.Base_LaborTeam.DeleteAllOnSubmit(deleteBaseItem);
                        db.SubmitChanges();
                    }
                }
            }
        }
    }
}