示例#1
0
        public async Task <ICollection <Doctor> > GetDoctorAsync(
            DoctorsFilter filter        = null,
            PaginationFilter pagination = null)
        {
            if (pagination != null && filter != null)
            {
                return(await _repositoryWrapper.DoctorRepository.GetAsync(filter : Filter(filter),
                                                                          include : c => c.Include(i => i.User)
                                                                          .Include(d => d.Position),
                                                                          pageNumber : pagination.PageNumber, pageSize : pagination.PageSize));
            }

            if (filter != null)
            {
                return(await _repositoryWrapper.DoctorRepository.GetAsync(filter : Filter(filter),
                                                                          include : c => c.Include(i => i.User)
                                                                          .Include(d => d.Position)));
            }

            if (pagination != null)
            {
                return(await _repositoryWrapper.DoctorRepository.GetAsync(
                           include : c => c.Include(i => i.User)
                           .Include(d => d.Position),
                           pageNumber : pagination.PageNumber, pageSize : pagination.PageSize));
            }

            var doctors = await _repositoryWrapper.DoctorRepository.GetAsync(
                include : c => c.Include(i => i.User)
                .Include(d => d.Position));

            return(doctors);
        }
        public async Task GetAll_Doctors_ReturnsTrue(
            [Frozen] List <Doctor> doctor,
            [Frozen] List <ReadDoctorDto> doctorDto,
            [Frozen] PaginationQuery paginationQuery,
            [Frozen] PaginationFilter paginationFilter,
            [Frozen] DoctorsFiltrationQuery query,
            [Frozen] DoctorsFilter filter
            )
        {
            // Arrange
            doctorServiceMock.Setup(m => m.GetDoctorAsync(filter, paginationFilter))
            .ReturnsAsync(doctor);
            mapper.Setup(m => m.Map <ICollection <ReadDoctorDto> >(doctor))
            .Returns(doctorDto);
            mapper.Setup(m => m.Map <PaginationFilter>(paginationQuery))
            .Returns(paginationFilter);
            mapper.Setup(m => m.Map <DoctorsFilter>(query))
            .Returns(filter);

            // Act
            var actualResult = await doctorController.GetAsync(query, paginationQuery);

            // Assert
            var result = actualResult as OkObjectResult;

            Assert.True(actualResult is OkObjectResult);
            doctorServiceMock.Verify(m => m.GetDoctorAsync(filter, paginationFilter), Times.Once);
        }
示例#3
0
        private static Expression <Func <Doctor, bool> > Filter(DoctorsFilter filter)
        {
            var expressionsList = new List <Expression <Func <Doctor, bool> > >();

            if (filter.PositionId != null)
            {
                Expression <Func <Doctor, bool> > positionFilter = a => a.PositionId == filter.PositionId;
                expressionsList.Add(positionFilter);
            }

            if (filter.UserId != null)
            {
                Expression <Func <Doctor, bool> > userFilter = a => a.UserId == filter.UserId;
                expressionsList.Add(userFilter);
            }

            if (filter.IsDeleted != null)
            {
                Expression <Func <Doctor, bool> > userFilter = a => a.User.IsDeleted == filter.IsDeleted.Value;
                expressionsList.Add(userFilter);
            }

            if (filter.IsDeleted == null)
            {
                Expression <Func <Doctor, bool> > userFilter = a => !a.User.IsDeleted;
                expressionsList.Add(userFilter);
            }

            if (filter.Name != null)
            {
                Expression <Func <Doctor, bool> > nameFilter = a => a.User.FirstName.ToUpper().StartsWith(filter.Name.ToUpper()) ||
                                                               a.User.LastName.ToUpper().StartsWith(filter.Name.ToUpper()) ||
                                                               (a.User.FirstName.ToUpper() + " " + a.User.LastName.ToUpper()).StartsWith(filter.Name.ToUpper()) ||
                                                               (a.User.LastName.ToUpper() + " " + a.User.FirstName.ToUpper()).StartsWith(filter.Name.ToUpper());
                expressionsList.Add(nameFilter);
            }

            Expression <Func <Doctor, bool> > expression = doctor => true;

            foreach (var exp in expressionsList)
            {
                expression = expression.AndAlso(exp);
            }

            return(expression);
        }
示例#4
0
        public async Task GetTotalCount_EqualCount([Frozen] List <Doctor> doctors,
                                                   DoctorsFilter filter,
                                                   [Frozen] Mock <IUserService> _userServiceMock,
                                                   [Frozen] Mock <IRepositoryWrapper> _repositoryMock,
                                                   [Frozen] Mock <RoleManager <IdentityRole> > _roleManagerMock)
        {
            // Arrange
            _repositoryMock.Setup(x => x.DoctorRepository
                                  .CountAsync(It.IsAny <Expression <Func <Doctor, bool> > >()))
            .ReturnsAsync(doctors.Count);
            var _doctorService = new DoctorService(_repositoryMock.Object, _userServiceMock.Object, _roleManagerMock.Object);

            // Act
            var actual = await _doctorService.GetTotalCount(filter);

            // Assert
            Assert.Equal(doctors.Count, actual);
            _repositoryMock.Verify(m => m.DoctorRepository
                                   .CountAsync(It.IsAny <Expression <Func <Doctor, bool> > >()),
                                   Times.Once);
        }
        public IActionResult Index(DoctorsFilter filter = null)
        {
            try
            {
                var doctors = _doctorsRepository.getQueryable();

                if (!string.IsNullOrWhiteSpace(filter.title))
                {
                    doctors = doctors.Where(a => a.name.Contains(filter.title));
                }

                ViewBag.pagerInfo = _paginatedMetaService.GetMetaData(doctors.Count(), filter.page, filter.number_of_rows);

                doctors = doctors.Skip(filter.number_of_rows * (filter.page - 1)).Take(filter.number_of_rows);

                return(View(doctors.OrderByDescending(a => a.doctor_id).ToList()));
            }

            catch (Exception ex)
            {
                AlertHelper.setMessage(this, ex.Message, messageType.error);
                return(Redirect("/admin"));
            }
        }
示例#6
0
 public async Task <int> GetTotalCount(DoctorsFilter filter = null)
 {
     return(await _repositoryWrapper.DoctorRepository.CountAsync(Filter(filter)));
 }