private static Category GetStandardSubCategory(VacancySummary vacancy, IList <Category> categories) { if (vacancy.VacancyType == VacancyType.Apprenticeship) { if (vacancy.StandardId.HasValue) { var standardCode = CategoryPrefixes.GetStandardCode(vacancy.StandardId.Value); var subCategories = categories .Where(c => c.SubCategories != null) .SelectMany(c => c.SubCategories) .ToList(); var standards = subCategories .Where(c => c.SubCategories != null && c.SubCategories.Any()) .SelectMany(c => c.SubCategories); var standard = standards .SingleOrDefault(c => c.CodeName.Split(CodeDivider).Contains(standardCode)); if (standard != null) { var standardSector = subCategories.Single(sc => sc.CodeName == standard.ParentCategoryCodeName); return(new Category(standard.Id, standard.ParentCategoryCodeName, $"{standardSector.FullName} > {standard.FullName}", CategoryType.StandardSector, CategoryStatus.Active)); } } return(Category.UnknownStandardSector); } return(Category.InvalidStandardSector); }
/// <summary> /// TODO: Do this a better way /// </summary> /// <returns></returns> public Category ToCategory() { var category = new Category(Id, CategoryPrefixes.GetSectorSubjectAreaTier1Code(CodeName), FullName, CategoryType.SectorSubjectAreaTier1, (CategoryStatus)(int)Status); Frameworks.ToList().ForEach(f => category.SubCategories.Add(f.ToCategory())); return(category); }
private static Category GetFrameworkSubCategory(VacancySummary vacancy, IList <Category> categories) { if (vacancy.VacancyType == VacancyType.Apprenticeship) { if (!string.IsNullOrWhiteSpace(vacancy.FrameworkCodeName)) { var frameworkCode = CategoryPrefixes.GetFrameworkCode(vacancy.FrameworkCodeName); var subCategories = categories .Where(c => c.SubCategories != null) .SelectMany(c => c.SubCategories); var framework = subCategories .SingleOrDefault(c => c.CodeName.Split(CodeDivider).Contains(frameworkCode)); if (framework != null) { return(new Category(framework.Id, framework.CodeName, framework.FullName, framework.CategoryType, framework.Status)); } } return(Category.UnknownFramework); } return(Category.InvalidFramework); }
public IEnumerable <Category> GetCategories(params CategoryStatus[] statuses) { var categories = GetFrameworks().Where(c => statuses.Contains(c.Status)).ToList(); var standardSectors = GetSectors(); foreach (var standardSector in standardSectors) { var sectorSubjectAreaTier1Id = standardSector.ApprenticeshipOccupationId; var standardSectorCode = CategoryPrefixes.GetStandardSectorCode(standardSector.Id); var sectorSubjectAreaTier1Category = categories.Single(c => c.Id == sectorSubjectAreaTier1Id); var standards = standardSector.Standards.Select(s => new Category(s.Id, CategoryPrefixes.GetStandardCode(s.Id), s.Name, standardSectorCode, CategoryType.Standard, CategoryStatus.Active)).ToList(); var standardSectorCategory = new Category(standardSector.Id, standardSectorCode, standardSector.Name, CategoryPrefixes.GetSectorSubjectAreaTier1Code(sectorSubjectAreaTier1Category.CodeName), CategoryType.StandardSector, CategoryStatus.Active, standards); //TODO: indiscriminate addition here may lead to the subsequent need to de-duplicate subCategories sectorSubjectAreaTier1Category.SubCategories.Add(standardSectorCategory); } //Order the new standard sectors correctly foreach (var category in categories) { var orderedSubCategories = category.SubCategories.Where(c => statuses.Contains(c.Status)).OrderBy(c => c.FullName).ThenBy(c => c.CodeName).ToList(); category.SubCategories.Clear(); foreach (var subCategory in orderedSubCategories) { //Remove duplicated categories subCategory.FullName = FullNameFormatter.Format(subCategory.FullName); var duplicateCategory = category.SubCategories.SingleOrDefault(c => c.FullName == subCategory.FullName); if (duplicateCategory == null) { category.SubCategories.Add(subCategory); } else { //Create combined category and replace duplicates var combinedCodeName = duplicateCategory.CodeName + "|" + subCategory.CodeName; var combinedSubcategories = duplicateCategory.SubCategories ?? new List <Category>(); foreach (var standard in subCategory.SubCategories) { combinedSubcategories.Add(standard); } foreach (var standard in combinedSubcategories) { standard.ParentCategoryCodeName = combinedCodeName; } var combinedCategory = new Category(0, combinedCodeName, duplicateCategory.FullName, duplicateCategory.ParentCategoryCodeName, CategoryType.Combined, CategoryStatus.Active, combinedSubcategories); var currentIndex = category.SubCategories.IndexOf(duplicateCategory); category.SubCategories.Insert(currentIndex, combinedCategory); category.SubCategories.Remove(duplicateCategory); } } } return(categories); }
private void NormalizeCategoriesAndSubcategories(ApprenticeshipSearchViewModel model) { if (!CategoryPrefixes.IsSectorSubjectAreaTier1Code(model.Category)) { model.Category = CategoryPrefixes.GetSectorSubjectAreaTier1Code(model.Category); } model.SubCategories = model.SubCategories?.Select(c => { if (!CategoryPrefixes.IsFrameworkCode(c) && !CategoryPrefixes.IsStandardSectorCode(c)) { // Is an old saved search, so it's a framework return(CategoryPrefixes.GetFrameworkCode(c)); } return(c); }).ToArray(); }
private static Category GetSectorCategory(this VacancySummary vacancy, IList <Category> categories) { if (vacancy.VacancyType == VacancyType.Traineeship) { if (!string.IsNullOrWhiteSpace(vacancy.SectorCodeName)) { var code = CategoryPrefixes.GetSectorSubjectAreaTier1Code(vacancy.SectorCodeName); var category = categories .SingleOrDefault(c => c.CodeName.Split(CodeDivider).Contains(code)); if (category != null) { return(new Category(category.Id, category.CodeName, category.FullName, category.CategoryType, category.Status)); } } return(Category.UnknownSectorSubjectAreaTier1); } return(Category.InvalidSectorSubjectAreaTier1); }
public override void Initialise() { Mapper.CreateMap <Domain.Entities.Raa.Locations.GeoPoint, GeoPointViewModel>(); Mapper.CreateMap <GeoPointViewModel, Domain.Entities.Raa.Locations.GeoPoint>() .ForMember(dest => dest.Easting, opt => opt.Ignore()) .ForMember(dest => dest.Northing, opt => opt.Ignore()); Mapper.CreateMap <Domain.Entities.Locations.GeoPoint, GeoPointViewModel>(); Mapper.CreateMap <GeoPointViewModel, Domain.Entities.Locations.GeoPoint>(); Mapper.CreateMap <PostalAddress, AddressViewModel>() .ForMember(dest => dest.Uprn, opt => opt.Ignore()); Mapper.CreateMap <AddressViewModel, PostalAddress>() .ForMember(dest => dest.PostalAddressId, opt => opt.Ignore()) .ForMember(dest => dest.ValidationSourceCode, opt => opt.Ignore()) .ForMember(dest => dest.ValidationSourceKeyValue, opt => opt.Ignore()) .ForMember(dest => dest.DateValidated, opt => opt.Ignore()); Mapper.CreateMap <Employer, EmployerViewModel>() .ForMember(dest => dest.Status, opt => opt.MapFrom(src => src.EmployerStatus)); Mapper.CreateMap <EmployerViewModel, Employer>() .ForMember(dest => dest.EmployerGuid, opt => opt.Ignore()) .ForMember(dest => dest.PrimaryContact, opt => opt.Ignore()) .ForMember(dest => dest.IsPositiveAboutDisability, opt => opt.Ignore()) .ForMember(dest => dest.EmployerStatus, opt => opt.MapFrom(src => src.Status)); Mapper.CreateMap <VacancyOwnerRelationship, VacancyOwnerRelationshipViewModel>() .ForMember(dest => dest.IsEmployerLocationMainApprenticeshipLocation, opt => opt.Ignore()) .ForMember(dest => dest.VacancyGuid, opt => opt.Ignore()) .ForMember(dest => dest.NumberOfPositions, opt => opt.Ignore()) .ForMember(dest => dest.ComeFromPreview, opt => opt.Ignore()) .ForMember(dest => dest.Status, opt => opt.Ignore()) .ForMember(dest => dest.VacancyReferenceNumber, opt => opt.Ignore()) .ForMember(dest => dest.EmployerDescriptionComment, opt => opt.Ignore()) .ForMember(dest => dest.EmployerWebsiteUrlComment, opt => opt.Ignore()) .ForMember(dest => dest.NumberOfPositionsComment, opt => opt.Ignore()) .ForMember(dest => dest.Employer, opt => opt.Ignore()) .ForMember(dest => dest.IsEmployerAddressValid, opt => opt.Ignore()) .ForMember(dest => dest.AnonymousEmployerDescription, src => src.Ignore()) .ForMember(dest => dest.AnonymousEmployerDescriptionComment, src => src.Ignore()) .ForMember(dest => dest.AnonymousEmployerReason, src => src.Ignore()) .ForMember(dest => dest.AnonymousEmployerReasonComment, src => src.Ignore()) .ForMember(dest => dest.IsAnonymousEmployer, src => src.Ignore()) .ForMember(dest => dest.OriginalFullName, src => src.Ignore()) .ForMember(dest => dest.AnonymousAboutTheEmployer, src => src.Ignore()) .ForMember(dest => dest.AnonymousAboutTheEmployerComment, src => src.Ignore()); Mapper.CreateMap <VacancyLocation, VacancyLocationAddressViewModel>() .ForMember(dest => dest.OfflineApplicationUrl, opt => opt.MapFrom(src => src.EmployersWebsite)); Mapper.CreateMap <VacancyLocationAddressViewModel, VacancyLocation>() .ForMember(dest => dest.VacancyId, opt => opt.Ignore()) .ForMember(dest => dest.LocalAuthorityCode, opt => opt.Ignore()) .ForMember(dest => dest.EmployersWebsite, opt => opt.MapFrom(src => src.OfflineApplicationUrl)); Mapper.CreateMap <DateTime?, DateViewModel>().ConvertUsing <DateTimeToDateViewModelConverter>(); Mapper.CreateMap <DateTime, DateViewModel>().ConvertUsing <DateTimeToDateViewModelConverter>(); Mapper.CreateMap <Vacancy, VacancyDatesViewModel>().ConvertUsing <VacancyToVacancyDatesViewModelConverter>(); Mapper.CreateMap <Vacancy, NewVacancyViewModel>() .ForMember(dest => dest.VacancyGuid, opt => opt.Ignore()) .ForMember(dest => dest.ComeFromPreview, opt => opt.Ignore()) .ForMember(dest => dest.Ukprn, opt => opt.Ignore()) .ForMember(dest => dest.VacancyOwnerRelationship, opt => opt.Ignore()) .ForMember(dest => dest.LocationAddresses, opt => opt.Ignore()) .ForMember(dest => dest.AutoSaveTimeoutInSeconds, opt => opt.Ignore()) .ForMember(dest => dest.AnonymousEmployerDescription, src => src.Ignore()) .ForMember(dest => dest.AnonymousEmployerReason, src => src.Ignore()); Mapper.CreateMap <Vacancy, TrainingDetailsViewModel>() .ForMember(dest => dest.FrameworkCodeName, opt => opt.MapFrom(src => CategoryPrefixes.GetFrameworkCode(src.FrameworkCodeName))) .ForMember(dest => dest.SectorCodeName, opt => opt.MapFrom(src => CategoryPrefixes.GetSectorSubjectAreaTier1Code(src.SectorCodeName))) .ForMember(dest => dest.SectorsAndFrameworks, opt => opt.Ignore()) .ForMember(dest => dest.Standards, opt => opt.Ignore()) .ForMember(dest => dest.Sectors, opt => opt.Ignore()) .ForMember(dest => dest.ComeFromPreview, opt => opt.Ignore()) .ForMember(dest => dest.AutoSaveTimeoutInSeconds, opt => opt.Ignore()); Mapper.CreateMap <Wage, WageViewModel>().ConvertUsing <WageToWageViewModelConverter>(); Mapper.CreateMap <WageViewModel, Wage>().ConvertUsing <WageViewModelToWageConverter>(); Mapper.CreateMap <Vacancy, FurtherVacancyDetailsViewModel>().ConvertUsing <VacancyToFurtherVacancyDetailsViewModelConverter>(); Mapper.CreateMap <Vacancy, VacancyRequirementsProspectsViewModel>() .ForMember(dest => dest.ComeFromPreview, opt => opt.Ignore()) .ForMember(dest => dest.AutoSaveTimeoutInSeconds, opt => opt.Ignore()); Mapper.CreateMap <Vacancy, VacancyQuestionsViewModel>() .ForMember(dest => dest.ComeFromPreview, opt => opt.Ignore()) .ForMember(dest => dest.AutoSaveTimeoutInSeconds, opt => opt.Ignore()); Mapper.CreateMap <Vacancy, VacancyViewModel>().ConvertUsing <VacancyToVacancyViewModelConverter>(); Mapper.CreateMap <VacancySummary, VacancySummaryViewModel>().ConvertUsing <VacancyToVacancySummaryViewModelConverter>(); //Applications Mapper.CreateMap <Address, AddressViewModel>() .ForMember(dest => dest.AddressLine5, opt => opt.Ignore()) .ForMember(dest => dest.Town, opt => opt.Ignore()) .ForMember(dest => dest.County, opt => opt.Ignore()); Mapper.CreateMap <Vacancy, ApplicationVacancyViewModel>() .ForMember(v => v.EmployerName, opt => opt.Ignore()); Mapper.CreateMap <AboutYou, AboutYouViewModel>(); Mapper.CreateMap <Education, EducationViewModel>(); Mapper.CreateMap <Qualification, QualificationViewModel>(); Mapper.CreateMap <WorkExperience, WorkExperienceViewModel>(); Mapper.CreateMap <TrainingCourse, TrainingCourseViewModel>(); //Apprenticeship Mapper.CreateMap <ApprenticeshipApplicationDetail, ApplicantDetailsViewModel>() .ForMember(v => v.Name, opt => opt.MapFrom(src => new Name(src.CandidateDetails.FirstName, src.CandidateDetails.MiddleNames, src.CandidateDetails.LastName).GetDisplayText())) .ForMember(v => v.Address, opt => opt.MapFrom(src => Map <Address, AddressViewModel>(src.CandidateDetails.Address))) .ForMember(v => v.DateOfBirth, opt => opt.MapFrom(src => src.CandidateDetails.DateOfBirth)) .ForMember(v => v.PhoneNumber, opt => opt.MapFrom(src => src.CandidateDetails.PhoneNumber)) .ForMember(v => v.EmailAddress, opt => opt.MapFrom(src => src.CandidateDetails.EmailAddress)) .ForMember(v => v.DisabilityStatus, opt => opt.MapFrom(src => src.CandidateInformation.DisabilityStatus)) .ForMember(m => m.ApplicantId, opt => opt.MapFrom(s => s.EntityId.GetApplicantId(0))); Mapper.CreateMap <ApprenticeshipApplicationDetail, VacancyQuestionAnswersViewModel>() .ForMember(v => v.FirstQuestionAnswer, opt => opt.MapFrom(src => src.AdditionalQuestion1Answer)) .ForMember(v => v.SecondQuestionAnswer, opt => opt.MapFrom(src => src.AdditionalQuestion2Answer)) .ForMember(v => v.AnythingWeCanDoToSupportYourInterviewAnswer, opt => opt.MapFrom(src => src.CandidateInformation.AboutYou.Support)); Mapper.CreateMap <ApprenticeshipApplicationDetail, AnonymisedApplicantDetailsViewModel>() .ForMember(v => v.ApplicantId, opt => opt.MapFrom(src => src.CandidateId.GetApplicantId(0))); Mapper.CreateMap <ApprenticeshipApplicationDetail, ApprenticeshipApplicationViewModel>() .ForMember(v => v.ApplicationSelection, opt => opt.MapFrom(src => Map <ApprenticeshipApplicationDetail, ApplicationSelectionViewModel>(src))) .ForMember(v => v.Vacancy, opt => opt.Ignore()) .ForMember(v => v.ApplicantDetails, opt => opt.MapFrom(src => Map <ApprenticeshipApplicationDetail, ApplicantDetailsViewModel>(src))) .ForMember(v => v.AnonymousApplicantDetails, opt => opt.MapFrom(src => Map <ApprenticeshipApplicationDetail, AnonymisedApplicantDetailsViewModel>(src))) .ForMember(v => v.AboutYou, opt => opt.MapFrom(src => Map <AboutYou, AboutYouViewModel>(src.CandidateInformation.AboutYou))) .ForMember(v => v.Education, opt => opt.MapFrom(src => Map <Education, EducationViewModel>(src.CandidateInformation.EducationHistory))) .ForMember(v => v.Qualifications, opt => opt.MapFrom(src => Map <IList <Qualification>, IList <QualificationViewModel> >(src.CandidateInformation.Qualifications))) .ForMember(v => v.WorkExperience, opt => opt.MapFrom(src => Map <IList <WorkExperience>, IList <WorkExperienceViewModel> >(src.CandidateInformation.WorkExperience))) .ForMember(v => v.TrainingCourses, opt => opt.MapFrom(src => Map <IList <TrainingCourse>, IList <TrainingCourseViewModel> >(src.CandidateInformation.TrainingCourses))) .ForMember(v => v.NextStepsUrl, opt => opt.Ignore()) .ForMember(v => v.ConfirmationStatusSentMessage, opt => opt.Ignore()) .ForMember(v => v.VacancyQuestionAnswers, opt => opt.MapFrom(src => Map <ApprenticeshipApplicationDetail, VacancyQuestionAnswersViewModel>(src))) .ForMember(v => v.ProviderName, opt => opt.Ignore()) .ForMember(v => v.Contact, opt => opt.Ignore()); Mapper.CreateMap <ApprenticeshipApplicationDetail, ApplicationSelectionViewModel>() .ForMember(v => v.ApplicationId, opt => opt.MapFrom(src => src.EntityId)) .ForMember(v => v.VacancyReferenceNumber, opt => opt.Ignore()) .ForMember(v => v.FilterType, opt => opt.Ignore()) .ForMember(v => v.ApplicantId, opt => opt.Ignore()) .ForMember(v => v.FirstName, opt => opt.Ignore()) .ForMember(v => v.LastName, opt => opt.Ignore()) .ForMember(v => v.Postcode, opt => opt.Ignore()) .ForMember(v => v.OrderByField, opt => opt.Ignore()) .ForMember(v => v.Order, opt => opt.Ignore()) .ForMember(v => v.PageSize, opt => opt.Ignore()) .ForMember(v => v.PageSizes, opt => opt.Ignore()) .ForMember(v => v.CurrentPage, opt => opt.Ignore()); //Traineeship Mapper.CreateMap <TraineeshipApplicationDetail, ApplicantDetailsViewModel>() .ForMember(v => v.Name, opt => opt.MapFrom(src => new Name(src.CandidateDetails.FirstName, src.CandidateDetails.MiddleNames, src.CandidateDetails.LastName).GetDisplayText())) .ForMember(v => v.Address, opt => opt.MapFrom(src => Map <Address, AddressViewModel>(src.CandidateDetails.Address))) .ForMember(v => v.DateOfBirth, opt => opt.MapFrom(src => src.CandidateDetails.DateOfBirth)) .ForMember(v => v.PhoneNumber, opt => opt.MapFrom(src => src.CandidateDetails.PhoneNumber)) .ForMember(v => v.EmailAddress, opt => opt.MapFrom(src => src.CandidateDetails.EmailAddress)) .ForMember(v => v.DisabilityStatus, opt => opt.MapFrom(src => src.CandidateInformation.DisabilityStatus)) .ForMember(m => m.ApplicantId, opt => opt.MapFrom(s => s.EntityId.GetApplicantId(0))); Mapper.CreateMap <TraineeshipApplicationDetail, VacancyQuestionAnswersViewModel>() .ForMember(v => v.FirstQuestionAnswer, opt => opt.MapFrom(src => src.AdditionalQuestion1Answer)) .ForMember(v => v.SecondQuestionAnswer, opt => opt.MapFrom(src => src.AdditionalQuestion2Answer)) .ForMember(v => v.AnythingWeCanDoToSupportYourInterviewAnswer, opt => opt.MapFrom(src => src.CandidateInformation.AboutYou.Support)); Mapper.CreateMap <TraineeshipApplicationDetail, AnonymisedApplicantDetailsViewModel>() .ForMember(v => v.ApplicantId, opt => opt.MapFrom(src => src.CandidateId.GetApplicantId(0))); Mapper.CreateMap <TraineeshipApplicationDetail, TraineeshipApplicationViewModel>() .ForMember(v => v.ApplicationSelection, opt => opt.MapFrom(src => Map <TraineeshipApplicationDetail, ApplicationSelectionViewModel>(src))) .ForMember(v => v.Vacancy, opt => opt.Ignore()) .ForMember(v => v.ApplicantDetails, opt => opt.MapFrom(src => Map <TraineeshipApplicationDetail, ApplicantDetailsViewModel>(src))) .ForMember(v => v.AnonymousApplicantDetails, opt => opt.MapFrom(src => Map <TraineeshipApplicationDetail, AnonymisedApplicantDetailsViewModel>(src))) .ForMember(v => v.AboutYou, opt => opt.MapFrom(src => Map <AboutYou, AboutYouViewModel>(src.CandidateInformation.AboutYou))) .ForMember(v => v.Education, opt => opt.MapFrom(src => Map <Education, EducationViewModel>(src.CandidateInformation.EducationHistory))) .ForMember(v => v.Qualifications, opt => opt.MapFrom(src => Map <IList <Qualification>, IList <QualificationViewModel> >(src.CandidateInformation.Qualifications))) .ForMember(v => v.WorkExperience, opt => opt.MapFrom(src => Map <IList <WorkExperience>, IList <WorkExperienceViewModel> >(src.CandidateInformation.WorkExperience))) .ForMember(v => v.TrainingCourses, opt => opt.MapFrom(src => Map <IList <TrainingCourse>, IList <TrainingCourseViewModel> >(src.CandidateInformation.TrainingCourses))) .ForMember(v => v.VacancyQuestionAnswers, opt => opt.MapFrom(src => Map <TraineeshipApplicationDetail, VacancyQuestionAnswersViewModel>(src))) .ForMember(v => v.ConfirmationStatusSentMessage, opt => opt.Ignore()) .ForMember(v => v.UnSuccessfulReason, opt => opt.Ignore()) .ForMember(v => v.SuccessfulDateTime, opt => opt.Ignore()) .ForMember(v => v.UnsuccessfulDateTime, opt => opt.Ignore()); Mapper.CreateMap <TraineeshipApplicationDetail, ApplicationSelectionViewModel>() .ForMember(v => v.ApplicationId, opt => opt.MapFrom(src => src.EntityId)) .ForMember(v => v.VacancyReferenceNumber, opt => opt.Ignore()) .ForMember(v => v.FilterType, opt => opt.Ignore()) .ForMember(v => v.ApplicantId, opt => opt.Ignore()) .ForMember(v => v.FirstName, opt => opt.Ignore()) .ForMember(v => v.LastName, opt => opt.Ignore()) .ForMember(v => v.Postcode, opt => opt.Ignore()) .ForMember(v => v.OrderByField, opt => opt.Ignore()) .ForMember(v => v.Order, opt => opt.Ignore()) .ForMember(v => v.PageSize, opt => opt.Ignore()) .ForMember(v => v.PageSizes, opt => opt.Ignore()) .ForMember(v => v.CurrentPage, opt => opt.Ignore()); }