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

namespace BLL
{
    public class Project_UnitService
    {
        /// <summary>
        /// 添加单位信息
        /// </summary>
        /// <param name="unit"></param>
        public static void AddProject_Unit(Model.Project_Unit unit)
        {
            Model.HJGLDB db = Funs.DB;
            Model.Project_Unit newUnit = new Project_Unit();
            newUnit.ProjectUnitId = SQLHelper.GetNewID(typeof(Model.Project_Unit)); ;
            newUnit.UnitId = unit.UnitId;
            newUnit.ProjectId = unit.ProjectId;
            newUnit.UnitType = unit.UnitType;
            newUnit.WorkAreaId = unit.WorkAreaId;
            newUnit.InTime = unit.InTime;
            newUnit.Phone = unit.Phone;
            db.Project_Unit.InsertOnSubmit(newUnit);
            db.SubmitChanges();
        }

        /// <summary>
        /// 添加单位信息
        /// </summary>
        /// <param name="unit"></param>
        public static void UpdateProject_Unit(Model.Project_Unit unit)
        {
            Model.HJGLDB db = Funs.DB;
            Model.Project_Unit pUnit = db.Project_Unit.First(e => e.ProjectUnitId == unit.ProjectUnitId);
            pUnit.InTime = unit.InTime;
            pUnit.OutTime = unit.OutTime;
            pUnit.ProjectRange = unit.ProjectRange;
            pUnit.UnitType = unit.UnitType;
            pUnit.Phone = unit.Phone;
            pUnit.WelderQueIsUse = unit.WelderQueIsUse;
            db.SubmitChanges();
        }

        /// <summary>
        /// 根据主键Id删除一个项目参与单位信息
        /// </summary>
        /// <param name="projectUnitId">主键id</param>
        public static void DeleteProject_UnitByProjectUnitId(string projectUnitId)
        {
            Model.HJGLDB db = Funs.DB;
            var projectUnit = db.Project_Unit.FirstOrDefault(x => x.ProjectUnitId == projectUnitId);
            if (projectUnit != null)
            {
                db.Project_Unit.DeleteOnSubmit(projectUnit);
                db.SubmitChanges();
            }
        }

        /// <summary>
        /// 根据项目Id删除一个项目参与单位信息
        /// </summary>
        /// <param name="projectId">项目id</param>
        /// <param name="type">是否分包类型</param>
        public static void DeleteProject_UnitByProjectId(string projectId)
        {
            Model.HJGLDB db = Funs.DB;
            var fbUnit = from x in db.Project_Unit
                         join y in db.Base_Unit on x.UnitId equals y.UnitId
                         where  x.ProjectId == projectId
                         select x;
            if (fbUnit.Count() > 0)
            {
                db.Project_Unit.DeleteAllOnSubmit(fbUnit);
                db.SubmitChanges();
            }
        }

        /// <summary>
        ///  根据主键获取项目单位信息
        /// </summary>
        /// <param name="projectId"></param>
        /// <param name="unitId"></param>
        /// <returns></returns>
        public static Model.Project_Unit GetProject_UnitByProjectUnitId(string projectUnitId)
        {
            var pUnit = Funs.DB.Project_Unit.FirstOrDefault(x => x.ProjectUnitId == projectUnitId);
            return pUnit;
        }

        /// <summary>
        ///  根据项目id和单位id获取单位是否在项目中
        /// </summary>
        /// <param name="projectId"></param>
        /// <param name="unitId"></param>
        /// <returns></returns>
        public static Model.Project_Unit GetProject_UnitByProjectIdUnitId(string projectId, string unitId)
        {
            var pUnit = Funs.DB.Project_Unit.FirstOrDefault(x => x.ProjectId == projectId && x.UnitId == unitId);
            return pUnit;
        }

        /// <summary>
        /// 根据项目id获取项目单位信息
        /// </summary>
        /// <param name="unitName"></param>
        /// <returns></returns>
        public static List<Model.Project_Unit> GetProjectUnitByProjectId(string projectId)
        {
            return (from x in Funs.DB.Project_Unit where x.ProjectId == projectId select x).ToList();
        }

        /// <summary>
        /// 根据项目id获取该项目所有单位信息
        /// </summary>
        /// <param name="UnitId"></param>
        /// <returns></returns>
        public static List<Model.Project_Unit> GetProjectUnitList(string projectId)
        {
            var q = (from x in Funs.DB.Project_Unit
                     join y in Funs.DB.Base_Unit on x.UnitId equals y.UnitId
                     where x.ProjectId == projectId
                     orderby y.UnitCode
                     select x).ToList();
            return q;
        }

        /// <summary>
        /// 根据项目id获取该项目所有单位信息
        /// </summary>
        /// <param name="UnitId"></param>
        /// <returns></returns>
        public static List<Model.Project_Unit> GetProjectUnitAndTypeList(string projectId,string type)
        {
            var q = (from x in Funs.DB.Project_Unit
                     join y in Funs.DB.Base_Unit on x.UnitId equals y.UnitId
                     where x.ProjectId == projectId && x.UnitType== type
                     orderby y.UnitCode
                     select x).ToList();
            return q;
        }
    }
}