using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Web.UI.WebControls;

namespace BLL
{
    public class DivisionProjectService
    {
        public static Model.SGGLDB db = Funs.DB;

        /// <summary>
        /// 记录数
        /// </summary>
        public static int count
        {
            get;
            set;
        }

        /// <summary>
        /// 定义变量
        /// </summary>                  
        private static IQueryable<Model.WBS_DivisionProject> qq = from x in db.WBS_DivisionProject orderby x.SortIndex select x;

        /// <summary>
        /// 获取项目列表
        /// </summary>
        /// <param name="searchItem"></param>
        /// <param name="searchValue"></param>
        /// <param name="startRowIndex"></param>
        /// <param name="maximumRows"></param>
        /// <returns></returns>
        public static IEnumerable getListData(int startRowIndex, int maximumRows)
        {
            IQueryable<Model.WBS_DivisionProject> q = qq;
            count = q.Count();
            if (count == 0)
            {
                return new object[] { "" };
            }
            return from x in q.Skip(startRowIndex).Take(maximumRows)
                   select new
                   {
                       x.DivisionProjectId,
                       x.DivisionCode,
                   };
        }

        /// <summary>
        /// 获取列表数
        /// </summary>
        /// <param name="searchItem"></param>
        /// <param name="searchValue"></param>
        /// <returns></returns>
        public static int getListCount()
        {
            return count;
        }

        /// <summary>
        /// 添加分部/子分部
        /// </summary>
        /// <param name="Installation"></param>
        public static void AddDivisionProject(Model.WBS_DivisionProject divisionProject)
        {
            Model.SGGLDB db = Funs.DB;
            Model.WBS_DivisionProject newDivisionProject = new Model.WBS_DivisionProject();

            newDivisionProject.DivisionProjectId = divisionProject.DivisionProjectId;
            newDivisionProject.ProjectId = divisionProject.ProjectId;
            newDivisionProject.DivisionCode = divisionProject.DivisionCode;
            newDivisionProject.DivisionName = divisionProject.DivisionName;
            newDivisionProject.SortIndex = divisionProject.SortIndex;
            newDivisionProject.SuperDivisionId = divisionProject.SuperDivisionId;
            newDivisionProject.CNProfessionalId = divisionProject.CNProfessionalId;
            newDivisionProject.UnitWorkId = divisionProject.UnitWorkId;
            newDivisionProject.OldDivisionId = divisionProject.OldDivisionId;
            newDivisionProject.SubItemType = divisionProject.SubItemType;
            db.WBS_DivisionProject.InsertOnSubmit(newDivisionProject);
            db.SubmitChanges();
        }

        /// <summary>
        /// 修改分部/子分部
        /// </summary>
        /// <param name="divisionProject"></param>
        public static void UpdateDivisionProject(Model.WBS_DivisionProject divisionProject)
        {
            Model.SGGLDB db = Funs.DB;
            Model.WBS_DivisionProject newDivisionProject = db.WBS_DivisionProject.First(e => e.DivisionProjectId == divisionProject.DivisionProjectId);
            newDivisionProject.DivisionCode = divisionProject.DivisionCode;
            newDivisionProject.DivisionName = divisionProject.DivisionName;
            newDivisionProject.SortIndex = divisionProject.SortIndex;
            newDivisionProject.SuperDivisionId = divisionProject.SuperDivisionId;
            newDivisionProject.CNProfessionalId = divisionProject.CNProfessionalId;
            newDivisionProject.IsSelected = divisionProject.IsSelected;
            newDivisionProject.SubItemType = divisionProject.SubItemType;

            db.SubmitChanges();
        }

        /// <summary>
        /// 删除一个分部/子分部信息
        /// </summary>
        /// <param name="divisionCode"></param>
        public static void DeleteDivisionProject(string divisionProjectId)
        {
            Model.SGGLDB db = Funs.DB;
            Model.WBS_DivisionProject divisionProject = db.WBS_DivisionProject.First(e => e.DivisionProjectId == divisionProjectId);
            db.WBS_DivisionProject.DeleteOnSubmit(divisionProject);
            db.SubmitChanges();
        }

        /// <summary>
        /// 删除一个装置下的分部/子分部信息
        /// </summary>
        /// <param name="divisionCode"></param>
        public static void DeleteDivisionProjectByUnitWorkId(string unitWorkId)
        {
            Model.SGGLDB db = Funs.DB;
            var q = from x in db.WBS_DivisionProject where x.UnitWorkId == unitWorkId select x;
            if (q.Count() > 0)
            {
                db.WBS_DivisionProject.DeleteAllOnSubmit(q);
                db.SubmitChanges();
            }
        }

        /// <summary>
        /// 获取施工分部/子分部项
        /// </summary>
        /// <returns></returns>
        public static ListItem[] GetDivisionNameList()
        {
            var q = (from x in Funs.DB.WBS_DivisionProject orderby x.SortIndex select x).ToList();
            ListItem[] list = new ListItem[q.Count()];
            for (int i = 0; i < q.Count(); i++)
            {
                list[i] = new ListItem(q[i].DivisionName ?? "", q[i].DivisionProjectId.ToString());
            }
            return list;
        }

        /// <summary>
        /// 根据主键返回一个分部/子分部信息
        /// </summary>
        /// <param name="cnProfessionalCode">分部/子分部编号</param>
        /// <returns></returns>
        public static Model.WBS_DivisionProject GetDivisionProjectById(string divisionProjectId)
        {
            return Funs.DB.WBS_DivisionProject.FirstOrDefault(x => x.DivisionProjectId == divisionProjectId);
        }

        /// <summary>
        /// 判断分部/子分部编号是否存在
        /// </summary>
        /// <param name="divisionCode"></param>
        /// <returns></returns>
        public static bool IsExistDivisionCode(string divisionCode, string divisionProjectId)
        {
            Model.WBS_DivisionProject m = Funs.DB.WBS_DivisionProject.FirstOrDefault(e => e.DivisionCode == divisionCode && e.DivisionProjectId != divisionProjectId);
            if (m != null)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        /// <summary>
        /// 判断分部/子分部名称是否存在
        /// </summary>
        /// <param name="professionalName"></param>
        /// <returns></returns>
        public static bool IsExistProfessionalName(string divisionName, string divisionProjectId)
        {
            Model.WBS_DivisionProject m = Funs.DB.WBS_DivisionProject.FirstOrDefault(e => e.DivisionName == divisionName && e.DivisionProjectId != divisionProjectId);
            if (m != null)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
}