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);
        }