using BLL;
using System;
using System.Linq;
using System.Web.Http;
namespace WebAPI.Controllers
{
    /// 
    /// 用户
    /// 
    public class UserController : ApiController
    {
        #region 根据账号或手机号码登录方法
        /// 
        /// 登录方法
        /// 
        /// 
        /// 
        [HttpPost]
        public Model.ResponeData postLoginOn([FromBody] Model.UserItem userInfo)
        {
            //登录方法 Model.UserItem
            var responeData = new Model.ResponeData
            {
                message = "账号密码不匹配!"
            };
            try
            {
                var user = APIUserService.UserLogOn(userInfo);
                if (user != null)
                {
                    responeData.message = "登录成功!";
                    responeData.data = user;
                }
                else
                {
                    var user1 = APIPersonService.PersonLogOn(userInfo);
                    if (user1 != null)
                    {
                        responeData.message = "登录成功!";
                        responeData.code = 2;
                        responeData.data = user1;
                    }
                }                
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }
            return responeData;
        }
        #endregion
        #region 根据userid获取用户信息
        /// 
        /// 根据userid获取用户信息
        /// 
        /// 
        /// 
        public Model.ResponeData getUserByUserId(string userId)
        {
            var responeData = new Model.ResponeData();
            try
            {
                responeData.data = APIUserService.getUserByUserId(userId);
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }
            return responeData;
        }
        #endregion
        #region 根据unitId获取用户信息
        /// 
        /// 根据unitId获取用户信息
        /// 
        /// 
        /// 
        public Model.ResponeData getUserByUnitid(string unitId)
        {
            var responeData = new Model.ResponeData();
            try
            {
                var getDataList = APIUserService.getUserByUnitId(unitId, null);
                responeData.data = new { getDataList.Count, getDataList };
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }
            return responeData;
        }
        #endregion
        #region 根据unitId获取用户信息
        /// 
        /// 根据unitId获取用户信息
        /// 
        /// 单位ID
        /// 查询
        /// 
        public Model.ResponeData getUserByUnitidQuery(string unitId, string strParam)
        {
            var responeData = new Model.ResponeData();
            try
            {
                var getDataList = APIUserService.getUserByUnitId(unitId, strParam);
                responeData.data = new { getDataList.Count, getDataList };
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }
            return responeData;
        }
        #endregion
        #region 根据projectId、unitid获取用户信息
        /// 
        /// 根据projectId、unitid获取用户信息
        /// 
        /// 
        /// 
        /// 
        public Model.ResponeData getUserByProjectIdUnitId(string projectId, string unitId)
        {
            var responeData = new Model.ResponeData();
            try
            {
                responeData.data = APIUserService.getUserByProjectIdUnitIdQuery(projectId, unitId, null, null);
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }
            return responeData;
        }
        #endregion
        #region 根据projectId、unitid获取用户信息
        /// 
        /// 根据projectId、unitid获取用户信息
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        public Model.ResponeData getUserByProjectIdUnitIdQuery(string projectId, string unitId, string roleIds, string strParam, int pageIndex)
        {
            var responeData = new Model.ResponeData();
            try
            {
                var getDataList = APIUserService.getUserByProjectIdUnitIdQuery(projectId, unitId, roleIds, strParam);
                int pageCount = getDataList.Count();
                if (pageCount > 0 && pageIndex > 0)
                {
                    getDataList = getDataList.Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList();
                }
                responeData.data = new { pageCount, getDataList };
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }
            return responeData;
        }
        #endregion
        #region 根据UnitType单位类型获取用户信息
        /// 
        /// 根据UnitType单位类型获取用户信息
        /// 
        /// 
        /// (总包1;施工分包2;监理3;业主4;其他5)
        /// 
        /// 
        /// 
        /// 
        public Model.ResponeData getUserByProjectIdUnitTypeQuery(string projectId, string unitType, string roleIds, string strParam, int pageIndex)
        {
            var responeData = new Model.ResponeData();
            try
            {
                var getDataList = APIUserService.getUserByProjectIdUnitTypeQuery(projectId, unitType, roleIds, strParam);
                int pageCount = getDataList.Count();
                if (pageCount > 0 && pageIndex > 0)
                {
                    getDataList = getDataList.Skip(Funs.PageSize * (pageIndex - 1)).Take(Funs.PageSize).ToList();
                }
                responeData.data = new { pageCount, getDataList };
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }
            return responeData;
        }
        #endregion
        #region 保存人员电话号码
        /// 
        /// 保存人员电话号码
        /// 
        /// 
        /// 电话
        /// 
        public Model.ResponeData getSaveUserTel(string userId, string tel)
        {
            var responeData = new Model.ResponeData();
            try
            {
                APIUserService.getSaveUserTel(userId, tel);
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }
            return responeData;
        }
        #endregion
        #region 保存人员签名
        /// 
        /// 保存人员电话号码
        /// 
        /// 
        /// 签名
        /// 
        public Model.ResponeData getSaveUserSignatureUrl(string userId, string signatureUrl)
        {
            var responeData = new Model.ResponeData();
            try
            {
                APIUserService.getSaveUserSignatureUrl(userId, signatureUrl);
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }
            return responeData;
        }
        #endregion
        #region 根据用户UnitId判断是否为本单位用户或管理员
        /// 
        /// 根据用户UnitId判断是否为本单位用户或管理员
        /// 
        /// 
        /// 
        public Model.ResponeData getIsMainUnitOrAdmin(string userId)
        {
            var responeData = new Model.ResponeData();
            try
            {
                responeData.data= CommonService.IsMainUnitOrAdmin(userId);
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }
            return responeData;
        }
        #endregion
        #region 获取当前用户是否有菜单权限
        /// 
        /// 获取当前用户是否有菜单权限
        /// 
        /// 当前人ID
        /// 菜单ID
        /// 项目ID
        /// 
        public Model.ResponeData getIsHaveMenuPower(string userId, string menuId, string projectId)
        {
            var responeData = new Model.ResponeData();
            try
            {
                responeData.data = CommonService.ReturnMenuByUserIdMenuId( userId,  menuId,  projectId);
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }
            return responeData;
        }
        #endregion
        #region 获取当前用户系统权限集合
        /// 
        /// 获取当前用户是否有菜单权限
        /// 
        /// 当前人ID
        /// 
        public Model.ResponeData getSystemPowerList(string userId)
        {
            var responeData = new Model.ResponeData();
            try
            {
                responeData.data = CommonService.GetSystemPowerList(userId);
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }
            return responeData;
        }
        #endregion
        #region 获取当前用户菜单权限集合
        /// 
        /// 获取当前用户是否有菜单权限
        /// 
        /// 当前人ID
        /// 项目ID
        /// 
        public Model.ResponeData getMenuPowerList(string userId,  string projectId)
        {
            var responeData = new Model.ResponeData();
            try
            {
                responeData.data = CommonService.GetAllMenuList(projectId, userId);
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }
            return responeData;
        }
        #endregion
        #region 获取当前用户是否有按钮权限
        /// 
        /// 获取当前用户是否有菜单权限
        /// 
        /// 当前人ID
        /// 菜单ID
        /// 项目ID
        /// 按钮名称
        /// 
        public Model.ResponeData getIsHaveButtonPower(string userId, string menuId, string projectId,string buttonName)
        {
            var responeData = new Model.ResponeData();
            try
            {
                responeData.data = CommonService.GetAllButtonPowerList(projectId, userId, menuId, buttonName);
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }
            return responeData;
        }
        #endregion
        #region 获取当前人未读数量
        /// 
        /// 获取当前人未读数量
        /// 
        /// 菜单ID
        /// 菜单ID
        /// 用户id
        /// 
        public Model.ResponeData getMenuUnreadCount(string menuId, string projectId, string userId)
        {
            var responeData = new Model.ResponeData();
            try
            {
                responeData.data = APIUserService.getMenuUnreadCount(menuId, projectId, userId);
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }
            return responeData;
        }
        #endregion
        #region 保存浏览记录
        /// 
        /// 保存浏览记录
        /// 
        /// 菜单ID
        /// 菜单ID
        /// 用户id
        /// 主键ID
        /// 
        public Model.ResponeData getSaveUserRead(string menuId, string projectId, string userId, string dataId)
        {
            var responeData = new Model.ResponeData();
            try
            {
                APIUserService.getSaveUserRead(menuId, projectId, userId, dataId);
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }
            return responeData;
        }
        #endregion
        #region 根据人员ID获取下一步办理人
        /// 
        /// 根据人员ID获取下一步办理人
        /// 
        /// 
        /// 
        /// 
        /// 
        public Model.ResponeData getUserByProjectIdUserIdsQuery(string projectId, string userIds, string strParam)
        {
            var responeData = new Model.ResponeData();
            try
            {
                responeData.data = APIUserService.getUserByProjectIdUserIdsQuery(projectId, userIds, strParam);
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }
            return responeData;
        }
        #endregion
        #region 根据受检单位项目id获取参加检查人员
        /// 
        /// 根据受检单位项目id获取参加检查人员(项目HSE经理、HSE工程师、 HSSE副经理、受检单位的分包商HSE经理、分包商HSE工程师)
        /// 
        /// 
        /// 
        /// 
        public Model.ResponeData getCheckUserByProjectIdAndUnitid(string projectId,string unitid) {
            var responeData = new Model.ResponeData();
            try
            {
                responeData.data = APIUserService.getCheckUserByProjectIdAndUnitid(projectId, unitid);
            }
            catch (Exception ex)
            {
                responeData.code = 0;
                responeData.message = ex.Message;
            }
            return responeData;
        }
        #endregion
    }
}