public void Then_Maps_TotalAgreedPrice(
            GetApprenticeshipsResponse.ApprenticeshipDetailsResponse source)
        {
            ApprenticeshipDetailsCsvModel result = source;

            result.TotalAgreedPrice.Should().Be($"{source.TotalAgreedPrice.Value as object:n0}");
        }
        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 void Then_Maps_CourseName(
            GetApprenticeshipsResponse.ApprenticeshipDetailsResponse source)
        {
            ApprenticeshipDetailsCsvModel result = source;

            result.CourseName.Should().Be(source.CourseName);
        }
        public void Then_Maps_ApprenticeName(
            GetApprenticeshipsResponse.ApprenticeshipDetailsResponse source)
        {
            ApprenticeshipDetailsCsvModel result = source;

            result.ApprenticeName.Should().Be($"{source.FirstName} {source.LastName}");
        }
        public void Then_Maps_ProviderName(
            GetApprenticeshipsResponse.ApprenticeshipDetailsResponse source)
        {
            ApprenticeshipDetailsCsvModel result = source;

            result.Provider.Should().Be(source.ProviderName);
        }
        public void Then_Maps_Your_Reference(
            GetApprenticeshipsResponse.ApprenticeshipDetailsResponse source)
        {
            ApprenticeshipDetailsCsvModel result = source;

            result.EmployerRef.Should().Be(source.EmployerRef);
        }
        public void Then_Maps_Uln(
            GetApprenticeshipsResponse.ApprenticeshipDetailsResponse source)
        {
            ApprenticeshipDetailsCsvModel result = source;

            result.Uln.Should().Be(source.Uln);
        }
        public void Then_Maps_Status(
            GetApprenticeshipsResponse.ApprenticeshipDetailsResponse source)
        {
            ApprenticeshipDetailsCsvModel result = source;

            result.Status.Should().Be(source.ApprenticeshipStatus.GetDescription());
        }
        public void Then_Maps_Reference(
            GetApprenticeshipsResponse.ApprenticeshipDetailsResponse source)
        {
            ApprenticeshipDetailsCsvModel result = source;

            result.CohortReference.Should().Be(source.CohortReference);
        }
        public void Then_Maps_PausedDate(
            GetApprenticeshipsResponse.ApprenticeshipDetailsResponse source)
        {
            ApprenticeshipDetailsCsvModel result = source;

            result.PausedDate.Should().Be(source.PauseDate.ToString("MMM yyyy"));
        }
        public void Then_Maps_Empty_If_No_PausedDate(
            GetApprenticeshipsResponse.ApprenticeshipDetailsResponse source)
        {
            source.PauseDate = DateTime.MinValue;
            ApprenticeshipDetailsCsvModel result = source;

            result.PausedDate.Should().BeEmpty();
        }
        public void Then_Maps_ApprenticeConfirmation(GetApprenticeshipsResponse.ApprenticeshipDetailsResponse source,
                                                     [Frozen] Mock <IEncodingService> encodingService,
                                                     ApprenticeshipDetailsCsvModel model)
        {
            var result = model.Map(source, encodingService.Object);

            result.ApprenticeConfirmation.Should().Be(source.ConfirmationStatus.GetDescription());
        }
        public void Then_Maps_Your_Reference(
            GetApprenticeshipsResponse.ApprenticeshipDetailsResponse source,
            [Frozen] Mock <IEncodingService> encodingService,
            ApprenticeshipDetailsCsvModel model)
        {
            var result = model.Map(source, encodingService.Object);

            result.ProviderRef.Should().Be(source.ProviderRef);
        }
        public void Then_Maps_Null_ApprenticeConfirmation(
            GetApprenticeshipsResponse.ApprenticeshipDetailsResponse source)
        {
            source.ConfirmationStatus = null;

            ApprenticeshipDetailsCsvModel result = source;

            result.ApprenticeConfirmation.Should().Be("N/A");
        }
        public void Then_Maps_PausedDate(
            GetApprenticeshipsResponse.ApprenticeshipDetailsResponse source,
            [Frozen] Mock <IEncodingService> encodingService,
            ApprenticeshipDetailsCsvModel model)
        {
            var result = model.Map(source, encodingService.Object);

            result.PausedDate.Should().Be(source.PauseDate.ToString("MMM yyyy"));
        }
        public void Then_Maps_CourseName(
            GetApprenticeshipsResponse.ApprenticeshipDetailsResponse source,
            [Frozen] Mock <IEncodingService> encodingService,
            ApprenticeshipDetailsCsvModel model)
        {
            var result = model.Map(source, encodingService.Object);

            result.CourseName.Should().Be(source.CourseName);
        }
        public void Then_Maps_TotalAgreedPrice(
            GetApprenticeshipsResponse.ApprenticeshipDetailsResponse source,
            [Frozen] Mock <IEncodingService> encodingService,
            ApprenticeshipDetailsCsvModel model)
        {
            var result = model.Map(source, encodingService.Object);

            result.TotalAgreedPrice.Should().Be($"{source.TotalAgreedPrice.Value as object:n0}");
        }
        public void Then_Maps_Empty_If_No_PausedDate(
            GetApprenticeshipsResponse.ApprenticeshipDetailsResponse source,
            [Frozen] Mock <IEncodingService> encodingService,
            ApprenticeshipDetailsCsvModel model)
        {
            source.PauseDate = DateTime.MinValue;
            var result = model.Map(source, encodingService.Object);

            result.PausedDate.Should().BeEmpty();
        }
        public void Then_Maps_AgreementId(
            string agreementId,
            GetApprenticeshipsResponse.ApprenticeshipDetailsResponse source,
            [Frozen] Mock <IEncodingService> encodingService,
            ApprenticeshipDetailsCsvModel model)
        {
            encodingService.Setup(x => x.Encode(source.AccountLegalEntityId, EncodingType.PublicAccountLegalEntityId)).Returns(agreementId);
            var result = model.Map(source, encodingService.Object);

            result.AgreementId.Should().Be(agreementId);
        }
        public void Then_Maps_Alerts(
            GetApprenticeshipsResponse.ApprenticeshipDetailsResponse source)
        {
            var expectedAlertString = string.Empty;

            foreach (var alert in source.Alerts)
            {
                expectedAlertString += alert.GetDescription() + "|";
            }
            expectedAlertString = expectedAlertString.TrimEnd('|');

            ApprenticeshipDetailsCsvModel result = source;

            result.Alerts.Should().Be(expectedAlertString);
        }
        public void Then_Maps_Alerts(
            GetApprenticeshipsResponse.ApprenticeshipDetailsResponse source,
            [Frozen] Mock <IEncodingService> encodingService,
            ApprenticeshipDetailsCsvModel model)
        {
            var expectedAlertString = string.Empty;

            foreach (var alert in source.Alerts)
            {
                expectedAlertString += alert.GetDescription() + "|";
            }
            expectedAlertString = expectedAlertString.TrimEnd('|');

            var result = model.Map(source, encodingService.Object);

            result.Alerts.Should().Be(expectedAlertString);
        }
        public void Then_Maps_DateOfBirth(GetApprenticeshipsResponse.ApprenticeshipDetailsResponse source)
        {
            ApprenticeshipDetailsCsvModel result = source;

            result.DateOfBirth.Should().Be(source.DateOfBirth.ToString("d MMM yyyy"));
        }