private static ApprenticeshipApplicationDetail CreateApplicationDetail(
     Candidate candidate, ApprenticeshipVacancyDetail vacancyDetails, ApplicationStatuses applicationStatus, ApplicationTemplate applicationTemplate)
 {
     return(new ApprenticeshipApplicationDetail
     {
         EntityId = Guid.NewGuid(),
         Status = applicationStatus,
         DateCreated = DateTime.UtcNow,
         CandidateId = candidate.EntityId,
         CandidateDetails = Mapper.Map <RegistrationDetails, RegistrationDetails>(candidate.RegistrationDetails),
         VacancyStatus = vacancyDetails.VacancyStatus,
         Vacancy = new ApprenticeshipSummary
         {
             Id = vacancyDetails.Id,
             VacancyReference = vacancyDetails.VacancyReference,
             Title = vacancyDetails.Title,
             EmployerName = vacancyDetails.IsEmployerAnonymous ? vacancyDetails.AnonymousEmployerName : vacancyDetails.EmployerName,
             IsPositiveAboutDisability = vacancyDetails.IsPositiveAboutDisability,
             StartDate = vacancyDetails.StartDate,
             ClosingDate = vacancyDetails.ClosingDate,
             Description = vacancyDetails.IsEmployerAnonymous ? vacancyDetails.AnonymousAboutTheEmployer : vacancyDetails.EmployerDescription,
             NumberOfPositions = vacancyDetails.NumberOfPositions,
             Location = null, // NOTE: no equivalent in legacy vacancy details.
             VacancyLocationType = vacancyDetails.VacancyLocationType,
         },
         // Populate apprenticeshipApplication template with candidate's most recent information.
         CandidateInformation = applicationTemplate
     });
 }
        public void ShouldTryParseWageDescriptionIfWageTypeIsText()
        {
            var vacancyDetail = new ApprenticeshipVacancyDetail
            {
                Wage = new Wage(WageType.LegacyText, null, null, null, "123.45678", WageUnit.NotApplicable, null, null)
            };

            var model = new ApprenticeshipCandidateWebMappers().Map <ApprenticeshipVacancyDetail, ApprenticeshipVacancyDetailViewModel>(vacancyDetail);

            model.Should().NotBeNull();
            WagePresenter.GetDisplayAmount(model.Wage.Type, model.Wage.Amount, model.Wage.AmountLowerBound, model.Wage.AmountUpperBound, model.Wage.Text, model.Wage.HoursPerWeek, null).Should().Be("£123.46");
        }
        public void ShouldShowWageIfWageTypeIsWeekly()
        {
            var vacancyDetail = new ApprenticeshipVacancyDetail
            {
                Wage = new Wage(WageType.LegacyWeekly, 101.19m, null, null, null, WageUnit.NotApplicable, null, null)
            };

            var          model        = new ApprenticeshipCandidateWebMappers().Map <ApprenticeshipVacancyDetail, ApprenticeshipVacancyDetailViewModel>(vacancyDetail);
            const string expectedWage = "£101.19";

            model.Should().NotBeNull();
            WagePresenter.GetDisplayAmount(model.Wage.Type, model.Wage.Amount, model.Wage.AmountLowerBound, model.Wage.AmountUpperBound, model.Wage.Text, model.Wage.HoursPerWeek, null).Should().Be(expectedWage);
        }
        public void ShouldShowWageDescriptionIfWageTypeIsText()
        {
            var vacancyDetail = new ApprenticeshipVacancyDetail
            {
                WageType        = WageType.Text,
                WageDescription = "Competetive"
            };

            var model = new ApprenticeshipCandidateWebMappers().Map <ApprenticeshipVacancyDetail, VacancyDetailViewModel>(vacancyDetail);

            model.Should().NotBeNull();
            model.Wage.Should().Be(vacancyDetail.WageDescription);
        }
        public void ShouldReturnTheEmployerWebsiteWithHttpIfItAlreadyHasIt()
        {
            var vacancyDetail = new ApprenticeshipVacancyDetail
            {
                EmployerWebsite = "http://wwww.someweb.com"
            };

            var model = new ApprenticeshipCandidateWebMappers().Map <ApprenticeshipVacancyDetail, VacancyDetailViewModel>(vacancyDetail);

            model.Should().NotBeNull();
            model.EmployerWebsite.Should().StartWith("http://");
            model.IsWellFormedEmployerWebsiteUrl.Should().Be(true);
        }
        public void ShouldNotAnonymiseEmployerNameIfEmployerHasNotOptedForAnonymity()
        {
            var vacancyDetail = new ApprenticeshipVacancyDetail
            {
                EmployerName        = "Acme Corp",
                IsEmployerAnonymous = false
            };

            var model = new ApprenticeshipCandidateWebMappers().Map <ApprenticeshipVacancyDetail, VacancyDetailViewModel>(vacancyDetail);

            model.Should().NotBeNull();
            model.EmployerName.Should().Be(vacancyDetail.EmployerName);
        }
        public void ShouldReturnRawStringIfVacancyUrlIsNotWellFormed()
        {
            var vacancyDetail = new ApprenticeshipVacancyDetail
            {
                VacancyUrl = "www.somedomain.co.uk / www.anotherdomain.co.uk"
            };

            var model = new ApprenticeshipCandidateWebMappers().Map <ApprenticeshipVacancyDetail, VacancyDetailViewModel>(vacancyDetail);

            model.Should().NotBeNull();
            model.VacancyUrl.Should().Be(vacancyDetail.VacancyUrl);
            model.IsWellFormedVacancyUrl.Should().Be(false);
        }
        public void ShouldReturnTheVacancyUrlWithHttpsIfItStartsWithIt()
        {
            var vacancyDetail = new ApprenticeshipVacancyDetail
            {
                VacancyUrl = "https://wwww.someweb.com"
            };

            var model = new ApprenticeshipCandidateWebMappers().Map <ApprenticeshipVacancyDetail, VacancyDetailViewModel>(vacancyDetail);

            model.Should().NotBeNull();
            model.VacancyUrl.Should().StartWith("https://");
            model.IsWellFormedVacancyUrl.Should().Be(true);
        }
        public void ShouldNotAnonymiseEmployerNameIfEmployerHasNotOptedForAnonymity()
        {
            var vacancyDetail = new ApprenticeshipVacancyDetail
            {
                EmployerName        = "Acme Corp",
                IsEmployerAnonymous = false,
                Wage = new Wage(WageType.Custom, null, null, null, null, WageUnit.NotApplicable, null, null)
            };

            var model = new ApprenticeshipCandidateWebMappers().Map <ApprenticeshipVacancyDetail, ApprenticeshipVacancyDetailViewModel>(vacancyDetail);

            model.Should().NotBeNull();
            model.EmployerName.Should().Be(vacancyDetail.EmployerName);
        }
        public void ShouldReturnRawStringIfVacancyUrlIsNotWellFormed()
        {
            var vacancyDetail = new ApprenticeshipVacancyDetail
            {
                VacancyUrl = "www.somedomain.co.uk / www.anotherdomain.co.uk",
                Wage       = new Wage(WageType.Custom, null, null, null, null, WageUnit.NotApplicable, null, null)
            };

            var model = new ApprenticeshipCandidateWebMappers().Map <ApprenticeshipVacancyDetail, ApprenticeshipVacancyDetailViewModel>(vacancyDetail);

            model.Should().NotBeNull();
            model.VacancyUrl.Should().Be(vacancyDetail.VacancyUrl);
            model.IsWellFormedVacancyUrl.Should().Be(false);
        }
        public void ShouldReturnTheVacancyUrlWithHttpIfItDoesntHaveIt()
        {
            var vacancyDetail = new ApprenticeshipVacancyDetail
            {
                VacancyUrl = "wwww.someweb.com",
                Wage       = new Wage(WageType.Custom, null, null, null, null, WageUnit.NotApplicable, null, null)
            };

            var model = new ApprenticeshipCandidateWebMappers().Map <ApprenticeshipVacancyDetail, ApprenticeshipVacancyDetailViewModel>(vacancyDetail);

            model.Should().NotBeNull();
            model.VacancyUrl.Should().StartWith("http://");
            model.IsWellFormedVacancyUrl.Should().Be(true);
        }
        public void ShouldReturnTheEmployerWebsiteWithHttpsIfItStartsWithIt()
        {
            var vacancyDetail = new ApprenticeshipVacancyDetail
            {
                EmployerWebsite = "https://wwww.someweb.com",
                Wage            = new Wage(WageType.Custom, null, null, null, null, WageUnit.NotApplicable, null, null)
            };

            var model = new ApprenticeshipCandidateWebMappers().Map <ApprenticeshipVacancyDetail, ApprenticeshipVacancyDetailViewModel>(vacancyDetail);

            model.Should().NotBeNull();
            model.EmployerWebsite.Should().StartWith("https://");
            model.IsWellFormedEmployerWebsiteUrl.Should().Be(true);
        }
        public void ShouldShowWageIfWageTypeIsWeekly()
        {
            var vacancyDetail = new ApprenticeshipVacancyDetail
            {
                WageType = WageType.Weekly,
                Wage     = 101.19m
            };

            var          model        = new ApprenticeshipCandidateWebMappers().Map <ApprenticeshipVacancyDetail, VacancyDetailViewModel>(vacancyDetail);
            const string expectedWage = "£101.19";

            model.Should().NotBeNull();
            model.Wage.Should().Be(expectedWage);
        }
