using AutoMapper;
using OASystem.Domain;
using OASystem.Domain.Entities.System;
using OASystem.Domain.ViewModels.System;
using StackExchange.Redis;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OASystem.Infrastructure.Repositories.System
{
    public class UsersRepository : BaseRepository<UserInfo, JsonView>
    {
        private readonly IMapper _mapper;
        public UsersRepository(SqlSugarClient sqlSugar, IMapper mapper) : base(sqlSugar)
        {
            _mapper = mapper;
        }

        /// <summary>
        /// 用户查询列表
        /// </summary>
        /// <param name="_userRep"></param>
        /// <returns></returns>
        public async Task<Result> GetUserList(int portType,string sqlWhere)
        {
            Result result = new Result() { Code = -2 };
            
            //List<UserInfoWebView> _userList = _sqlSugar.Queryable<Sys_Users>()
            //    .InnerJoin<Sys_Company>((u, c) => u.CompanyId == c.Id) //若是多个条件 用 &&
            //    .InnerJoin<Sys_Department>((u, c, d) => u.DepId == d.Id)
            //    .InnerJoin<Sys_JobPost>((u, c, d, j) => u.JobPostId == j.Id)
            //    .Where((u) => u.Id == 208)
            //    .Select
            //    ((u, c, d, j) => new UserInfoWebView
            //    { 
            //        Number = u.Number,
            //        CompanyId = u.CompanyId, 
            //        CompanyName = c.CompanyName, 
            //        DepId=u.DepId,
            //        DepName = d.DepName,
            //        JobPostId = u.JobPostId,
            //        JobName = j.JobName,
            //        Id = u.Id,
            //        CnName = u.CnName,
            //        Phone = u.Phone,
            //        UrgentPhone = u.UrgentPhone,
            //        Ext =u.Ext,
            //        Email = u.Email,
            //    })
            //    .ToList();


            if (portType == 1) //web
            {

                //string userSqlWhere = string.Format(@"Select su.CompanyId, sc.CompanyName,su.DepId,sd.DepName,su.JobPostId,
                //                                  	     sjp.JobName,su.Id UserId,su.CnName,su.Phone,su.UrgentPhone,su.Email
                //                                      From Sys_Users su 
                //                                      Inner Join Sys_Company sc On su.CompanyId = sc.Id
                //                                      Inner Join Sys_Department sd On su.DepId = sd.Id
                //                                      Inner Join Sys_JobPost sjp On su.JobPostId = sjp.Id {0}", sqlWhere);
                //var _userList = await _sqlSugar.SqlQueryable<UserInfoWebView>(userSqlWhere).ToListAsync();

                //if (_userList.Count != 0)
                //{
                //    result.Code = 0;
                //    result.Msg = "成功!";
                //    result.Data = _userList;
                //}
                //else
                //{
                //    result.Msg = "暂无数据!";
                //}
            }
            else if (portType == 2) //Android
            {
                //List<UserView> _userDataList = _mapper.Map<List<UserView>>(_userList);
                //if (_userDataList.Count != 0)
                //{
                //    result.Code = 0;
                //    result.Msg = "成功!";
                //    result.Data = _userDataList;
                //}
                //else
                //{
                //    result.Msg = "暂无数据!";
                //}
            }
            else if (portType == 3) //IOS
            {
            }
            else
            {
                result.Msg = "暂无数据!";
            } 
            
            return result;
        }
    }
}