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
                })
            });
        }
Пример #3
0
        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));
        }
Пример #5
0
        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);
        }
Пример #6
0
        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));
        }
Пример #11
0
        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;
            }
        }
Пример #12
0
        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);
        }
Пример #13
0
        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));
        }