using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;

namespace BLL
{
    /// <summary>
    /// 管道试压包管理
    /// </summary>
    public static class TestPackageManagementService
    {
        public static Model.SGGLDB db = Funs.DB;

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

        /// <summary>
        /// 获取分页列表
        /// </summary>
        /// <param name="projectId"></param>
        /// <param name="UnitWorkId"></param>
        /// <param name="completedState"></param>
        /// <param name="startRowIndex"></param>
        /// <param name="maximumRows"></param>
        /// <returns></returns>
        public static IEnumerable GetListData(string projectId, string UnitWorkId, string completedState, int startRowIndex, int maximumRows)
        {
            IQueryable<Model.ProcessControl_TestPackageManagement> q = from x in db.ProcessControl_TestPackageManagement
                                                                       where x.ProjectId == projectId
                                                                       orderby x.TestPackageManagementCode descending
                                                                       select x;
            if (UnitWorkId != "0")
            {
                q = q.Where(e => e.UnitWorkId == UnitWorkId);
            }
            if (completedState != "0")
            {
                q = q.Where(e => e.CompletedState == completedState);
            }
            count = q.Count();
            if (count == 0)
            {
                return new object[] { "" };
            }
            return from x in q.Skip(startRowIndex).Take(maximumRows)
                   select new
                   {
                       x.TestPackageManagementId,
                       x.ProjectId,
                       x.TestPackageManagementCode,
                       x.UnitWorkId,
                       InstallationName = (from y in db.WBS_UnitWork where y.UnitWorkId == x.UnitWorkId select y.UnitWorkName).FirstOrDefault(),
                       x.TestMedium,
                       x.TestPressure,
                       x.PlanTestDate,
                       x.CompletedDate,
                       CompletedState = (x.CompletedState == "1" ? "已完成" : "未完成"),
                       x.Remark
                   };
        }

        /// <summary>
        /// 获取分页列表数
        /// </summary>
        /// <param name="projectId"></param>
        /// <param name="UnitWorkId"></param>
        /// <param name="completedState"></param>
        /// <returns></returns>
        public static int GetListCount(string projectId, string UnitWorkId, string completedState)
        {
            return count;
        }

        /// <summary>
        /// 根据主键获取管道试压包管理
        /// </summary>
        /// <param name="testPackageManagementId"></param>
        /// <returns></returns>
        public static Model.ProcessControl_TestPackageManagement GetTestPackageManagementById(string testPackageManagementId)
        {
            return Funs.DB.ProcessControl_TestPackageManagement.FirstOrDefault(e => e.TestPackageManagementId == testPackageManagementId);
        }

        /// <summary>
        /// 添加管道试压包管理
        /// </summary>
        /// <param name="testPackageManagement"></param>
        public static void AddTestPackageManagement(Model.ProcessControl_TestPackageManagement testPackageManagement)
        {
            Model.SGGLDB db = Funs.DB;
            Model.ProcessControl_TestPackageManagement newTestPackageManagement = new Model.ProcessControl_TestPackageManagement();
            newTestPackageManagement.TestPackageManagementId = testPackageManagement.TestPackageManagementId;
            newTestPackageManagement.ProjectId = testPackageManagement.ProjectId;
            newTestPackageManagement.TestPackageManagementCode = testPackageManagement.TestPackageManagementCode;
            newTestPackageManagement.UnitWorkId = testPackageManagement.UnitWorkId;
            newTestPackageManagement.TestMedium = testPackageManagement.TestMedium;
            newTestPackageManagement.TestPressure = testPackageManagement.TestPressure;
            newTestPackageManagement.PlanTestDate = testPackageManagement.PlanTestDate;
            newTestPackageManagement.CompletedDate = testPackageManagement.CompletedDate;
            newTestPackageManagement.CompletedState = testPackageManagement.CompletedState;
            newTestPackageManagement.Remark = testPackageManagement.Remark;
            db.ProcessControl_TestPackageManagement.InsertOnSubmit(newTestPackageManagement);
            db.SubmitChanges();
        }


        /// <summary>
        /// 修改管道试压包管理
        /// </summary>
        /// <param name="testPackageManagement"></param>
        public static void UpdateTestPackageManagement(Model.ProcessControl_TestPackageManagement testPackageManagement)
        {
            Model.SGGLDB db = Funs.DB;
            Model.ProcessControl_TestPackageManagement newTestPackageManagement = db.ProcessControl_TestPackageManagement.FirstOrDefault(e => e.TestPackageManagementId == testPackageManagement.TestPackageManagementId);
            if (newTestPackageManagement != null)
            {
                newTestPackageManagement.ProjectId = testPackageManagement.ProjectId;
                newTestPackageManagement.TestPackageManagementCode = testPackageManagement.TestPackageManagementCode;
                newTestPackageManagement.UnitWorkId = testPackageManagement.UnitWorkId;
                newTestPackageManagement.TestMedium = testPackageManagement.TestMedium;
                newTestPackageManagement.TestPressure = testPackageManagement.TestPressure;
                newTestPackageManagement.PlanTestDate = testPackageManagement.PlanTestDate;
                newTestPackageManagement.CompletedDate = testPackageManagement.CompletedDate;
                newTestPackageManagement.CompletedState = testPackageManagement.CompletedState;
                newTestPackageManagement.Remark = testPackageManagement.Remark;
                db.SubmitChanges();
            }
        }

        /// <summary>
        /// 根据主键删除管道试压包管理
        /// </summary>
        /// <param name="testPackageManagementId"></param>
        public static void DeleteTestPackageManagementById(string testPackageManagementId)
        {
            Model.SGGLDB db = Funs.DB;
            Model.ProcessControl_TestPackageManagement newTestPackageManagement = db.ProcessControl_TestPackageManagement.FirstOrDefault(e => e.TestPackageManagementId == testPackageManagementId);
            if (newTestPackageManagement != null)
            {
                db.ProcessControl_TestPackageManagement.DeleteOnSubmit(newTestPackageManagement);
                db.SubmitChanges();
            }
        }
    }
}