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

namespace BLL
{
    public static class APIUserService
    {
        /// <summary>
        /// 获取用户登录信息
        /// </summary>
        /// <param name="userInfo"></param>
        /// <returns></returns>
        public static Model.UserItem UserLogOn(Model.UserItem userInfo)
        {
            using (Model.HJGLDB db = new Model.HJGLDB(Funs.ConnString))
            {
                var getUser = (from x in db.Sys_User
                               where (x.Account == userInfo.Account || x.Phone == userInfo.Phone)
                               && x.IsPost == true && x.Password == Funs.EncryptionPassword(userInfo.Password)
                               select new Model.UserItem
                               {
                                   UserId = x.UserId,
                                   UserName = x.UserName,
                                   UserCode = x.UserCode,
                                   RoleId = x.RoleIds,
                                   UnitId = x.UnitId,
                                   UnitName = db.Base_Unit.FirstOrDefault(u => u.UnitId == x.UnitId).UnitName,
                                   Depart = x.Depart,
                                   PostId = x.PostId,
                                   IsHeadMan = x.IsHeadMan,
                                   UserType = "1",
                               }).FirstOrDefault();

                return getUser;
            }
        }

        /// <summary>
        /// 根据userId获取用户信息
        /// </summary>
        /// <param name="userId"></param>
        /// <returns></returns>
        public static Model.UserItem getUserByUserId(string userId)
        {
            using (Model.HJGLDB db = new Model.HJGLDB(Funs.ConnString))
            {
                var getUser = (from x in db.Sys_User
                               join y in db.Base_Unit on x.UnitId equals y.UnitId
                               where x.UserId == userId
                               select new Model.UserItem
                               {
                                   UserId = x.UserId,
                                   UserName = x.UserName,
                                   UserCode = x.UserCode,
                                   RoleId = x.RoleIds,
                                   UnitId = x.UnitId,
                                   UnitName=y.UnitName,
                                   UnitType = y.UnitTypeId,
                                   Depart = x.Depart,
                                   PostId = x.PostId,
                                   IsHeadMan = x.IsHeadMan,
                               }).FirstOrDefault();

                return getUser;
            }
        }

        #region 根据登陆用户的单位ID和选择的项目获取单位类型(1、建设方,2、总承包商,3、监理,4、检测,5、施工)
        /// <summary>
        /// 根据登陆用户的单位ID和选择的项目获取单位类型(1、建设方,2、总承包商,3、监理,4、检测,5、施工)
        /// </summary>
        /// <param name="projectId"></param>
        /// <param name="unitId"></param>
        /// <returns></returns>
        public static Model.BaseInfoItem getUserInfo(string projectId, string unitId)
        {
            using (Model.HJGLDB db = new Model.HJGLDB(Funs.ConnString))
            {
                var getUser = (from x in db.Project_Unit
                               where x.ProjectId==projectId && x.UnitId==unitId
                               select new Model.BaseInfoItem
                               {
                                   BaseInfoId = x.UnitId,
                                   BaseInfoName = x.UnitType
                               }).FirstOrDefault();

                return getUser;
            }
        }
        #endregion

        #region 获取项目区域的用户列表
        /// <summary>
        /// 获取项目区域的用户列表
        /// </summary>
        /// <param name="projectArea">项目区域</param>
        /// <returns></returns>
        public static List<Model.BaseInfoItem> getUserListByProjectArea(string projectArea)
        {
            using (Model.HJGLDB db = new Model.HJGLDB(Funs.ConnString))
            {
                var getUser = (from x in db.Project_User
                               join y in db.Sys_User on x.UserId equals y.UserId
                               join z in db.Base_Project on x.ProjectId equals z.ProjectId
                               where z.ProjectArea == projectArea
                               select new Model.BaseInfoItem
                               {
                                   BaseInfoId = x.UserId,
                                   BaseInfoName = y.UserName
                               }).Distinct().ToList();

                return getUser;
            }
        }
        #endregion
    }
}