public async Task <DownloadViewModel> Map(DownloadRequest request) { var downloadViewModel = new DownloadViewModel(); var getApprenticeshipsRequest = new GetApprenticeshipsRequest { ProviderId = request.ProviderId, SearchTerm = request.SearchTerm, EmployerName = request.SelectedEmployer, CourseName = request.SelectedCourse, Status = request.SelectedStatus, StartDate = request.SelectedStartDate, EndDate = request.SelectedEndDate, Alert = request.SelectedAlert, ApprenticeConfirmationStatus = request.SelectedApprenticeConfirmation, PageNumber = 0 }; var csvModel = new ApprenticeshipDetailsCsvModel(); var result = await _client.GetApprenticeships(getApprenticeshipsRequest); var csvContent = result.Apprenticeships.Select(c => csvModel.Map(c, _encodingService)).ToList(); downloadViewModel.Content = _createCsvService.GenerateCsvContent(csvContent, true); downloadViewModel.Request = getApprenticeshipsRequest; downloadViewModel.Name = $"{"Manageyourapprentices"}_{_currentDateTime.UtcNow:yyyyMMddhhmmss}.csv"; return(await Task.FromResult(downloadViewModel)); }
public async Task <GetApprenticeshipsQueryResult> Handle(GetApprenticeshipsQuery request, CancellationToken cancellationToken) { var courses = await _courseLookupService.GetAllCourses(); var apiRequest = new GetApprenticeshipsRequest(request.AccountId, request.Status, request.PageNumber, request.PageItemCount); var response = await _commitmentsV2Api.Get <GetApprenticeshipsResponse>(apiRequest); return(new GetApprenticeshipsQueryResult { TotalApprenticeshipsFound = response.TotalApprenticeshipsFound, Apprenticeships = response.Apprenticeships.Select(a => new GetApprenticeshipsQueryResult.Apprenticeship { Id = a.Id, TransferSenderId = a.TransferSenderId, Uln = a.Uln, ProviderId = a.ProviderId, ProviderName = a.ProviderName, FirstName = a.FirstName, LastName = a.LastName, CourseCode = a.CourseCode, CourseName = a.CourseName, CourseLevel = courses.FirstOrDefault(x => x.Id == a.CourseCode)?.Level ?? 0, StartDate = a.StartDate, EndDate = a.EndDate, Cost = a.Cost, PledgeApplicationId = a.PledgeApplicationId, HasHadDataLockSuccess = a.HasHadDataLockSuccess }) }); }
public void Then_The_GetUrl_Is_Correctly_Built(long accountId, long employerAccountId, DateTime startDateFrom, DateTime startDateTo) { var actual = new GetApprenticeshipsRequest(accountId, employerAccountId, startDateFrom, startDateTo); actual.GetUrl.Should() .Be($"api/apprenticeships?accountId={accountId}&accountLegalEntityId={employerAccountId}&startDateRangeFrom={WebUtility.UrlEncode(startDateFrom.ToString("u"))}&startDateRangeTo={WebUtility.UrlEncode(startDateTo.ToString("u"))}"); }
public async Task <DownloadViewModel> Map(DownloadRequest request) { var decodedAccountId = _encodingService.Decode(request.AccountHashedId, EncodingType.AccountId); var downloadViewModel = new DownloadViewModel(); var getApprenticeshipsRequest = new GetApprenticeshipsRequest { AccountId = decodedAccountId, SearchTerm = request.SearchTerm, ProviderName = request.SelectedProvider, CourseName = request.SelectedCourse, Status = request.SelectedStatus, EndDate = request.SelectedEndDate, PageNumber = 0 }; var result = await _client.GetApprenticeships(getApprenticeshipsRequest); var csvContent = result.Apprenticeships.Select(c => (ApprenticeshipDetailsCsvModel)c).ToList(); downloadViewModel.Content = _createCsvService.GenerateCsvContent(csvContent, true); downloadViewModel.Request = getApprenticeshipsRequest; downloadViewModel.Name = $"{"Manageyourapprentices"}_{_currentDateTime.UtcNow:yyyyMMddhhmmss}.csv"; return(await Task.FromResult(downloadViewModel)); }
private static string CreateFilterQuery(GetApprenticeshipsRequest request) { var filterQuery = string.Empty; if (!string.IsNullOrEmpty(request.SearchTerm)) { filterQuery += $"&searchTerm={WebUtility.UrlEncode(request.SearchTerm)}"; } if (!string.IsNullOrEmpty(request.EmployerName)) { filterQuery += $"&employerName={WebUtility.UrlEncode(request.EmployerName)}"; } if (!string.IsNullOrEmpty(request.ProviderName)) { filterQuery += $"&providerName={WebUtility.UrlEncode(request.ProviderName)}"; } if (!string.IsNullOrEmpty(request.CourseName)) { filterQuery += $"&courseName={WebUtility.UrlEncode(request.CourseName)}"; } if (request.Status.HasValue) { filterQuery += $"&status={WebUtility.UrlEncode(request.Status.Value.ToString())}"; } if (request.StartDate.HasValue) { filterQuery += $"&startDate={WebUtility.UrlEncode(request.StartDate.Value.ToString("u"))}"; } if (request.EndDate.HasValue) { filterQuery += $"&endDate={WebUtility.UrlEncode(request.EndDate.Value.ToString("u"))}"; } if (request.AccountLegalEntityId.HasValue) { filterQuery += $"&accountLegalEntityId={request.AccountLegalEntityId.Value}"; } if (request.StartDateRangeFrom.HasValue) { filterQuery += $"&startDateRangeFrom={WebUtility.UrlEncode(request.StartDateRangeFrom.Value.ToString("u"))}"; } if (request.StartDateRangeTo.HasValue) { filterQuery += $"&startDateRangeTo={WebUtility.UrlEncode(request.StartDateRangeTo.Value.ToString("u"))}"; } return(filterQuery); }
private static string CreateSortFieldQuery(GetApprenticeshipsRequest request) { var sortField = ""; if (!string.IsNullOrEmpty(request.SortField)) { sortField = $"&sortField={request.SortField}"; } return(sortField); }
public void GetApprenticeships_WillThrowExceptionIfBothProviderIdAndEmployerAccountIdAreUsed() { //Arrange var request = new GetApprenticeshipsRequest { ProviderId = 11, AccountId = 10, }; //Act Assert.ThrowsAsync <NotSupportedException>(() => _fixture.CommitmentsApiClient.GetApprenticeships(request)); }
public async Task GetApprenticeshipsForEmployer_VerifyUrlAndDataIsCorrectPassedIn() { //Arrange var request = new GetApprenticeshipsRequest { AccountId = 10, }; //Act await _fixture.CommitmentsApiClient.GetApprenticeships(request); //Assert _fixture.MockRestHttpClient.Verify(x => x.Get <GetApprenticeshipsResponse>($"api/apprenticeships/?accountId={request.AccountId}&reverseSort=False", null, CancellationToken.None)); }
public async Task GetApprenticeships_VerifyUrlAndDataIsCorrectPassedWithAdditionalFilter() { //Arrange var request = new GetApprenticeshipsRequest { ProviderId = 10, SortField = "test" }; //Act await _fixture.CommitmentsApiClient.GetApprenticeships(request); //Assert _fixture.MockRestHttpClient.Verify(x => x.Get <GetApprenticeshipsResponse>($"api/apprenticeships/?providerId={request.ProviderId}&reverseSort=False&sortField={request.SortField}", null, CancellationToken.None)); }
public async Task GetApprenticeships_VerifyUrlAndPagItemCountIsCorrectPassedIn() { //Arrange var request = new GetApprenticeshipsRequest { ProviderId = 10, PageItemCount = 3 }; //Act await _fixture.CommitmentsApiClient.GetApprenticeships(request); //Assert$ _fixture.MockRestHttpClient.Verify(x => x.Get <GetApprenticeshipsResponse>( $"api/apprenticeships/?providerId={request.ProviderId}&reverseSort=False&pageItemCount={request.PageItemCount}", null, CancellationToken.None)); }
public async Task <IActionResult> GetApprenticeships([FromQuery] GetApprenticeshipsRequest request) { try { var filterValues = new ApprenticeshipSearchFilters { SearchTerm = request.SearchTerm, EmployerName = request.EmployerName, CourseName = request.CourseName, Status = request.Status, StartDate = request.StartDate, EndDate = request.EndDate, ProviderName = request.ProviderName, AccountLegalEntityId = request.AccountLegalEntityId, StartDateRange = new DateRange { From = request.StartDateRangeFrom, To = request.StartDateRangeTo } }; var queryResult = await _mediator.Send(new GetApprenticeshipsQuery { EmployerAccountId = request.AccountId, ProviderId = request.ProviderId, PageNumber = request.PageNumber, PageItemCount = request.PageItemCount, SortField = request.SortField, ReverseSort = request.ReverseSort, SearchFilters = filterValues }); if (queryResult == null) { return(NotFound()); } var response = await _modelMapper.Map <GetApprenticeshipsResponse>(queryResult); return(Ok(response)); } catch (Exception e) { _logger.LogError(e, e.Message); throw; } }
private static string CreatePageQuery(GetApprenticeshipsRequest request) { var pageQuery = string.Empty; if (request.PageNumber > 0) { pageQuery += $"pageNumber={request.PageNumber}"; } if (request.PageItemCount > 0) { pageQuery += $"{(!string.IsNullOrEmpty(pageQuery) ? "&" : "")}pageItemCount={request.PageItemCount}"; } if (!string.IsNullOrEmpty(pageQuery)) { pageQuery = $"&{pageQuery}"; } return(pageQuery); }
public Task <GetApprenticeshipsResponse> GetApprenticeships(GetApprenticeshipsRequest request, CancellationToken cancellationToken = default) { if (request.ProviderId.HasValue && request.AccountId.HasValue) { throw new NotSupportedException("Api currently does not support both a provider Id and employer account Id lookup for apprentices."); } var pageQuery = CreatePageQuery(request); var sortField = CreateSortFieldQuery(request); var filterQuery = CreateFilterQuery(request); if (request.ProviderId.HasValue) { return(_client.Get <GetApprenticeshipsResponse>( $"api/apprenticeships/?providerId={request.ProviderId}&reverseSort={request.ReverseSort}{sortField}{filterQuery}{pageQuery}", null, cancellationToken)); } return(_client.Get <GetApprenticeshipsResponse>( $"api/apprenticeships/?accountId={request.AccountId}&reverseSort={request.ReverseSort}{sortField}{filterQuery}{pageQuery}", null, cancellationToken)); }
public async Task GetApprenticeships_VerifyUrlAndDataIsCorrectWhenPassingFilterValues() { //Arrange var request = new GetApprenticeshipsRequest { ProviderId = 10, SearchTerm = "photon chocolate search termses", EmployerName = "Test corp", ProviderName = "Test Provider", CourseName = "Test course", Status = ApprenticeshipStatus.Completed, StartDate = DateTime.Now.AddDays(2), EndDate = DateTime.Now.AddDays(4), AccountLegalEntityId = 123, StartDateRangeFrom = DateTime.Now.AddDays(-1), StartDateRangeTo = DateTime.Now.AddDays(1) }; //Act await _fixture.CommitmentsApiClient.GetApprenticeships(request); //Assert$ _fixture.MockRestHttpClient.Verify(x => x.Get <GetApprenticeshipsResponse>( $"api/apprenticeships/?" + $"providerId={request.ProviderId}&" + $"reverseSort={request.ReverseSort}&" + $"searchTerm={WebUtility.UrlEncode(request.SearchTerm)}&" + $"employerName={WebUtility.UrlEncode(request.EmployerName)}&" + $"providerName={WebUtility.UrlEncode(request.ProviderName)}&" + $"courseName={WebUtility.UrlEncode(request.CourseName)}&" + $"status={WebUtility.UrlEncode(request.Status.Value.ToString())}&" + $"startDate={WebUtility.UrlEncode(request.StartDate.Value.ToString("u"))}&" + $"endDate={WebUtility.UrlEncode(request.EndDate.Value.ToString("u"))}&" + $"accountLegalEntityId={request.AccountLegalEntityId.Value}&" + $"startDateRangeFrom={WebUtility.UrlEncode(request.StartDateRangeFrom.Value.ToString("u"))}&" + $"startDateRangeTo={WebUtility.UrlEncode(request.StartDateRangeTo.Value.ToString("u"))}", null, CancellationToken.None)); }