public async Task <ActionResult> GetUniversities([FromQuery] UniversityResourceParameters pagedResourceParameters, CancellationToken ct) { var universityDtos = await _universityService.GetUniversitiesAsync(pagedResourceParameters, ct); var previousPageLink = universityDtos.HasPrevious ? CreateUniversitiesResourceUri(pagedResourceParameters, Enums.ResourceUriType.PreviousPage) : null; var nextPageLink = universityDtos.HasNext ? CreateUniversitiesResourceUri(pagedResourceParameters, Enums.ResourceUriType.NextPage) : null; var paginationMetadata = new { totalCount = universityDtos.TotalCount, pageSize = universityDtos.PageSize, currentPage = universityDtos.CurrentPage, totalPages = universityDtos.TotalPages, previousPageLink, nextPageLink }; if (universityDtos == null) { return(NotFound()); } Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(paginationMetadata)); return(Ok(universityDtos)); }
private string CreateUniversitiesResourceUri(UniversityResourceParameters pagedResourceParameters, Enums.ResourceUriType type) { switch (type) { case Enums.ResourceUriType.PreviousPage: return(_linkGenerator.GetUriByName(this.HttpContext, "GetUniversities", new { /*name = pagedResourceParameters.Name*/ searchQuery = pagedResourceParameters.SearchQuery, pageNumber = pagedResourceParameters.PageNumber - 1, pageSize = pagedResourceParameters.PageSize })); // TODO get the aboslute path case Enums.ResourceUriType.NextPage: return(_linkGenerator.GetUriByName(this.HttpContext, "GetUniversities", new { /*name = pagedResourceParameters.Name,*/ searchQuery = pagedResourceParameters.SearchQuery, pageNumber = pagedResourceParameters.PageNumber + 1, pageSize = pagedResourceParameters.PageSize })); default: return(_linkGenerator.GetUriByName(this.HttpContext, "GetUniversities", new { /*name = pagedResourceParameters.Name,*/ searchQuery = pagedResourceParameters.SearchQuery, pageNumber = pagedResourceParameters.PageNumber, pageSize = pagedResourceParameters.PageSize })); } }
public async Task <PagedList <UniversityDto> > GetUniversitiesAsync(UniversityResourceParameters resourceParameters, CancellationToken ct) { var universityEntities = _uow.Universities.GetAll(); /*if (!string.IsNullOrEmpty(resourceParameters.Name)) * { * if (Enum.TryParse(resourceParameters.Name, true, out UniversityName name)) * { * universityEntities = universityEntities.Where(a => a.Name == name); * } * }*/ if (!string.IsNullOrEmpty(resourceParameters.SearchQuery)) { var searchQueryForWhereClause = resourceParameters.SearchQuery.Trim().ToLowerInvariant(); universityEntities = universityEntities .Where(a => a.Name.ToLowerInvariant().Contains(searchQueryForWhereClause) ); } var pagedListEntities = await PagedList <University> .CreateAsync(universityEntities, resourceParameters.PageNumber, resourceParameters.PageSize, ct); var result = _mapper.Map <PagedList <UniversityDto> >(pagedListEntities); result.TotalCount = pagedListEntities.TotalCount; result.TotalPages = pagedListEntities.TotalPages; result.CurrentPage = pagedListEntities.CurrentPage; result.PageSize = pagedListEntities.PageSize; return(result); }
public void setUp() { obj = new UniversitiesController(_linkGenerator, _logger, _universityService); id = new Guid("1B7F86DD-FCD0-42A5-5E5F-08D7D5A16E26"); repository = new UniversityRepository(dbContext); source = new CancellationTokenSource(); token = source.Token; pagedResourceParameters = new UniversityResourceParameters(); context = new ActionContext(); universityDto = new UniversityDto(); //serviceProvider var serviceCollection = new ServiceCollection(); //serviceCollection.AddSingleton<IUniversityService, UniversityService>(); //serviceCollection.AddTransient<University>(); serviceCollection.AddTransient <IInstitutionService, InstitutionService>(); _serviceProvider = serviceCollection.BuildServiceProvider(); //-------------------------------------------------------------- uow = new UnitOfWork(dbContext, _serviceProvider); //logger var loggerFactory = LoggerFactory.Create(builder => { builder .AddFilter("Microsoft", LogLevel.Warning) .AddFilter("System", LogLevel.Warning) .AddFilter("LoggingConsoleApp.University", LogLevel.Debug) .AddConsole() .AddEventLog(); }); logger = loggerFactory.CreateLogger <UniversityService>(); logger.LogInformation("Example log message"); //------------------------------------------------------------------ _mapper = new MapperConfiguration(mc => { mc.AddProfile(new MappingProfile()); }).CreateMapper(); universityService = new UniversityService(uow, _mapper, logger); }
public void InitializeTestData() { //Setup test data expectedUniversities = GetExpectedUniversities(); //Arrange mockUniversityService = new Mock <IUniversityService>(); universitiesController = new UniversitiesController(_linkGenerator, _logger, _universityService); //var serviceProviderGet = serviceProvider.GetRequiredService<IUniversityService>(); uow = new UnitOfWork(dbContext, serviceProvider); //universityService = new UniversityService(uow, mapper, logger); //iuniversityService = new UniversityService(uow, mapper, logger); _mockUnitOfWork = new Mock <IUnitOfWork>(); _mockLogger = new Mock <ILogger <UniversityService> >(); _mapper = new MapperConfiguration(mc => { mc.AddProfile(new MappingProfile()); }).CreateMapper(); _universityService = new UniversityService(_mockUnitOfWork.Object, _mapper, _mockLogger.Object); //Setup source = new CancellationTokenSource(); token = source.Token; pagedResourceParameters = new UniversityResourceParameters(); //var expectedUniversitiesTask = expectedUniversitiesAsync(); mockUniversityService.Setup(m => m.GetUniversitiesAsync(pagedResourceParameters, token)).ReturnsAsync(expectedUniversities); //mockUnitOfWork.Setup(mo => mo.Universities).Returns(Universities); //mockUnitOfWork.Setup(_mockUnitOfWork => _mockUnitOfWork.Universities.GetAsync(mockUniversityDto.Id, It.IsAny<CancellationToken>())).Returns(Task.FromResult(mockUniversity)); /*mockUniversityService.Setup(m => m.CreateUniversityAsync(It.IsAny<CreateUniversityDto>(),token)).Returns( * (UniversityDto target) => * { * expectedUniversities.Add(target); * * return expectedUniversities; * });*/ /*mockProductRepository.Setup(m => m.UpdateProduct(It.IsAny<ProductJSON>())).Returns( * (ProductJSON target) => * { * var product = expectedProducts.Where(p => p.Id == target.Id).FirstOrDefault(); * * if (product == null) * { * return false; * } * * product.Name = target.Name; * product.Category = target.Category; * product.Price = target.Price; * * return true; * }); * * mockProductRepository.Setup(m => m.Delete(It.IsAny<int>())).Returns( * (int productId) => * { * var product = expectedProducts.Where(p => p.Id == productId).FirstOrDefault(); * * if (product == null) * { * return false; * } * * expectedProducts.Remove(product); * * return true; * });*/ }