예제 #14
0
 private static ApprenticeshipApplicationDetail CreateApplicationDetail(Candidate candidate, ApprenticeshipVacancyDetail vacancyDetails)
 {
     return(new ApprenticeshipApplicationDetail
     {
         EntityId = Guid.NewGuid(),
         Status = ApplicationStatuses.Draft,
         DateCreated = DateTime.Now,
         CandidateId = candidate.EntityId,
         CandidateDetails = Mapper.Map <RegistrationDetails, RegistrationDetails>(candidate.RegistrationDetails),
         VacancyStatus = vacancyDetails.VacancyStatus,
         Vacancy = new ApprenticeshipSummary
         {
             Id = vacancyDetails.Id,
             VacancyReference = vacancyDetails.VacancyReference,
             Title = vacancyDetails.Title,
             EmployerName = vacancyDetails.IsEmployerAnonymous ? vacancyDetails.AnonymousEmployerName : vacancyDetails.EmployerName,
             StartDate = vacancyDetails.StartDate,
             ClosingDate = vacancyDetails.ClosingDate,
             Description = vacancyDetails.Description,
             Location = null, // NOTE: no equivalent in legacy vacancy details.
             VacancyLocationType = vacancyDetails.VacancyLocationType
         },
         // Populate apprenticeshipApplication template with candidate's most recent information.
         CandidateInformation = new ApplicationTemplate
         {
             EducationHistory = candidate.ApplicationTemplate.EducationHistory,
             Qualifications = candidate.ApplicationTemplate.Qualifications,
             WorkExperience = candidate.ApplicationTemplate.WorkExperience,
             AboutYou = candidate.ApplicationTemplate.AboutYou
         },
     });
 }
        public static ApprenticeshipVacancyDetail GetApprenticeshipVacancyDetail(Vacancy vacancy, Employer employer, Provider provider, ProviderSite providerSite, IList <Category> categories, ILogService logService)
        {
            //Manually mapping rather than using automapper as the two enties are significantly different

            var subcategory = vacancy.GetSubCategory(categories);

            LogSubCategory(vacancy, logService, subcategory);

            var detail = new ApprenticeshipVacancyDetail
            {
                Id = vacancy.VacancyId,
                VacancyReference = vacancy.VacancyReferenceNumber.GetVacancyReference(),
                Title            = vacancy.Title,
                Description      = vacancy.ShortDescription,
                FullDescription  = vacancy.LongDescription,
                //SubCategory = vacancy.,
                StartDate   = vacancy.PossibleStartDate ?? DateTime.MinValue,
                ClosingDate = vacancy.ClosingDate ?? DateTime.MinValue,
                PostedDate  = vacancy.DateQAApproved ?? DateTime.MinValue,
                //TODO: Where should this come from?
                InterviewFromDate = DateTime.MinValue,
                Wage             = vacancy.Wage,
                WorkingWeek      = vacancy.WorkingWeek,
                HoursPerWeek     = vacancy.Wage.HoursPerWeek,
                OtherInformation = vacancy.OtherInformation,
                FutureProspects  = vacancy.FutureProspects,
                //TODO: Where from?
                //VacancyOwner = vacancy.,
                //VacancyManager = vacancy.,
                //LocalAuthority = vacancy.,
                NumberOfPositions         = vacancy.NumberOfPositions ?? 0,
                RealityCheck              = vacancy.ThingsToConsider,
                Created                   = vacancy.CreatedDateTime,
                VacancyStatus             = vacancy.Status.GetVacancyStatuses(),
                EmployerName              = employer.FullName,
                AnonymousEmployerName     = vacancy.EmployerAnonymousName,
                AnonymousAboutTheEmployer = vacancy.AnonymousAboutTheEmployer,
                IsEmployerAnonymous       = !string.IsNullOrWhiteSpace(vacancy.EmployerAnonymousName),
                EmployerDescription       = string.IsNullOrWhiteSpace(vacancy.AnonymousAboutTheEmployer) ? vacancy.EmployerDescription : vacancy.AnonymousAboutTheEmployer,
                EmployerWebsite           = vacancy.EmployerWebsiteUrl,
                ApplyViaEmployerWebsite   = vacancy.OfflineVacancy ?? false,
                VacancyUrl                = vacancy.OfflineApplicationUrl,
                ApplicationInstructions   = vacancy.OfflineApplicationInstructions,
                IsPositiveAboutDisability = employer.IsPositiveAboutDisability,
                ExpectedDuration          = vacancy.ExpectedDuration,
                VacancyAddress            = GetVacancyAddress(vacancy.Address),
                //TODO: How is this captured in RAA?
                //IsRecruitmentAgencyAnonymous = vacancy.,
                //TODO: How is this captured in RAA?
                //IsSmallEmployerWageIncentive = vacancy.,
                SupplementaryQuestion1 = vacancy.FirstQuestion,
                SupplementaryQuestion2 = vacancy.SecondQuestion,
                //TODO: How is this captured in RAA?
                RecruitmentAgency = providerSite.TradingName,
                ProviderName      = provider.TradingName,
                TradingName       = employer.TradingName,
                //ProviderDescription = vacancy.,
                Contact = vacancy.GetContactInformation(providerSite),
                TrainingToBeProvided = vacancy.TrainingProvided,
                //TODO: How is this captured in RAA?
                //ContractOwner = vacancy.,
                //DeliveryOrganisation = vacancy.,
                //IsNasProvider = vacancy.,
                PersonalQualities             = vacancy.PersonalQualities,
                QualificationRequired         = vacancy.DesiredQualifications,
                SkillsRequired                = vacancy.DesiredSkills,
                VacancyLocationType           = vacancy.VacancyLocationType == VacancyLocationType.Nationwide ? ApprenticeshipLocationType.National : ApprenticeshipLocationType.NonNational,
                ApprenticeshipLevel           = vacancy.ApprenticeshipLevel.GetApprenticeshipLevel(),
                SubCategory                   = subcategory.FullName,
                TrainingType                  = vacancy.TrainingType.GetTrainingType(),
                EditedInRaa                   = vacancy.EditedInRaa,
                AdditionalLocationInformation = vacancy.AdditionalLocationInformation
            };

            return(detail);
        }