namespace BLL
{
    using Model;
    using System.Collections.Generic;
    using System.Linq;

    public static class Project_WorkAreaService
    {
        /// <summary>
        ///获取作业区域信息
        /// </summary>
        /// <returns></returns>
        public static Model.Project_WorkArea GetProject_WorkAreaByWorkAreaId(string strWorkAreaId)
        {
            return Funs.DB.Project_WorkArea.FirstOrDefault(e => e.WorkAreaId == strWorkAreaId);
        }

        /// <summary>
        /// 增加作业区域信息
        /// </summary>
        /// <param name="setWorkArea"></param>
        public static void AddProject_WorkArea(Model.Project_WorkArea setWorkArea)
        {
            Model.HJGLDB db = Funs.DB;
            Model.Project_WorkArea newWorkArea = new Project_WorkArea
            {
                WorkAreaId = setWorkArea.WorkAreaId,
                ProjectId = setWorkArea.ProjectId,
                InstallationId = setWorkArea.InstallationId,
                WorkAreaCode = setWorkArea.WorkAreaCode,
                WorkAreaName=setWorkArea.WorkAreaName,
                UnitId = setWorkArea.UnitId,
                SupervisorUnitId = setWorkArea.SupervisorUnitId,
                Remark = setWorkArea.Remark,
            };

            db.Project_WorkArea.InsertOnSubmit(newWorkArea);
            db.SubmitChanges();
        }

        /// <summary>
        /// 修改作业区域信息 
        /// </summary>
        /// <param name="updateWorkArea"></param>
        public static void UpdateProject_WorkArea(Model.Project_WorkArea updateWorkArea)
        {
            Model.HJGLDB db = Funs.DB;
            Model.Project_WorkArea newWorkArea = db.Project_WorkArea.FirstOrDefault(e => e.WorkAreaId == updateWorkArea.WorkAreaId);
            if (newWorkArea != null)
            {
                newWorkArea.WorkAreaCode = updateWorkArea.WorkAreaCode;
                newWorkArea.WorkAreaName = updateWorkArea.WorkAreaName;
                newWorkArea.EnWorkAreaName = updateWorkArea.EnWorkAreaName;
                newWorkArea.InstallationId = updateWorkArea.InstallationId;
                newWorkArea.UnitId = updateWorkArea.UnitId;
                newWorkArea.SupervisorUnitId = updateWorkArea.SupervisorUnitId;
                newWorkArea.Remark = updateWorkArea.Remark;
                db.SubmitChanges();
            }
        }

        /// <summary>
        /// 根据区域Id删除一个作业区域信息
        /// </summary>
        /// <param name="strWorkAreaId">装置ID</param>
        public static void DeleteProject_WorkAreaByWorkAreaId(string strWorkAreaId)
        {
            Model.HJGLDB db = Funs.DB;
            Model.Project_WorkArea delWorkArea = db.Project_WorkArea.FirstOrDefault(e => e.WorkAreaId == strWorkAreaId);
            if (delWorkArea != null)
            {
                db.Project_WorkArea.DeleteOnSubmit(delWorkArea);
                db.SubmitChanges();
            }
        }

        /// <summary>
        /// 根据装置Id删除一个作业区域信息
        /// </summary>
        /// <param name="strProjectId">项目ID</param>
        public static void DeleteProject_WorkAreaByProjectId(string strInstallationId)
        {
            Model.HJGLDB db = Funs.DB;
            var delWorkAreas = from x in db.Project_WorkArea where x.InstallationId == strInstallationId select x;
            if (delWorkAreas.Count() > 0)
            {
                db.Project_WorkArea.DeleteAllOnSubmit(delWorkAreas);
                db.SubmitChanges();
            }
        }

        /// <summary>
        /// 按类型获取作业区域项
        /// </summary>
        /// <param name="WorkAreaType"></param>
        /// <returns></returns>
        public static List<Model.Project_WorkArea> GetProject_WorkAreaLists(string strProjectId, string strInstallationId, string strUnitId,string strSupervisorUnitId)
        {
            var list = (from x in Funs.DB.Project_WorkArea
                        where x.ProjectId == strProjectId
                        orderby x.WorkAreaCode
                        select x).ToList();
            if (!string.IsNullOrEmpty(strInstallationId))
            {
                list = list.Where(x => x.InstallationId == strInstallationId).ToList();
            }
            if (!string.IsNullOrEmpty(strUnitId))
            {
                list = list.Where(x => x.UnitId == strUnitId).ToList();
            }
            if (!string.IsNullOrEmpty(strSupervisorUnitId))
            {
                list = list.Where(x => x.SupervisorUnitId == strSupervisorUnitId).ToList();
            }

            return list;
        }

        #region 作业区域下拉项
        /// <summary>
        /// 作业区域下拉项
        /// </summary>
        /// <param name="dropName">下拉框名称</param>
        /// <param name="isShowPlease">是否显示请选择</param>
        /// <param name="WorkAreaType">耗材类型</param>
        public static void InitWorkAreaDropDownList(FineUIPro.DropDownList dropName, bool isShowPlease, string strProjectId, string strInstallationId, string strUnitId, string strSupervisorUnitId,string itemText)
        {
            dropName.DataValueField = "WorkAreaId";
            dropName.DataTextField = "WorkAreaCode";
            dropName.DataSource = GetProject_WorkAreaLists(strProjectId, strInstallationId, strUnitId, strSupervisorUnitId);
            dropName.DataBind();
            if (isShowPlease)
            {
                Funs.FineUIPleaseSelect(dropName,itemText);
            }
        }
        #endregion
    }
}