using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Web.UI.WebControls;
namespace BLL
{
    public class WBSsearchService
    {
        /// 
        /// 根据查询条件查询列表
        /// 
        /// 
        public static List getWBSlistForApi(string projectId, int index, int page, string unitWorkId = "", string ControlItemContent = "", string ControlPoint = "", string ControlItemDef = "", string HGForms = "")
        {
            using (var db = new Model.SGGLDB(Funs.ConnString))
            {
                IQueryable q = db.View_WBS_ControlItemAndCycle;
                if (!string.IsNullOrEmpty(projectId) && "undefined" != projectId)
                {
                    q = q.Where(e => e.ProjectId == projectId);
                }
                if (!string.IsNullOrEmpty(unitWorkId) && "undefined" != unitWorkId)
                {
                    q = q.Where(e => e.UnitWorkId.Contains(unitWorkId));
                }
                if (!string.IsNullOrEmpty(ControlItemContent) && "undefined" != ControlItemContent)
                {
                    q = q.Where(e => e.ControlItemContent.Contains(ControlItemContent));
                }
                //if (!string.IsNullOrEmpty(ControlPoint) && "undefined" != ControlPoint)
                //{
                //    q = q.Where(e => e.ControlPoint.Contains(ControlPoint));
                //}
                if (!string.IsNullOrEmpty(ControlPoint) && "undefined" != ControlPoint)
                {
                    if (ControlPoint.ToString().Contains(","))
                    {
                        string[] strArray = ControlPoint.Split(',');
                        q = q.Where(e => strArray.Contains(e.ControlPoint));
                    }
                    else
                    {
                        q = q.Where(e => e.ControlPoint.IndexOf(ControlPoint)>=0);
                    }
                }
                if (!string.IsNullOrEmpty(ControlItemDef) && "undefined" != ControlItemDef)
                {
                    q = q.Where(e => e.ControlItemDef.Contains(ControlItemDef));
                }
                if (!string.IsNullOrEmpty(HGForms) && "undefined" != HGForms)
                {
                    q = q.Where(e => e.HGForms.Contains(HGForms) || e.SHForms.Contains(HGForms));
                }
                q = q.Where(e => e.IsApprove == true);
                var qres = from x in q
                           select new
                           {
                               x.ControlItemAndCycleId,
                               x.UnitWorkId,
                               UnitWorkName = BLL.UnitWorkService.GetUnitWorkName(x.UnitWorkId),
                               x.ControlItemContent,
                               x.ProjectId,
                               x.ControlPoint,
                               x.Weights,
                               x.ControlItemDef,
                               x.HGFormsJZ,
                               x.HGForms,
                               x.SHForms,
                               x.Standard,
                               x.CheckNum
                           };
                List res = new List();
                var list = qres.Skip(index * page).Take(page).ToList();
                foreach (var item in list)
                {
                    Model.View_WBS_ControlItemAndCycle tc = new Model.View_WBS_ControlItemAndCycle();
                    tc.ControlItemAndCycleId = item.ControlItemAndCycleId;
                    tc.ProjectId = item.ProjectId;
                    tc.UnitWorkId = item.UnitWorkId + "$" + item.UnitWorkName;
                    tc.ControlItemContent = item.ControlItemContent;
                    tc.ControlPoint = item.ControlPoint;
                    tc.Weights = item.Weights;
                    tc.ControlItemDef = item.ControlItemDef;
                    tc.HGFormsJZ = item.HGFormsJZ;
                    tc.HGForms = item.HGForms;
                    tc.SHForms = item.SHForms;
                    tc.Standard = item.Standard;
                    tc.CheckNum = item.CheckNum;
                    res.Add(tc);
                }
                return res;
            }
        }
        /// 
        /// 根据编号获取明细
        /// 
        /// 
        public static Model.WBS_ControlItemInit GetControlItemInitByCode(string controlItemCode)
        {
            return Funs.DB.WBS_ControlItemInit.FirstOrDefault(e => e.ControlItemCode == controlItemCode);
        }
        /// 
        /// 添加
        /// 
        /// 
        public static void AddControlItemInit(Model.WBS_ControlItemInit controlItem)
        {
            Model.SGGLDB db = Funs.DB;
            Model.WBS_ControlItemInit newControlItem = new Model.WBS_ControlItemInit();
            newControlItem.ControlItemCode = controlItem.ControlItemCode;
            newControlItem.WorkPackageCode = controlItem.WorkPackageCode;
            newControlItem.ControlItemContent = controlItem.ControlItemContent;
            newControlItem.ControlPoint = controlItem.ControlPoint;
            newControlItem.ControlItemDef = controlItem.ControlItemDef;
            newControlItem.Weights = controlItem.Weights;
            newControlItem.HGForms = controlItem.HGForms;
            newControlItem.SHForms = controlItem.SHForms;
            newControlItem.Standard = controlItem.Standard;
            newControlItem.ClauseNo = controlItem.ClauseNo;
            db.WBS_ControlItemInit.InsertOnSubmit(newControlItem);
            db.SubmitChanges();
        }
        /// 
        /// 修改
        /// 
        /// 
        public static void UpdateControlItemInit(Model.WBS_ControlItemInit controlItem)
        {
            Model.SGGLDB db = Funs.DB;
            Model.WBS_ControlItemInit newControlItem = db.WBS_ControlItemInit.First(e => e.ControlItemCode == controlItem.ControlItemCode);
            newControlItem.WorkPackageCode = controlItem.WorkPackageCode;
            newControlItem.ControlItemContent = controlItem.ControlItemContent;
            newControlItem.ControlPoint = controlItem.ControlPoint;
            newControlItem.ControlItemDef = controlItem.ControlItemDef;
            newControlItem.Weights = controlItem.Weights;
            newControlItem.HGForms = controlItem.HGForms;
            newControlItem.SHForms = controlItem.SHForms;
            newControlItem.Standard = controlItem.Standard;
            newControlItem.ClauseNo = controlItem.ClauseNo;
            db.SubmitChanges();
        }
        /// 
        /// 根据编号删除信息
        /// 
        /// 
        public static void DeleteControlItemInit(string controlItemCode)
        {
            Model.SGGLDB db = Funs.DB;
            Model.WBS_ControlItemInit controlItem = db.WBS_ControlItemInit.First(e => e.ControlItemCode == controlItemCode);
            db.WBS_ControlItemInit.DeleteOnSubmit(controlItem);
            db.SubmitChanges();
        }
        /// 
        /// 根据工作包编号删除所有明细信息
        /// 
        /// 
        public static void DeleteAllControlItemInit(string workPackageCode)
        {
            Model.SGGLDB db = Funs.DB;
            List q = (from x in db.WBS_ControlItemInit where x.WorkPackageCode == workPackageCode orderby x.ControlItemCode select x).ToList();
            db.WBS_ControlItemInit.DeleteAllOnSubmit(q);
            db.SubmitChanges();
        }
        /// 
        /// 是否存在工作包
        /// 
        /// 
        /// true-存在,false-不存在
        public static bool IsExistControlItemInitName(string workPackageCode, string controlItemContent, string controlItemCode)
        {
            var q = from x in Funs.DB.WBS_ControlItemInit where x.WorkPackageCode == workPackageCode && x.ControlItemContent == controlItemContent && x.ControlItemCode != controlItemCode select x;
            if (q.Count() > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
}