/// <summary>
        /// 根据医护人员搜索输入分页获取医护人员列表
        /// </summary>
        /// <param name="input">医护人员搜索输入</param>
        /// <returns>医护人员列表</returns>
        public async Task <Tuple <List <DoctorViewDto>, int> > GetDoctorPageList(DoctorSearchInput input)
        {
            var result = await _repository.GetDoctorPageList(input);

            var tuple = new Tuple <List <DoctorViewDto>, int>(Mapper.Map <List <Doctor>, List <DoctorViewDto> >(result.Item1), result.Item2);

            return(tuple);
        }
        /// <summary>
        /// 首页
        /// </summary>
        /// <returns></returns>
        public async Task <IActionResult> Index(int pageIndex = 1, long hospitalId = -1)
        {
            await ShowHospitalList(true);

            var search = new DoctorSearchInput {
                HospitalId = hospitalId, PageIndex = pageIndex
            };

            return(View(search));
        }
        /// <summary>
        /// 医生列表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public async Task <IActionResult> List(DoctorSearchInput input)
        {
            var model = new Page <DoctorViewDto>();

            if (CurrentLoginUser.HospitalId.HasValue)
            {
                input.HospitalId = CurrentLoginUser.HospitalId.Value;
            }
            var items = await _service.GetDoctorPageList(input);

            model.CurrentPage  = input.PageIndex;
            model.TotalRecords = items.Item2;
            model.Items        = items.Item1;

            ViewBag.HospitalId = input.HospitalId;

            return(PartialView("_ListPartial", model));
        }
        /// <summary>
        /// 根据医护人员搜索输入分页获取医护人员实体列表
        /// </summary>
        /// <param name="input">医护人员搜索输入</param>
        /// <returns>医护人员实体列表</returns>
        public async Task <Tuple <List <Doctor>, int> > GetDoctorPageList(DoctorSearchInput input)
        {
            var query = _context.Doctor.Include(i => i.Hospital).AsQueryable();

            if (!string.IsNullOrEmpty(input.Name))
            {
                query = query.Where(i => i.Name.Contains(input.Name));
            }
            if (!string.IsNullOrEmpty(input.Phone))
            {
                query = query.Where(i => i.Phone.Contains(input.Phone));
            }
            if (input.Sex != -1)
            {
                query = query.Where(i => i.Sex == input.Sex);
            }
            if (input.UserType != -1)
            {
                query = query.Where(i => i.UserType == input.UserType);
            }
            if (input.HospitalId != -1)
            {
                query = query.Where(i => i.HospitalId == input.HospitalId);
            }
            if (input.DeptId != -1)
            {
                query = query.Where(i => i.DeptId == input.DeptId);
            }
            if (input.TitleId != -1)
            {
                query = query.Where(i => i.TitleId == input.TitleId);
            }

            int total      = query.Count();
            var doctorList = await query.OrderBy(i => i.Id).Skip(input.PageSize * (input.PageIndex - 1)).Take(input.PageSize).ToListAsync();

            return(new Tuple <List <Doctor>, int>(doctorList, total));
        }