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_UserService
    {
        /// <summary>
        /// 根据主键Id删除一个项目参与用户信息
        /// </summary>
        /// <param name="projectUerId">主键id</param>
        public static void DeleteProject_UserByProjectUserId(string projectUerId)
        {
            Model.HJGLDB db = Funs.DB;
            var projectUser = db.Project_User.FirstOrDefault(x => x.ProjectUserId == projectUerId);
            if (projectUser != null)
            {
                db.Project_User.DeleteOnSubmit(projectUser);
                db.SubmitChanges();
            }
        }

        /// <summary>
        ///  根据项目id和用户id获取用户是否在项目中
        /// </summary>
        /// <param name="projectId"></param>
        /// <param name="unitId"></param>
        /// <returns></returns>
        public static Model.Project_User GetProject_UserByProjectIdUserId(string projectId, string userId)
        {
            var pUser = Funs.DB.Project_User.FirstOrDefault(x => x.ProjectId == projectId && x.UserId == userId);
            return pUser;
        }

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

        /// <summary>
        /// 添加单位信息
        /// </summary>
        /// <param name="unit"></param>
        public static void AddProject_User(Model.Project_User user)
        {
            Model.HJGLDB db = Funs.DB;
            Model.Project_User newuser = new Project_User();
            newuser.ProjectUserId = SQLHelper.GetNewID(typeof(Model.Project_User)); ;
            newuser.UserId = user.UserId;
            newuser.ProjectId = user.ProjectId;           
            newuser.RoleIds = user.RoleIds;
            newuser.IsPost = user.IsPost;
            db.Project_User.InsertOnSubmit(newuser);
            db.SubmitChanges();
        }

        /// <summary>
        /// 根据用户主键获取角色主键
        /// </summary>
        /// <param name="userId">用户主键</param>
        /// <returns>角色主键</returns>
        public static string GetProjectRoleIdByUserId(string projectId, string userId)
        {
            string roleIds = string.Empty;
            Model.Project_User m = Funs.DB.Project_User.FirstOrDefault(e => e.UserId == userId && e.ProjectId == projectId);
            if (m != null)
            {
                roleIds = m.RoleIds;
            }

            return roleIds;
        }

        /// <summary>
        /// 获取项目 单位下用户
        /// </summary>
        /// <param name="projectId"></param>
        /// <param name="userId"></param>
        /// <returns></returns>
        public static List<Sys_User> GetUserByProjectIdUnitId(string projectId, string unitId)
        {
            var users = from x in Funs.DB.Sys_User
                        join y in Funs.DB.Project_User on x.UserId equals y.UserId
                        where y.ProjectId == projectId && x.UnitId == unitId
                        select x;
            return users.ToList();

        }

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

        #region 根据项目获取项目用户下拉项
        /// <summary>
        /// 根据项目获取项目用户下拉项
        /// </summary>
        /// <param name="dropName"></param>
        /// <param name="isShowPlease"></param>
        /// <param name="projectId"></param>
        /// <param name="itemText"></param>
        public static void InitProjectUserDropDownList(FineUIPro.DropDownList dropName, bool isShowPlease, string projectId, string itemText)
        {
            Model.HJGLDB db = Funs.DB;
            dropName.DataValueField = "UserId";
            dropName.DataTextField = "UserName";
            var q = from x in db.Project_User
                    join y in db.Sys_User on x.UserId equals y.UserId
                    where x.ProjectId == projectId orderby y.UserName
                    select new { x.UserId, y.UserName };
            dropName.DataSource = q;
            dropName.DataBind();
            if (isShowPlease)
            {
                Funs.FineUIPleaseSelect(dropName, itemText);
            }
        }
        #endregion
    }
}