public Dictionary <string, object> MapCandidateDictionary(Candidate candidate) { return(new Dictionary <string, object> { { "CandidateId", candidate.CandidateId }, { "PersonId", candidate.PersonId }, { "CandidateStatusTypeId", candidate.CandidateStatusTypeId }, { "DateofBirth", candidate.DateofBirth }, { "AddressLine1", candidate.AddressLine1 }, { "AddressLine2", candidate.AddressLine2 }, { "AddressLine3", candidate.AddressLine3 }, { "AddressLine4", candidate.AddressLine4 }, { "AddressLine5", candidate.AddressLine5 }, { "Town", candidate.Town }, { "CountyId", candidate.CountyId }, { "Postcode", candidate.Postcode }, { "LocalAuthorityId", candidate.LocalAuthorityId }, { "Longitude", candidate.Longitude }, { "Latitude", candidate.Latitude }, { "GeocodeEasting", candidate.GeocodeEasting }, { "GeocodeNorthing", candidate.GeocodeNorthing }, { "NiReference", candidate.NiReference }, { "VoucherReferenceNumber", candidate.VoucherReferenceNumber }, { "UniqueLearnerNumber", candidate.UniqueLearnerNumber }, { "UlnStatusId", candidate.UlnStatusId }, { "Gender", candidate.Gender }, { "EthnicOrigin", candidate.EthnicOrigin }, { "EthnicOriginOther", candidate.EthnicOriginOther }, { "ApplicationLimitEnforced", candidate.ApplicationLimitEnforced }, { "LastAccessedDate", candidate.LastAccessedDate }, { "AdditionalEmail", candidate.AdditionalEmail }, { "Disability", candidate.Disability }, { "DisabilityOther", candidate.DisabilityOther }, { "HealthProblems", candidate.HealthProblems }, { "ReceivePushedContent", candidate.ReceivePushedContent }, { "ReferralAgent", candidate.ReferralAgent }, { "DisableAlerts", candidate.DisableAlerts }, { "UnconfirmedEmailAddress", candidate.UnconfirmedEmailAddress }, { "MobileNumberUnconfirmed", candidate.MobileNumberUnconfirmed }, { "DoBFailureCount", candidate.DoBFailureCount }, { "ForgottenUsernameRequested", candidate.ForgottenUsernameRequested }, { "ForgottenPasswordRequested", candidate.ForgottenPasswordRequested }, { "TextFailureCount", candidate.TextFailureCount }, { "EmailFailureCount", candidate.EmailFailureCount }, { "LastAccessedManageApplications", candidate.LastAccessedManageApplications }, { "ReferralPoints", candidate.ReferralPoints }, { "BeingSupportedBy", candidate.BeingSupportedBy }, { "LockedForSupportUntil", candidate.LockedForSupportUntil }, { "NewVacancyAlertEmail", candidate.NewVacancyAlertEmail }, { "NewVacancyAlertSMS", candidate.NewVacancyAlertSMS }, { "AllowMarketingMessages", candidate.AllowMarketingMessages }, { "ReminderMessageSent", candidate.ReminderMessageSent }, { "CandidateGuid", candidate.CandidateGuid } }); }
public CandidatePerson MapCandidatePerson(CandidateUser candidateUser, IDictionary <Guid, CandidateSummary> candidateSummaries, IDictionary <string, int> vacancyLocalAuthorities, IDictionary <int, int> localAuthorityCountyIds, IDictionary <int, int> schoolAttendedIds, bool anonymise) { try { var candidateGuid = candidateUser.Candidate.Id; var candidateSummary = candidateSummaries.ContainsKey(candidateGuid) ? candidateSummaries[candidateGuid] : new CandidateSummary(); var candidateId = GetCandidateId(candidateUser, candidateSummary); var address = candidateUser.Candidate.RegistrationDetails.Address; var email = candidateUser.Candidate.RegistrationDetails.EmailAddress.ToLower(); var monitoringInformation = candidateUser.Candidate.MonitoringInformation ?? new MonitoringInformation(); //TODO: Use PCA to validate these lookups when the service is complete and we have the keys var localAuthorityId = GetLocalAuthorityId(address.Postcode, vacancyLocalAuthorities); var countyId = localAuthorityCountyIds.ContainsKey(localAuthorityId) ? localAuthorityCountyIds[localAuthorityId] : 0; var candidate = new Candidate { CandidateId = candidateId, PersonId = candidateSummary.PersonId, CandidateStatusTypeId = GetCandidateStatusTypeId(candidateUser), DateofBirth = candidateUser.Candidate.RegistrationDetails.DateOfBirth, AddressLine1 = anonymise ? "" : address.AddressLine1, AddressLine2 = address.AddressLine2 ?? "", AddressLine3 = address.AddressLine3 ?? "", AddressLine4 = address.AddressLine4 ?? "", AddressLine5 = "", Town = "N/A", CountyId = countyId, Postcode = address.Postcode, LocalAuthorityId = localAuthorityId, Longitude = null, Latitude = null, GeocodeEasting = null, GeocodeNorthing = null, NiReference = "", VoucherReferenceNumber = null, UniqueLearnerNumber = null, UlnStatusId = 0, Gender = GetGender(monitoringInformation.Gender), EthnicOrigin = GetEthnicOrigin(monitoringInformation.Ethnicity), EthnicOriginOther = GetEthnicOriginOther(monitoringInformation.Ethnicity), ApplicationLimitEnforced = false, LastAccessedDate = candidateUser.User.LastLogin ?? candidateUser.Candidate.DateUpdated ?? candidateUser.Candidate.DateCreated, AdditionalEmail = anonymise ? candidateGuid + "@anon.com" : email.Length > 50 ? "" : email, Disability = GetDisability(monitoringInformation.DisabilityStatus), DisabilityOther = GetDisabilityOther(monitoringInformation.DisabilityStatus), HealthProblems = "", ReceivePushedContent = false, ReferralAgent = false, DisableAlerts = false, UnconfirmedEmailAddress = "", MobileNumberUnconfirmed = false, DoBFailureCount = null, ForgottenUsernameRequested = false, ForgottenPasswordRequested = false, TextFailureCount = 0, EmailFailureCount = 0, LastAccessedManageApplications = null, ReferralPoints = 0, BeingSupportedBy = "NAS Exemplar", LockedForSupportUntil = null, NewVacancyAlertEmail = null, NewVacancyAlertSMS = null, AllowMarketingMessages = GetAllowMarketingMessages(candidateUser.Candidate.CommunicationPreferences), ReminderMessageSent = true, CandidateGuid = candidateGuid }; var person = new Person { PersonId = candidateSummary.PersonId, Title = 0, OtherTitle = "", FirstName = anonymise ? "Candidate" : candidateUser.Candidate.RegistrationDetails.FirstName, MiddleNames = anonymise ? "" : candidateUser.Candidate.RegistrationDetails.MiddleNames, Surname = anonymise ? candidateGuid.ToString().Replace("-", "") : candidateUser.Candidate.RegistrationDetails.LastName, LandlineNumber = anonymise ? "07999999999" : candidateUser.Candidate.RegistrationDetails.PhoneNumber, MobileNumber = "", Email = anonymise ? candidateGuid + "@anon.com" : email, PersonTypeId = 1 }; return(new CandidatePerson { Candidate = candidate, SchoolAttended = MapSchoolAttended(candidateUser, schoolAttendedIds, candidateId), Person = person }); } catch (Exception ex) { //Copes with test data from integration and acceptance tests _logService.Error($"Failed to map Candidate with Id {candidateUser.Candidate.Id}", ex); return(null); } }