using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Web.UI.WebControls;
namespace BLL
{
    public class BreakdownService
    {
        public static Model.SGGLDB db = Funs.DB;
        /// 
        /// 记录数
        /// 
        public static int count
        {
            get;
            set;
        }
        /// 
        /// 定义变量
        ///                   
        private static IQueryable qq = from x in db.WBS_Breakdown orderby x.SortIndex select x;
        /// 
        /// 获取项目列表
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        public static IEnumerable getListData(string divisionId, string name, int startRowIndex, int maximumRows)
        {
            IQueryable q = qq;
            if (!string.IsNullOrEmpty(divisionId))
            {
                q = q.Where(e => e.DivisionId == divisionId);
            }
            if (!string.IsNullOrEmpty(name))
            {
                q = q.Where(e => e.BreakdownName.Contains(name));
            }
            count = q.Count();
            if (count == 0)
            {
                return new object[] { "" };
            }
            return from x in q.Skip(startRowIndex).Take(maximumRows)
                   select new
                   {
                       x.BreakdownId,
                       x.BreakdownCode,
                       x.BreakdownName,
                       x.DivisionId,
                       x.Basis,
                       x.CheckPoints,
                       x.RecordAndCode,
                       x.Class,
                       x.Remark,
                       x.FenBao,
                       x.WuHuan,
                       x.JianLi,
                       x.YeZhu,
                       x.CheckAcceptType,
                       CheckPointsDef = Funs.GetSubStr(x.CheckPoints, 15),
                       RecordAndCodeDef = Funs.GetSubStr(x.RecordAndCode, 15),
                       x.ModelURL
                   };
        }
        /// 
        /// 获取列表数
        /// 
        /// 
        /// 
        /// 
        public static int getListCount(string divisionId, string name)
        {
            return count;
        }
        /// 
        /// 添加分项
        /// 
        /// 
        public static void AddBreakdown(Model.WBS_Breakdown breakdown)
        {
            Model.SGGLDB db = Funs.DB;
            Model.WBS_Breakdown newBreakdown = new Model.WBS_Breakdown();
            newBreakdown.BreakdownId = breakdown.BreakdownId;
            newBreakdown.BreakdownCode = breakdown.BreakdownCode;
            newBreakdown.BreakdownName = breakdown.BreakdownName;
            newBreakdown.DivisionId = breakdown.DivisionId;
            newBreakdown.Basis = breakdown.Basis;
            newBreakdown.CheckPoints = breakdown.CheckPoints;
            newBreakdown.RecordAndCode = breakdown.RecordAndCode;
            newBreakdown.Class = breakdown.Class;
            newBreakdown.SortIndex = breakdown.SortIndex;
            newBreakdown.Remark = breakdown.Remark;
            newBreakdown.ModelURL = breakdown.ModelURL;
            newBreakdown.IsAcceptance = breakdown.IsAcceptance;
            newBreakdown.FenBao = breakdown.FenBao;
            newBreakdown.WuHuan = breakdown.WuHuan;
            newBreakdown.JianLi = breakdown.JianLi;
            newBreakdown.YeZhu = breakdown.YeZhu;
            newBreakdown.CheckAcceptType = breakdown.CheckAcceptType;
            db.WBS_Breakdown.InsertOnSubmit(newBreakdown);
            db.SubmitChanges();
        }
        /// 
        /// 修改分项
        /// 
        /// 
        public static void UpdateBreakdown(Model.WBS_Breakdown breakdown)
        {
            Model.SGGLDB db = Funs.DB;
            Model.WBS_Breakdown newBreakdown = db.WBS_Breakdown.First(e => e.BreakdownId == breakdown.BreakdownId);
            newBreakdown.BreakdownCode = breakdown.BreakdownCode;
            newBreakdown.BreakdownName = breakdown.BreakdownName;
            newBreakdown.DivisionId = breakdown.DivisionId;
            newBreakdown.Basis = breakdown.Basis;
            newBreakdown.CheckPoints = breakdown.CheckPoints;
            newBreakdown.RecordAndCode = breakdown.RecordAndCode;
            newBreakdown.Class = breakdown.Class;
            newBreakdown.SortIndex = breakdown.SortIndex;
            newBreakdown.Remark = breakdown.Remark;
            newBreakdown.ModelURL = breakdown.ModelURL;
            newBreakdown.FenBao = breakdown.FenBao;
            newBreakdown.WuHuan = breakdown.WuHuan;
            newBreakdown.JianLi = breakdown.JianLi;
            newBreakdown.YeZhu = breakdown.YeZhu;
            newBreakdown.CheckAcceptType = breakdown.CheckAcceptType;
            db.SubmitChanges();
        }
        /// 
        /// 根据一个分项信息
        /// 
        /// 
        public static void DeleteBreakdown(string breakdownId)
        {
            Model.SGGLDB db = Funs.DB;
            Model.WBS_Breakdown breakdown = db.WBS_Breakdown.First(e => e.BreakdownId == breakdownId);
            db.WBS_Breakdown.DeleteOnSubmit(breakdown);
            db.SubmitChanges();
        }
        /// 
        /// 根据一个子分部信息删除所有对应分项信息
        /// 
        /// 
        public static void DeleteAllBreakdown(string divisionId)
        {
            Model.SGGLDB db = Funs.DB;
            var q = from x in db.WBS_Breakdown where x.DivisionId == divisionId select x;
            if (q.Count() > 0)
            {
                db.WBS_Breakdown.DeleteAllOnSubmit(q);
                db.SubmitChanges();
            }
        }
        /// 
        /// 获取施工分项项
        /// 
        /// 
        public static ListItem[] GetBreakdownNameList()
        {
            var q = (from x in Funs.DB.WBS_Breakdown 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].BreakdownName ?? "", q[i].BreakdownId.ToString());
            }
            return list;
        }
        /// 
        /// 根据主键返回一个分项信息
        /// 
        /// 分项编号
        /// 
        public static Model.WBS_Breakdown GetBreakdownById(string breakdownId)
        {
            return Funs.DB.WBS_Breakdown.FirstOrDefault(x => x.BreakdownId == breakdownId);
        }
        /// 
        /// 根据子分部Id返回所有分项信息
        /// 
        /// 分项编号
        /// 
        public static List GetBreakdownsByDivisionId(string divisionId)
        {
            return (from x in Funs.DB.WBS_Breakdown where x.DivisionId == divisionId select x).ToList();
        }
        /// 
        /// 判断分项编号是否存在
        /// 
        /// 
        /// 
        public static bool IsExistBreakdownCode(string breakdownCode, string breakdownId)
        {
            Model.WBS_Breakdown m = Funs.DB.WBS_Breakdown.FirstOrDefault(e => e.BreakdownCode == breakdownCode && e.BreakdownId != breakdownId);
            if (m != null)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        /// 
        /// 判断分项名称是否存在
        /// 
        /// 
        /// 
        public static bool IsExistProfessionalName(string breakdownName, string breakdownId)
        {
            Model.WBS_Breakdown m = Funs.DB.WBS_Breakdown.FirstOrDefault(e => e.BreakdownName == breakdownName && e.BreakdownId != breakdownId);
            if (m != null)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
}