Skip to content

Commit

Permalink
Refactor the constructor to reduce its Cognitive Complexity
Browse files Browse the repository at this point in the history
  • Loading branch information
Ahmed-Ghanam committed Oct 17, 2024
1 parent 8a27dbc commit e60f1d4
Showing 1 changed file with 26 additions and 6 deletions.
32 changes: 26 additions & 6 deletions src/Altinn.Profile.Integrations/Mappings/PersonMappingProfile.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,31 @@ public PersonMappingProfile()
.ForMember(dest => dest.LanguageCode, opt => opt.MapFrom(src => src.Language))
.ForMember(dest => dest.FnumberAk, opt => opt.MapFrom(src => src.PersonIdentifier))
.ForMember(dest => dest.Reservation, opt => opt.MapFrom(src => src.Reservation == "JA"))
.ForMember(dest => dest.EmailAddress, opt => opt.MapFrom(src => src.ContactDetailsSnapshot != null ? src.ContactDetailsSnapshot.Email : null))
.ForMember(dest => dest.MobilePhoneNumber, opt => opt.MapFrom(src => src.ContactDetailsSnapshot != null ? src.ContactDetailsSnapshot.MobileNumber : null))
.ForMember(dest => dest.EmailAddressLastUpdated, opt => opt.MapFrom(src => src.ContactDetailsSnapshot != null && src.ContactDetailsSnapshot.EmailLastUpdated.HasValue ? src.ContactDetailsSnapshot.EmailLastUpdated.Value.ToUniversalTime() : (DateTime?)null))
.ForMember(dest => dest.EmailAddressLastVerified, opt => opt.MapFrom(src => src.ContactDetailsSnapshot != null && src.ContactDetailsSnapshot.EmailLastVerified.HasValue ? src.ContactDetailsSnapshot.EmailLastVerified.Value.ToUniversalTime() : (DateTime?)null))
.ForMember(dest => dest.MobilePhoneNumberLastUpdated, opt => opt.MapFrom(src => src.ContactDetailsSnapshot != null && src.ContactDetailsSnapshot.MobileNumberLastUpdated.HasValue ? src.ContactDetailsSnapshot.MobileNumberLastUpdated.Value.ToUniversalTime() : (DateTime?)null))
.ForMember(dest => dest.MobilePhoneNumberLastVerified, opt => opt.MapFrom(src => src.ContactDetailsSnapshot != null && src.ContactDetailsSnapshot.MobileNumberLastVerified.HasValue ? src.ContactDetailsSnapshot.MobileNumberLastVerified.Value.ToUniversalTime() : (DateTime?)null));
.ForMember(dest => dest.EmailAddress, opt => opt.MapFrom(src => GetContactDetail(src, detail => detail.Email)))
.ForMember(dest => dest.MobilePhoneNumber, opt => opt.MapFrom(src => GetContactDetail(src, detail => detail.MobileNumber)))
.ForMember(dest => dest.EmailAddressLastUpdated, opt => opt.MapFrom(src => GetContactDetailDate(src, detail => detail.EmailLastUpdated)))
.ForMember(dest => dest.EmailAddressLastVerified, opt => opt.MapFrom(src => GetContactDetailDate(src, detail => detail.EmailLastVerified)))
.ForMember(dest => dest.MobilePhoneNumberLastUpdated, opt => opt.MapFrom(src => GetContactDetailDate(src, detail => detail.MobileNumberLastUpdated)))
.ForMember(dest => dest.MobilePhoneNumberLastVerified, opt => opt.MapFrom(src => GetContactDetailDate(src, detail => detail.MobileNumberLastVerified)));
}

private static string? GetContactDetail(PersonContactPreferencesSnapshot src, Func<PersonContactDetailsSnapshot, string?> selector)
{
return src.ContactDetailsSnapshot != null ? selector(src.ContactDetailsSnapshot) : null;
}

private static DateTime? GetContactDetailDate(PersonContactPreferencesSnapshot src, Func<PersonContactDetailsSnapshot, DateTime?> selector)
{
if (src.ContactDetailsSnapshot != null)
{
var date = selector(src.ContactDetailsSnapshot);

if (date.HasValue)
{
return date.Value.ToUniversalTime();
}
}

return null;
}
}

0 comments on commit e60f1d4

Please sign in to comment.