public Mappings()
        {
            Func <string, bool> isGuid = s => Guid.TryParse(s, out var _);

            CreateMap <EvacuationFile, era_evacuationfile>(MemberList.None)
            .ForMember(d => d.era_name, opts => opts.MapFrom(s => s.Id))
            .ForMember(d => d.era_paperbasedessfile, opts => opts.Ignore())
            .ForMember(d => d.era_essfilestatus, opts => opts.Ignore())
            .ForMember(d => d.era_evacuationfiledate, opts => opts.MapFrom(s => s.EvacuationDate))
            .ForMember(d => d.era_securityphrase, opts => opts.Ignore())
            .ForMember(d => d.era_CurrentNeedsAssessmentid, opts => opts.MapFrom(s => s.NeedsAssessment))
            .ForPath(d => d.era_CurrentNeedsAssessmentid.era_registrationlocation, opts => opts.MapFrom(s => s.RegistrationLocation))
            .ForMember(d => d.era_securityphrase, opts => opts.MapFrom(s => s.SecurityPhraseChanged ? s.SecurityPhrase : null))
            .ForMember(d => d._era_registrant_value, opts => opts.MapFrom(s => s.PrimaryRegistrantId))
            .ForMember(d => d._era_evacuatedfromid_value, opts => opts.MapFrom(s => s.EvacuatedFrom.CommunityCode))
            .ForMember(d => d.era_era_evacuationfile_era_animal_ESSFileid, opts => opts.MapFrom(s => s.NeedsAssessment.Pets))
            .ForMember(d => d.era_era_evacuationfile_era_householdmember_EvacuationFileid, opts => opts.MapFrom(s => s.HouseholdMembers))
            .AfterMap((s, d) =>
            {
                //set link to primary registrant's household member entity
                var primaryHouseholdMember = d.era_CurrentNeedsAssessmentid.era_era_householdmember_era_needassessment.SingleOrDefault(m => m.era_isprimaryregistrant == true);
                if (primaryHouseholdMember != null)
                {
                    primaryHouseholdMember._era_registrant_value = Guid.Parse(s.PrimaryRegistrantId);
                }
            });

            CreateMap <era_evacuationfile, EvacuationFile>()
            .ForMember(d => d.Id, opts => opts.MapFrom(s => s.era_name))
            .ForMember(d => d.TaskId, opts => opts.MapFrom(s => s.era_TaskId == null ? null : s.era_TaskId.era_name))
            .ForMember(d => d.TaskLocationCommunityCode, opts => opts.MapFrom(s => s.era_TaskId == null ? null : s.era_TaskId._era_jurisdictionid_value))
            .ForMember(d => d.CreatedOn, opts => opts.MapFrom(s => s.createdon.Value.UtcDateTime))
            .ForMember(d => d.LastModified, opts => opts.MapFrom(s => s.modifiedon.Value.UtcDateTime))
            .ForMember(d => d.PrimaryRegistrantId, opts => opts.MapFrom(s => s._era_registrant_value))
            .ForMember(d => d.SecurityPhrase, opts => opts.ConvertUsing <SecurityPhraseConverter, string>(s => s.era_securityphrase))
            .ForMember(d => d.SecurityPhraseChanged, opts => opts.MapFrom(s => false))
            .ForMember(d => d.IsSecurityPhraseMasked, opts => opts.MapFrom((s, d, _, ctx) => SecurityPhraseConverter.ShouldMaskSecretPhrase(ctx)))
            .ForMember(d => d.EvacuationDate, opts => opts.MapFrom(s => s.era_evacuationfiledate.Value.UtcDateTime))
            .ForMember(d => d.NeedsAssessment, opts => opts.MapFrom(s => s.era_CurrentNeedsAssessmentid))
            .ForMember(d => d.Status, opts => opts.MapFrom(s => s.era_essfilestatus))
            .ForMember(d => d.RestrictedAccess, opts => opts.MapFrom(s => s.era_era_evacuationfile_era_householdmember_EvacuationFileid
                                                                     .Where(m => m.era_Registrant != null)
                                                                     .Any(m => m.era_Registrant.era_restriction == true)))
            .ForMember(d => d.RegistrationLocation, opts => opts.MapFrom(s => s.era_CurrentNeedsAssessmentid.era_registrationlocation))
            .ForMember(d => d.HouseholdMembers, opts => opts.MapFrom(s => s.era_era_evacuationfile_era_householdmember_EvacuationFileid))
            .ForMember(d => d.Notes, opts => opts.MapFrom(s => s.era_era_evacuationfile_era_essfilenote_ESSFileID))
            .ForMember(d => d.Supports, opts => opts.ConvertUsing <SupportConverter, IEnumerable <era_evacueesupport> >(s => s.era_era_evacuationfile_era_evacueesupport_ESSFileId))
            .ForPath(d => d.NeedsAssessment.Pets, opts => opts.MapFrom(s => s.era_era_evacuationfile_era_animal_ESSFileid))
            ;

            Func <Note, string> resolveNoteContent = n => n?.Content;

            CreateMap <NeedsAssessment, era_needassessment>(MemberList.None)
            .ForMember(d => d.era_needassessmentid, opts => opts.MapFrom(s => Guid.NewGuid()))
            .ForMember(d => d._era_reviewedbyid_value, opts => opts.MapFrom(s => s.CompletedByTeamMemberId))
            .ForMember(d => d.era_needsassessmenttype, opts => opts.MapFrom(s => (int?)Enum.Parse <NeedsAssessmentTypeOptionSet>(s.Type.ToString())))
            .ForMember(d => d.era_canevacueeprovidefood, opts => opts.MapFrom(s => Lookup(s.CanProvideFood)))
            .ForMember(d => d.era_canevacueeprovideclothing, opts => opts.MapFrom(s => Lookup(s.CanProvideClothing)))
            .ForMember(d => d.era_canevacueeprovideincidentals, opts => opts.MapFrom(s => Lookup(s.CanProvideIncidentals)))
            .ForMember(d => d.era_canevacueeprovidelodging, opts => opts.MapFrom(s => Lookup(s.CanProvideLodging)))
            .ForMember(d => d.era_canevacueeprovidetransportation, opts => opts.MapFrom(s => Lookup(s.CanProvideTransportation)))
            .ForMember(d => d.era_dietaryrequirement, opts => opts.MapFrom(s => s.HaveSpecialDiet))
            .ForMember(d => d.era_dietaryrequirementdetails, opts => opts.MapFrom(s => s.SpecialDietDetails))
            .ForMember(d => d.era_medicationrequirement, opts => opts.MapFrom(s => s.TakeMedication))
            .ForMember(d => d.era_hasenoughsupply, opts => opts.MapFrom(s => s.HaveMedicalSupplies))
            .ForMember(d => d.era_insurancecoverage, opts => opts.MapFrom(s => (int?)Enum.Parse <InsuranceOptionOptionSet>(s.Insurance.ToString())))
            .ForMember(d => d.era_haspetfood, opts => opts.MapFrom(s => Lookup(s.HavePetsFood)))
            .ForMember(d => d.era_householdrecoveryplan, opts => opts.MapFrom(s => resolveNoteContent(s.Notes.Where(n => n.Type == NoteType.RecoveryPlan).FirstOrDefault())))
            .ForMember(d => d.era_evacuationimpacttohousehold, opts => opts.MapFrom(s => resolveNoteContent(s.Notes.Where(n => n.Type == NoteType.EvacuationImpact).FirstOrDefault())))
            .ForMember(d => d.era_externalreferralsdetails, opts => opts.MapFrom(s => resolveNoteContent(s.Notes.Where(n => n.Type == NoteType.ExternalReferralServices).FirstOrDefault())))
            .ForMember(d => d.era_petcareplans, opts => opts.MapFrom(s => resolveNoteContent(s.Notes.Where(n => n.Type == NoteType.PetCarePlans).FirstOrDefault())))
            .ForMember(d => d.era_haschildcarereferral, opts => opts.MapFrom(s => s.RecommendedReferralServices.Contains(ReferralServices.ChildCare)))
            .ForMember(d => d.era_hasfirstaidreferral, opts => opts.MapFrom(s => s.RecommendedReferralServices.Contains(ReferralServices.FirstAid)))
            .ForMember(d => d.era_hasinquiryreferral, opts => opts.MapFrom(s => s.RecommendedReferralServices.Contains(ReferralServices.Inquiry)))
            .ForMember(d => d.era_haspersonalservicesreferral, opts => opts.MapFrom(s => s.RecommendedReferralServices.Contains(ReferralServices.Personal)))
            .ForMember(d => d.era_haspetcarereferral, opts => opts.MapFrom(s => s.RecommendedReferralServices.Contains(ReferralServices.PetCare)))
            .ForMember(d => d.era_hashealthservicesreferral, opts => opts.MapFrom(s => s.RecommendedReferralServices.Contains(ReferralServices.Health)))
            .ForMember(d => d.era_addressline1, opts => opts.MapFrom(s => s.EvacuatedFrom.AddressLine1))
            .ForMember(d => d.era_addressline2, opts => opts.MapFrom(s => s.EvacuatedFrom.AddressLine2))
            .ForMember(d => d.era_postalcode, opts => opts.MapFrom(s => s.EvacuatedFrom.PostalCode))
            .ForMember(d => d._era_jurisdictionid_value, opts => opts.MapFrom(s => s.EvacuatedFrom.CommunityCode))
            .ForMember(d => d.era_era_householdmember_era_needassessment, opts => opts.MapFrom(s => s.HouseholdMembers))
            .ForPath(d => d.era_registrationlocation, opts => opts.Ignore())
            ;

            CreateMap <era_needassessment, EvacuationAddress>(MemberList.None)
            .ForMember(d => d.AddressLine1, opts => opts.MapFrom(s => s.era_addressline1))
            .ForMember(d => d.AddressLine2, opts => opts.MapFrom(s => s.era_addressline2))
            .ForMember(d => d.PostalCode, opts => opts.MapFrom(s => s.era_postalcode))
            .ForMember(d => d.CommunityCode, opts => opts.MapFrom(s => s._era_jurisdictionid_value))
            ;

            CreateMap <era_needassessment, NeedsAssessment>()
            .ForMember(d => d.Id, opts => opts.MapFrom(s => s.era_needassessmentid))
            .ForMember(d => d.EvacuatedFrom, opts => opts.MapFrom(s => s))
            .ForMember(d => d.CompletedByTeamMemberId, opts => opts.MapFrom(s => s._era_reviewedbyid_value))
            .ForMember(d => d.CompletedOn, opts => opts.MapFrom(s => s.createdon.Value.UtcDateTime))
            .ForMember(d => d.LastModified, opts => opts.MapFrom(s => s.modifiedon.Value.UtcDateTime))
            .ForMember(d => d.LastModifiedTeamMemberId, opts => opts.MapFrom(s => s._era_reviewedbyid_value))
            .ForMember(d => d.Type, opts => opts.MapFrom(s => (int?)Enum.Parse <NeedsAssessmentType>(((NeedsAssessmentTypeOptionSet)s.era_needsassessmenttype).ToString())))
            .ForMember(d => d.CanProvideClothing, opts => opts.MapFrom(s => Lookup(s.era_canevacueeprovideclothing)))
            .ForMember(d => d.CanProvideFood, opts => opts.MapFrom(s => Lookup(s.era_canevacueeprovidefood)))
            .ForMember(d => d.CanProvideIncidentals, opts => opts.MapFrom(s => Lookup(s.era_canevacueeprovideincidentals)))
            .ForMember(d => d.CanProvideLodging, opts => opts.MapFrom(s => Lookup(s.era_canevacueeprovidelodging)))
            .ForMember(d => d.CanProvideTransportation, opts => opts.MapFrom(s => Lookup(s.era_canevacueeprovidetransportation)))
            .ForMember(d => d.TakeMedication, opts => opts.MapFrom(s => s.era_medicationrequirement))
            .ForMember(d => d.HaveMedicalSupplies, opts => opts.MapFrom(s => s.era_hasenoughsupply))
            .ForMember(d => d.Insurance, opts => opts.MapFrom(s => Enum.Parse <InsuranceOption>(((InsuranceOptionOptionSet)s.era_insurancecoverage).ToString())))
            .ForMember(d => d.HaveSpecialDiet, opts => opts.MapFrom(s => s.era_dietaryrequirement))
            .ForMember(d => d.SpecialDietDetails, opts => opts.MapFrom(s => s.era_dietaryrequirementdetails))
            .ForMember(d => d.HavePetsFood, opts => opts.MapFrom(s => Lookup(s.era_haspetfood)))
            .ForMember(d => d.HouseholdMembers, opts => opts.MapFrom(s => s.era_era_householdmember_era_needassessment))
            .ForMember(d => d.Pets, opts => opts.Ignore())
            .ForMember(d => d.Notes, opts => opts.MapFrom(s => new[]
            {
                string.IsNullOrEmpty(s.era_householdrecoveryplan) ? null : new Note {
                    Type = NoteType.RecoveryPlan, Content = s.era_householdrecoveryplan
                },
                string.IsNullOrEmpty(s.era_evacuationimpacttohousehold) ? null : new Note {
                    Type = NoteType.EvacuationImpact, Content = s.era_evacuationimpacttohousehold
                },
                string.IsNullOrEmpty(s.era_externalreferralsdetails) ? null : new Note {
                    Type = NoteType.ExternalReferralServices, Content = s.era_externalreferralsdetails
                },
                string.IsNullOrEmpty(s.era_petcareplans) ? null : new Note {
                    Type = NoteType.PetCarePlans, Content = s.era_petcareplans
                },
            }.Where(n => n != null).ToArray()))
            .ForMember(s => s.RecommendedReferralServices, opts => opts.MapFrom(s => new[]
            {
                s.era_haschildcarereferral.GetValueOrDefault(false) ? ReferralServices.ChildCare : (ReferralServices?)null,
                s.era_hasfirstaidreferral.GetValueOrDefault(false) ? ReferralServices.FirstAid : (ReferralServices?)null,
                s.era_hasinquiryreferral.GetValueOrDefault(false) ? ReferralServices.Inquiry : (ReferralServices?)null,
                s.era_haspersonalservicesreferral.GetValueOrDefault(false) ? ReferralServices.Personal : (ReferralServices?)null,
                s.era_haspetcarereferral.GetValueOrDefault(false) ? ReferralServices.PetCare : (ReferralServices?)null,
                s.era_hashealthservicesreferral.GetValueOrDefault(false) ? ReferralServices.Health : (ReferralServices?)null,
            }.Where(r => r != null).ToArray()))
            ;

            CreateMap <era_householdmember, HouseholdMember>()
            .ForMember(d => d.Id, opts => opts.MapFrom(s => s.era_householdmemberid))
            .ForMember(d => d.LinkedRegistrantId, opts => opts.MapFrom(s => s.era_Registrant == null ? null : s.era_Registrant.contactid))
            .ForMember(d => d.HasAccessRestriction, opts => opts.MapFrom(s => s.era_Registrant == null ? null : s.era_Registrant.era_restriction))
            .ForMember(d => d.IsVerifiedRegistrant, opts => opts.MapFrom(s => s.era_Registrant == null ? null : s.era_Registrant.era_verified))
            .ForMember(d => d.IsAuthenticatedRegistrant, opts => opts.MapFrom(s => s.era_Registrant == null ? null : s.era_Registrant.era_authenticated))
            .ForMember(d => d.IsPrimaryRegistrant, opts => opts.MapFrom(s => s.era_isprimaryregistrant))
            .ForMember(d => d.IsUnder19, opts => opts.MapFrom(s => s.era_isunder19))
            .ForMember(d => d.FirstName, opts => opts.MapFrom(s => s.era_firstname.ToString()))
            .ForMember(d => d.LastName, opts => opts.MapFrom(s => s.era_lastname.ToString()))
            .ForMember(d => d.DateOfBirth, opts => opts.MapFrom(s => !s.era_dateofbirth.HasValue
                    ? null
                    : $"{s.era_dateofbirth.Value.Month:D2}/{s.era_dateofbirth.Value.Day:D2}/{s.era_dateofbirth.Value.Year:D4}"))
            .ForMember(d => d.Initials, opts => opts.MapFrom(s => s.era_initials.ToString()))
            .ForMember(d => d.Gender, opts => opts.ConvertUsing <GenderConverter, int?>(s => s.era_gender))

            .ReverseMap()

            .ForMember(d => d.era_householdmemberid, opts => opts.MapFrom(s => isGuid(s.Id) ? Guid.Parse(s.Id) : (Guid?)null))
            .ForMember(d => d.era_isprimaryregistrant, opts => opts.MapFrom(s => s.IsPrimaryRegistrant))
            .ForMember(d => d.era_isunder19, opts => opts.MapFrom(s => s.IsUnder19))
            .ForMember(d => d.era_firstname, opts => opts.MapFrom(s => s.FirstName))
            .ForMember(d => d.era_lastname, opts => opts.MapFrom(s => s.LastName))
            .ForMember(d => d.era_initials, opts => opts.MapFrom(s => s.Initials))
            .ForMember(d => d.era_gender, opts => opts.ConvertUsing <GenderConverter, string>(s => s.Gender))
            .ForMember(d => d.era_dateofbirth, opts => opts.MapFrom(s => string.IsNullOrEmpty(s.DateOfBirth) ? (Date?)null : Date.Parse(s.DateOfBirth)))
            .ForMember(d => d._era_registrant_value, opts => opts.MapFrom(s => s.LinkedRegistrantId))
            ;

            CreateMap <era_animal, Pet>()
            .ForMember(d => d.Id, opts => opts.MapFrom(s => s.era_animalid.ToString()))
            .ForMember(d => d.Quantity, opts => opts.MapFrom(s => s.era_numberofpets))
            .ForMember(d => d.Type, opts => opts.MapFrom(s => s.era_name))

            .ReverseMap()

            .ForMember(d => d.era_animalid, opts => opts.MapFrom(s => Guid.NewGuid()))
            .ForMember(d => d.era_numberofpets, opts => opts.MapFrom(s => s.Quantity))
            .ForMember(d => d.era_name, opts => opts.MapFrom(s => s.Type));

            CreateMap <era_essfilenote, Note>()
            .ForMember(d => d.Id, opts => opts.MapFrom(s => s.era_essfilenoteid))
            .ForMember(d => d.Content, opts => opts.MapFrom(s => s.era_notetext))
            .ForMember(d => d.AddedOn, opts => opts.MapFrom(s => s.createdon.Value.UtcDateTime))
            .ForMember(d => d.ModifiedOn, opts => opts.MapFrom(s => s.modifiedon.Value.UtcDateTime))
            .ForMember(d => d.CreatingTeamMemberId, opts => opts.MapFrom(s => s._era_essteamuserid_value))
            .ForMember(d => d.Type, opts => opts.MapFrom(s => NoteType.General))
            .ForMember(d => d.IsHidden, opts => opts.MapFrom(s => s.era_ishidden == true))
            ;

            CreateMap <Note, era_essfilenote>(MemberList.None)
            .ForMember(d => d.era_essfilenoteid, opts => opts.MapFrom(s => s.Id))
            .ForMember(d => d.era_notetext, opts => opts.MapFrom(s => s.Content))
            .ForMember(d => d._era_essteamuserid_value, opts => opts.MapFrom(s => isGuid(s.CreatingTeamMemberId) ? Guid.Parse(s.CreatingTeamMemberId) : (Guid?)null))
            .ForMember(d => d.era_ishidden, opts => opts.MapFrom(s => s.IsHidden))
            ;

            CreateMap <era_evacueesupport, Support>()
            .IncludeAllDerived()
            .ForMember(d => d.Id, opts => opts.MapFrom(s => s.era_name))
            .ForMember(d => d.IssuedOn, opts => opts.MapFrom(s => s.createdon.Value.UtcDateTime))
            .ForMember(d => d.IssuedByTeamMemberId, opts => opts.MapFrom(s => s._era_issuedbyid_value))
            .ForMember(d => d.OriginatingNeedsAssessmentId, opts => opts.MapFrom(s => s._era_needsassessmentid_value))
            .ForMember(d => d.From, opts => opts.MapFrom(s => s.era_validfrom.HasValue ? s.era_validfrom.Value.UtcDateTime : DateTime.MinValue))
            .ForMember(d => d.To, opts => opts.MapFrom(s => s.era_validto.HasValue ? s.era_validto.Value.UtcDateTime : DateTime.MinValue))
            .ForMember(d => d.Status, opts => opts.MapFrom(s => s.statuscode))
            .ForMember(d => d.IncludedHouseholdMembers, opts => opts.MapFrom(s => s.era_era_householdmember_era_evacueesupport.Select(m => m.era_householdmemberid)))
            .ReverseMap()
            .ForMember(d => d.era_name, opts => opts.MapFrom(s => s.Id))
            .ForMember(d => d.era_validfrom, opts => opts.MapFrom(s => s.From))
            .ForMember(d => d.era_validto, opts => opts.MapFrom(s => s.To))
            .ForMember(d => d.statuscode, opts => opts.MapFrom(s => s.To < DateTime.UtcNow ? SupportStatus.Expired : SupportStatus.Active))
            .IncludeAllDerived()
            .ForMember(d => d.era_era_householdmember_era_evacueesupport,
                       opts => opts.MapFrom(s => s.IncludedHouseholdMembers.Select(m => new era_householdmember {
                era_householdmemberid = Guid.Parse(m)
            })))
            ;

            CreateMap <era_evacueesupport, Referral>()
            .IncludeAllDerived()
            .ForMember(d => d.IssuedToPersonName, opts => opts.MapFrom(s => s.era_purchaserofgoods))
            .ForMember(d => d.SupplierId, opts => opts.MapFrom(s => s._era_supplierid_value))
            .ForMember(d => d.SupplierNotes, opts => opts.MapFrom(s => s.era_suppliernote))
            .ReverseMap()
            .IncludeAllDerived()
            .ForMember(d => d.era_supportdeliverytype, opts => opts.MapFrom(s => SupportMethod.Referral))
            ;

            CreateMap <era_evacueesupport, ClothingReferral>()
            .ForMember(d => d.TotalAmount, opts => opts.MapFrom(s => s.era_totalamount))
            .ForMember(d => d.ExtremeWinterConditions, opts => opts.MapFrom(s => s.era_extremewinterconditions == (int)EraTwoOptions.Yes))
            .ReverseMap()
            .ForMember(d => d.era_extremewinterconditions, opts => opts.MapFrom(s => s.ExtremeWinterConditions ? EraTwoOptions.Yes : EraTwoOptions.No))
            .ForMember(d => d.era_supporttype, opts => opts.MapFrom(s => SupportType.Clothing))
            ;

            CreateMap <era_evacueesupport, IncidentalsReferral>()
            .ForMember(d => d.TotalAmount, opts => opts.MapFrom(s => s.era_totalamount))
            .ForMember(d => d.ApprovedItems, opts => opts.MapFrom(s => s.era_approveditems))
            .ReverseMap()
            .ForMember(d => d.era_supporttype, opts => opts.MapFrom(s => SupportType.Incidentals))
            ;

            CreateMap <era_evacueesupport, FoodGroceriesReferral>()
            .ForMember(d => d.TotalAmount, opts => opts.MapFrom(s => s.era_totalamount))
            .ForMember(d => d.NumberOfDays, opts => opts.MapFrom(s => s.era_numberofmeals))
            .ReverseMap()
            .ForMember(d => d.era_supporttype, opts => opts.MapFrom(s => SupportType.FoodGroceries))
            ;

            CreateMap <era_evacueesupport, FoodRestaurantReferral>()
            .ForMember(d => d.TotalAmount, opts => opts.MapFrom(s => s.era_totalamount))
            .ForMember(d => d.NumberOfBreakfastsPerPerson, opts => opts.MapFrom(s => s.era_numberofbreakfasts))
            .ForMember(d => d.NumberOfLunchesPerPerson, opts => opts.MapFrom(s => s.era_numberoflunches))
            .ForMember(d => d.NumberOfDinnersPerPerson, opts => opts.MapFrom(s => s.era_numberofdinners))
            .ReverseMap()
            .ForMember(d => d.era_supporttype, opts => opts.MapFrom(s => SupportType.FoodRestaurant))
            ;

            CreateMap <era_evacueesupport, LodgingBilletingReferral>()
            .ForMember(d => d.NumberOfNights, opts => opts.MapFrom(s => s.era_numberofnights))
            .ForMember(d => d.HostAddress, opts => opts.MapFrom(s => s.era_lodgingaddress))
            .ForMember(d => d.HostCity, opts => opts.MapFrom(s => s.era_lodgingcity))
            .ForMember(d => d.HostEmail, opts => opts.MapFrom(s => s.era_lodgingemailaddress))
            .ForMember(d => d.HostPhone, opts => opts.MapFrom(s => s.era_lodgingcontactnumber))
            .ForMember(d => d.HostName, opts => opts.MapFrom(s => s.era_lodgingname))
            .ReverseMap()
            .ForMember(d => d.era_supporttype, opts => opts.MapFrom(s => SupportType.LodgingBilleting))
            ;

            CreateMap <era_evacueesupport, LodgingGroupReferral>()
            .ForMember(d => d.NumberOfNights, opts => opts.MapFrom(s => s.era_numberofnights))
            .ForMember(d => d.FacilityAddress, opts => opts.MapFrom(s => s.era_lodgingaddress))
            .ForMember(d => d.FacilityCity, opts => opts.MapFrom(s => s.era_lodgingcity))
            .ForMember(d => d.FacilityCommunityCode, opts => opts.MapFrom(s => s._era_grouplodgingcityid_value))
            .ForMember(d => d.FacilityContactPhone, opts => opts.MapFrom(s => s.era_lodgingcontactnumber))
            .ForMember(d => d.FacilityName, opts => opts.MapFrom(s => s.era_lodgingname))
            .ReverseMap()
            .ForMember(d => d.era_supporttype, opts => opts.MapFrom(s => SupportType.LodgingGroup))
            ;

            CreateMap <era_evacueesupport, LodgingHotelReferral>()
            .ForMember(d => d.NumberOfNights, opts => opts.MapFrom(s => s.era_numberofnights))
            .ForMember(d => d.NumberOfRooms, opts => opts.MapFrom(s => s.era_numberofrooms))
            .ReverseMap()
            .ForMember(d => d.era_supporttype, opts => opts.MapFrom(s => SupportType.LodgingHotel))
            ;

            CreateMap <era_evacueesupport, TransportationOtherReferral>()
            .ForMember(d => d.TotalAmount, opts => opts.MapFrom(s => s.era_totalamount))
            .ForMember(d => d.TransportMode, opts => opts.MapFrom(s => s.era_transportmode))
            .ReverseMap()
            .ForMember(d => d.era_supporttype, opts => opts.MapFrom(s => SupportType.TransportationOther))
            ;

            CreateMap <era_evacueesupport, TransportationTaxiReferral>()
            .ForMember(d => d.FromAddress, opts => opts.MapFrom(s => s.era_fromaddress))
            .ForMember(d => d.ToAddress, opts => opts.MapFrom(s => s.era_toaddress))
            .ReverseMap()
            .ForMember(d => d.era_supporttype, opts => opts.MapFrom(s => SupportType.TransporationTaxi))
            ;
        }
Example #2
0
        public Mappings()
        {
            Func <string, bool> isGuid = s => Guid.TryParse(s, out var _);

            CreateMap <EvacuationFile, era_evacuationfile>(MemberList.None)
            .ForMember(d => d.era_name, opts => opts.MapFrom(s => s.Id))
            .ForMember(d => d.era_paperbasedessfile, opts => opts.Ignore())
            .ForMember(d => d.era_essfilestatus, opts => opts.Ignore())
            .ForMember(d => d.era_evacuationfiledate, opts => opts.MapFrom(s => s.EvacuationDate))
            .ForMember(d => d.era_securityphrase, opts => opts.Ignore())
            .ForMember(d => d.era_needsassessment_EvacuationFile, opts => opts.MapFrom(s => s.NeedsAssessments))
            .ForMember(d => d.era_addressline1, opts => opts.MapFrom(s => s.EvacuatedFromAddress.AddressLine1))
            .ForMember(d => d.era_addressline2, opts => opts.MapFrom(s => s.EvacuatedFromAddress.AddressLine2))
            .ForMember(d => d.era_postalcode, opts => opts.MapFrom(s => s.EvacuatedFromAddress.PostalCode))
            .ForMember(d => d.era_city, opts => opts.MapFrom(s => isGuid(s.EvacuatedFromAddress.CommunityCode) ? null : s.EvacuatedFromAddress.CommunityCode))
            .ForMember(d => d.era_country, opts => opts.MapFrom(s => s.EvacuatedFromAddress.CountryCode))
            .ForMember(d => d.era_province, opts => opts.MapFrom(s => s.EvacuatedFromAddress.StateProvinceCode))
            .ForMember(d => d.era_registrationlocation, opts => opts.MapFrom(s => s.RegistrationLocation))
            ;

            CreateMap <era_evacuationfile, EvacuationFile>()
            .ForMember(d => d.Id, opts => opts.MapFrom(s => s.era_name))
            .ForMember(d => d.TaskId, opts => opts.MapFrom(s => s.era_TaskId == null ? null : s.era_TaskId.era_taskdetails))
            .ForMember(d => d.CreatedOn, opts => opts.MapFrom(s => s.createdon.Value.DateTime))
            .ForMember(d => d.LastModified, opts => opts.MapFrom(s => s.modifiedon.Value.DateTime))
            .ForMember(d => d.PrimaryRegistrantId, opts => opts.MapFrom(s => s.era_Registrant.contactid.ToString()))
            .ForMember(d => d.SecurityPhrase, opts => opts.ConvertUsing <SecurityPhraseConverter, string>(s => s.era_securityphrase))
            .ForMember(d => d.SecurityPhraseChanged, opts => opts.MapFrom(s => false))
            .ForMember(d => d.EvacuationDate, opts => opts.MapFrom(s => s.era_evacuationfiledate.Value.UtcDateTime))
            .ForMember(d => d.NeedsAssessments, opts => opts.MapFrom(s => s.era_needsassessment_EvacuationFile))
            .ForMember(d => d.Status, opts => opts.MapFrom(s => s.era_essfilestatus))
            .ForMember(d => d.EvacuatedFromAddress, opts => opts.MapFrom(s => s))
            .ForMember(d => d.IsSecretPhraseMasked, opts => opts.MapFrom((s, d, _, ctx) => SecurityPhraseConverter.ShouldMaskSecretPhrase(ctx)))
            .ForMember(d => d.RestrictedAccess, opts => opts.Ignore())
            .ForMember(d => d.RegistrationLocation, opts => opts.MapFrom(s => s.era_registrationlocation))
            ;

            CreateMap <era_evacuationfile, EvacuationAddress>(MemberList.None)
            .ForMember(d => d.AddressLine1, opts => opts.MapFrom(s => s.era_addressline1))
            .ForMember(d => d.AddressLine2, opts => opts.MapFrom(s => s.era_addressline2))
            .ForMember(d => d.PostalCode, opts => opts.MapFrom(s => s.era_postalcode))
            .ForMember(d => d.CommunityCode, opts => opts.MapFrom(s => s.era_Jurisdiction.era_jurisdictionid))
            .ForMember(d => d.StateProvinceCode, opts => opts.MapFrom(s => s.era_Jurisdiction.era_RelatedProvinceState.era_code))
            .ForMember(d => d.CountryCode, opts => opts.MapFrom(s => s.era_Jurisdiction.era_RelatedProvinceState.era_RelatedCountry.era_countrycode))
            ;

            CreateMap <NeedsAssessment, era_needassessment>(MemberList.None)
            .ForMember(d => d.era_needassessmentid, opts => opts.MapFrom(s => s.Id))
            .ForMember(d => d.era_needsassessmenttype, opts => opts.MapFrom(s => (int?)Enum.Parse <NeedsAssessmentTypeOptionSet>(s.Type.ToString())))
            .ForMember(d => d.era_canevacueeprovidefood, opts => opts.MapFrom(s => Lookup(s.CanEvacueeProvideFood)))
            .ForMember(d => d.era_canevacueeprovideclothing, opts => opts.MapFrom(s => Lookup(s.CanEvacueeProvideClothing)))
            .ForMember(d => d.era_canevacueeprovideincidentals, opts => opts.MapFrom(s => Lookup(s.CanEvacueeProvideIncidentals)))
            .ForMember(d => d.era_canevacueeprovidelodging, opts => opts.MapFrom(s => Lookup(s.CanEvacueeProvideLodging)))
            .ForMember(d => d.era_canevacueeprovidetransportation, opts => opts.MapFrom(s => Lookup(s.CanEvacueeProvideTransportation)))
            .ForMember(d => d.era_dietaryrequirement, opts => opts.MapFrom(s => s.HaveSpecialDiet))
            .ForMember(d => d.era_dietaryrequirementdetails, opts => opts.MapFrom(s => s.SpecialDietDetails))
            .ForMember(d => d.era_medicationrequirement, opts => opts.MapFrom(s => s.HaveMedication))
            .ForMember(d => d.era_insurancecoverage, opts => opts.MapFrom(s => (int?)Enum.Parse <InsuranceOptionOptionSet>(s.Insurance.ToString())))
            .ForMember(d => d.era_haspetfood, opts => opts.MapFrom(s => Lookup(s.HasPetsFood)))
            ;

            CreateMap <era_needassessment, NeedsAssessment>()
            .ForMember(d => d.Id, opts => opts.MapFrom(s => s.era_needassessmentid))
            .ForMember(d => d.CreatedOn, opts => opts.MapFrom(s => s.createdon.Value.DateTime))
            .ForMember(d => d.LastModified, opts => opts.MapFrom(s => s.modifiedon.Value.DateTime))
            .ForMember(d => d.Type, opts => opts.MapFrom(s => (int?)Enum.Parse <NeedsAssessmentType>(((NeedsAssessmentTypeOptionSet)s.era_needsassessmenttype).ToString())))
            .ForMember(d => d.CanEvacueeProvideClothing, opts => opts.MapFrom(s => Lookup(s.era_canevacueeprovideclothing)))
            .ForMember(d => d.CanEvacueeProvideFood, opts => opts.MapFrom(s => Lookup(s.era_canevacueeprovidefood)))
            .ForMember(d => d.CanEvacueeProvideIncidentals, opts => opts.MapFrom(s => Lookup(s.era_canevacueeprovideincidentals)))
            .ForMember(d => d.CanEvacueeProvideLodging, opts => opts.MapFrom(s => Lookup(s.era_canevacueeprovidelodging)))
            .ForMember(d => d.CanEvacueeProvideTransportation, opts => opts.MapFrom(s => Lookup(s.era_canevacueeprovidetransportation)))
            .ForMember(d => d.HaveMedication, opts => opts.MapFrom(s => s.era_medicationrequirement))
            .ForMember(d => d.Insurance, opts => opts.MapFrom(s => Enum.Parse <InsuranceOption>(((InsuranceOptionOptionSet)s.era_insurancecoverage).ToString())))
            .ForMember(d => d.HaveSpecialDiet, opts => opts.MapFrom(s => s.era_dietaryrequirement))
            .ForMember(d => d.SpecialDietDetails, opts => opts.MapFrom(s => s.era_dietaryrequirementdetails))
            .ForMember(d => d.HasPetsFood, opts => opts.MapFrom(s => Lookup(s.era_haspetfood)))
            .ForMember(d => d.HouseholdMembers, opts => opts.MapFrom(s => Array.Empty <HouseholdMember>()))
            .ForMember(d => d.Pets, opts => opts.MapFrom(s => Array.Empty <Pet>()))
            .ForMember(d => d.Notes, opts => opts.MapFrom(s => new[]
            {
                string.IsNullOrEmpty(s.era_householdrecoveryplan) ? null : new Note {
                    Type = NoteType.RecoveryPlan, Content = s.era_householdrecoveryplan
                },
                string.IsNullOrEmpty(s.era_evacuationimpacttohousehold) ? null : new Note {
                    Type = NoteType.EvacuationImpact, Content = s.era_evacuationimpacttohousehold
                },
                string.IsNullOrEmpty(s.era_externalreferralsdetails) ? null : new Note {
                    Type = NoteType.ExternalReferralServices, Content = s.era_externalreferralsdetails
                },
            }.Where(n => n != null).ToArray()))
            .ForMember(s => s.RecommendedReferralServices, opts => opts.MapFrom(s => new[]
            {
                s.era_haschildcarereferral.GetValueOrDefault(false) ? ReferralServices.ChildCare : (ReferralServices?)null,
                s.era_hasfirstaidreferral.GetValueOrDefault(false) ? ReferralServices.FirstAid : (ReferralServices?)null,
                s.era_hasinquiryreferral.GetValueOrDefault(false) ? ReferralServices.Inquiry : (ReferralServices?)null,
                s.era_haspersonalservicesreferral.GetValueOrDefault(false) ? ReferralServices.Personal : (ReferralServices?)null,
                s.era_haspetcarereferral.GetValueOrDefault(false) ? ReferralServices.PetCare : (ReferralServices?)null,
                s.era_hashealthservicesreferral.GetValueOrDefault(false) ? ReferralServices.Health : (ReferralServices?)null,
            }.Where(r => r != null).ToArray()))
            ;

            CreateMap <era_householdmember, HouseholdMember>()
            .ForMember(d => d.Id, opts => opts.MapFrom(s => s.era_householdmemberid.ToString()))
            .ForMember(d => d.LinkedRegistrantId, opts => opts.MapFrom(s => s.era_Registrant.contactid))
            .ForMember(d => d.RestrictedAccess, opts => opts.MapFrom(s => s.era_Registrant.era_restriction))
            .ForMember(d => d.IsPrimaryRegistrant, opts => opts.MapFrom(s => s.era_isprimaryregistrant))
            .ForMember(d => d.IsUnder19, opts => opts.MapFrom(s => s.era_isunder19))
            .ForMember(d => d.FirstName, opts => opts.MapFrom(s => s.era_Registrant.firstname.ToString()))
            .ForMember(d => d.LastName, opts => opts.MapFrom(s => s.era_Registrant.lastname.ToString()))
            .ForMember(d => d.DateOfBirth, opts => opts.MapFrom(s => !s.era_Registrant.birthdate.HasValue
                    ? null
                    : $"{s.era_Registrant.birthdate.Value.Month:D2}/{s.era_Registrant.birthdate.Value.Day:D2}/{s.era_Registrant.birthdate.Value.Year:D4}"))
            .ForMember(d => d.Initials, opts => opts.MapFrom(s => s.era_Registrant.era_initial.ToString()))
            .ForMember(d => d.PreferredName, opts => opts.MapFrom(s => s.era_Registrant.era_preferredname.ToString()))
            .ForMember(d => d.Gender, opts => opts.ConvertUsing <GenderConverter, int?>(s => s.era_Registrant.gendercode))
            ;

            CreateMap <HouseholdMember, era_householdmember>(MemberList.None)
            .ForMember(d => d.era_householdmemberid, opts => opts.MapFrom(s => Guid.Parse(s.Id)))
            .ForMember(d => d.era_isprimaryregistrant, opts => opts.MapFrom(s => s.IsPrimaryRegistrant))
            .ForMember(d => d.era_isunder19, opts => opts.MapFrom(s => s.IsUnder19))
            .ForMember(d => d.era_Registrant, opts => opts.MapFrom(s => s))
            ;

            CreateMap <HouseholdMember, contact>(MemberList.None)
            .ForMember(d => d.contactid, opts => opts.MapFrom(s => s.LinkedRegistrantId))
            .ForMember(d => d.era_registranttype, opts => opts.MapFrom(s => (int)(s.IsPrimaryRegistrant ? RegistrantType.Primary : RegistrantType.Member)))
            .ForMember(d => d.firstname, opts => opts.MapFrom(s => s.FirstName))
            .ForMember(d => d.lastname, opts => opts.MapFrom(s => s.LastName))
            .ForMember(d => d.era_initial, opts => opts.MapFrom(s => s.Initials))
            .ForMember(d => d.era_preferredname, opts => opts.MapFrom(s => s.PreferredName))
            .ForMember(d => d.gendercode, opts => opts.ConvertUsing <GenderConverter, string>(s => s.Gender))
            .ForMember(d => d.birthdate, opts => opts.MapFrom(s => string.IsNullOrEmpty(s.DateOfBirth) ? (Date?)null : Date.Parse(s.DateOfBirth)))

            .ReverseMap()

            .ForMember(d => d.Gender, opts => opts.ConvertUsing <GenderConverter, int?>(s => s.gendercode))
            .ForMember(d => d.DateOfBirth, opts => opts.MapFrom(s => !s.birthdate.HasValue
                    ? null
                    : $"{s.birthdate.Value.Month:D2}/{s.birthdate.Value.Day:D2}/{s.birthdate.Value.Year:D4}"))
            .ForMember(d => d.IsUnder19, opts => opts.MapFrom(s => s.birthdate.HasValue ? CheckIfUnder19Years(s.birthdate.Value, Date.Now) : (bool?)null))
            .ForMember(d => d.RestrictedAccess, opts => opts.MapFrom(s => s.era_restriction ?? false))
            ;

            CreateMap <era_needsassessmentanimal, Pet>()
            .ForMember(d => d.Quantity, opts => opts.MapFrom(s => s.era_numberofpets))
            .ForMember(d => d.Type, opts => opts.MapFrom(s => s.era_name))

            .ReverseMap()

            .ForMember(d => d.era_numberofpets, opts => opts.MapFrom(s => s.Quantity))
            .ForMember(d => d.era_name, opts => opts.MapFrom(s => s.Type));
        }
Example #3
0
        public Mappings()
        {
            Func <string, bool> isGuid             = s => Guid.TryParse(s, out var _);
            Func <Note, string> resolveNoteContent = n => n?.Content;

            CreateMap <EvacuationFile, era_evacuationfile>(MemberList.None)
            .IncludeAllDerived()
            .ForMember(d => d.era_name, opts => opts.MapFrom(s => s.Id))
            .ForMember(d => d.era_paperbasedessfile, opts => opts.Ignore())
            .ForMember(d => d.era_essfilestatus, opts => opts.Ignore())
            .ForMember(d => d.era_evacuationfiledate, opts => opts.MapFrom(s => s.EvacuationDate))
            .ForMember(d => d.era_CurrentNeedsAssessmentid, opts => opts.MapFrom(s => s.NeedsAssessment))
            .ForPath(d => d.era_CurrentNeedsAssessmentid.era_registrationlocation, opts => opts.MapFrom(s => s.RegistrationLocation))
            .ForMember(d => d.era_securityphrase, opts => opts.MapFrom(s => s.SecurityPhraseChanged ? s.SecurityPhrase : null))
            .ForMember(d => d._era_registrant_value, opts => opts.MapFrom(s => s.PrimaryRegistrantId))
            .ForMember(d => d._era_evacuatedfromid_value, opts => opts.MapFrom(s => s.EvacuatedFrom.CommunityCode))
            .ForMember(d => d.era_era_evacuationfile_era_animal_ESSFileid, opts => opts.MapFrom(s => s.NeedsAssessment.Pets))
            .ForMember(d => d.era_haspetfood, opts => opts.MapFrom(s => s.NeedsAssessment.HavePetsFood.HasValue && s.NeedsAssessment.HavePetsFood.Value ? EraTwoOptions.Yes : EraTwoOptions.No))
            .ForMember(d => d.era_petcareplans, opts => opts.MapFrom(s => resolveNoteContent(s.NeedsAssessment.Notes.FirstOrDefault(n => n.Type == NoteType.PetCarePlans))))
            .ForMember(d => d.era_paperbasedessfile, opts => opts.MapFrom(s => s.ManualFileId))
            .ForMember(d => d.era_registrationcompleteddate, opts => opts.MapFrom(s => s.CompletedOn))
            .ForMember(d => d.era_interviewername, opts => opts.MapFrom(s => s.CompletedBy))
            .AfterMap((s, d) =>
            {
                //set link to primary registrant's household member entity
                var primaryHouseholdMember = d.era_CurrentNeedsAssessmentid.era_era_householdmember_era_needassessment.SingleOrDefault(m => m.era_isprimaryregistrant == true);
                if (primaryHouseholdMember != null)
                {
                    primaryHouseholdMember._era_registrant_value = Guid.Parse(s.PrimaryRegistrantId);
                }
            })
            .ReverseMap()
            .ValidateMemberList(MemberList.Destination)
            .ForMember(d => d.Id, opts => opts.MapFrom(s => s.era_name))
            .ForMember(d => d.TaskId, opts => opts.MapFrom(s => s.era_TaskId == null ? null : s.era_TaskId.era_name))
            .ForMember(d => d.TaskLocationCommunityCode, opts => opts.MapFrom(s => s.era_TaskId == null ? null : s.era_TaskId._era_jurisdictionid_value))
            .ForMember(d => d.CreatedOn, opts => opts.MapFrom(s => s.createdon.Value.UtcDateTime))
            .ForMember(d => d.LastModified, opts => opts.MapFrom(s => s.modifiedon.Value.UtcDateTime))
            .ForMember(d => d.PrimaryRegistrantId, opts => opts.MapFrom(s => s._era_registrant_value))
            .ForMember(d => d.PrimaryRegistrantUserId, opts => opts.MapFrom(s => s.era_Registrant.era_bcservicescardid))
            .ForMember(d => d.SecurityPhrase, opts => opts.ConvertUsing <SecurityPhraseConverter, string>(s => s.era_securityphrase))
            .ForMember(d => d.SecurityPhraseChanged, opts => opts.MapFrom(s => false))
            .ForMember(d => d.IsSecurityPhraseMasked, opts => opts.MapFrom((s, d, _, ctx) => SecurityPhraseConverter.ShouldMaskSecretPhrase(ctx)))
            .ForMember(d => d.EvacuationDate, opts => opts.MapFrom(s => s.era_evacuationfiledate.Value.UtcDateTime))
            .ForMember(d => d.NeedsAssessment, opts => opts.MapFrom(s => s.era_CurrentNeedsAssessmentid))
            .ForMember(d => d.Status, opts => opts.MapFrom(s => s.era_essfilestatus))
            .ForMember(d => d.RestrictedAccess, opts => opts.MapFrom(s => s.era_era_evacuationfile_era_householdmember_EvacuationFileid
                                                                     .Where(m => m.era_Registrant != null)
                                                                     .Any(m => m.era_Registrant.era_restriction == true)))
            .ForMember(d => d.RegistrationLocation, opts => opts.MapFrom(s => s.era_CurrentNeedsAssessmentid.era_registrationlocation))
            .ForMember(d => d.HouseholdMembers, opts => opts.MapFrom(s => s.era_era_evacuationfile_era_householdmember_EvacuationFileid))
            .ForMember(d => d.Notes, opts => opts.MapFrom(s => s.era_era_evacuationfile_era_essfilenote_ESSFileID))
            .ForMember(d => d.Supports, opts => opts.MapFrom(s => s.era_era_evacuationfile_era_evacueesupport_ESSFileId.Select(s => s.era_name)))
            .ForPath(d => d.NeedsAssessment.HavePetsFood, opts => opts.MapFrom(s => s.era_haspetfood == (int)EraTwoOptions.Yes))
            .ForPath(d => d.NeedsAssessment.Pets, opts => opts.MapFrom(s => s.era_era_evacuationfile_era_animal_ESSFileid))
            .ForPath(d => d.NeedsAssessment.Notes, opts => opts.MapFrom(s => new[]
            {
                string.IsNullOrEmpty(s.era_CurrentNeedsAssessmentid.era_householdrecoveryplan) ? null : new Note {
                    Type = NoteType.RecoveryPlan, Content = s.era_CurrentNeedsAssessmentid.era_householdrecoveryplan
                },
                string.IsNullOrEmpty(s.era_CurrentNeedsAssessmentid.era_evacuationimpacttohousehold) ? null : new Note {
                    Type = NoteType.EvacuationImpact, Content = s.era_CurrentNeedsAssessmentid.era_evacuationimpacttohousehold
                },
                string.IsNullOrEmpty(s.era_CurrentNeedsAssessmentid.era_externalreferralsdetails) ? null : new Note {
                    Type = NoteType.ExternalReferralServices, Content = s.era_CurrentNeedsAssessmentid.era_externalreferralsdetails
                },
                string.IsNullOrEmpty(s.era_petcareplans) ? null : new Note {
                    Type = NoteType.PetCarePlans, Content = s.era_petcareplans
                },
            }.Where(n => n != null).ToArray()))
            .ForMember(d => d.ManualFileId, opts => opts.MapFrom(s => s.era_paperbasedessfile))
            .ForMember(d => d.IsPaper, opts => opts.MapFrom(s => s.era_paperbasedessfile != null))
            ;

            CreateMap <NeedsAssessment, era_needassessment>(MemberList.None)
            .ForMember(d => d.era_needassessmentid, opts => opts.MapFrom(s => Guid.NewGuid()))
            .ForMember(d => d._era_reviewedbyid_value, opts => opts.MapFrom(s => s.CompletedByTeamMemberId))
            .ForMember(d => d.era_needsassessmenttype, opts => opts.MapFrom(s => (int?)Enum.Parse <NeedsAssessmentTypeOptionSet>(s.Type.ToString())))
            .ForMember(d => d.era_canevacueeprovidefood, opts => opts.MapFrom(s => Lookup(s.CanProvideFood)))
            .ForMember(d => d.era_canevacueeprovideclothing, opts => opts.MapFrom(s => Lookup(s.CanProvideClothing)))
            .ForMember(d => d.era_canevacueeprovideincidentals, opts => opts.MapFrom(s => Lookup(s.CanProvideIncidentals)))
            .ForMember(d => d.era_canevacueeprovidelodging, opts => opts.MapFrom(s => Lookup(s.CanProvideLodging)))
            .ForMember(d => d.era_canevacueeprovidetransportation, opts => opts.MapFrom(s => Lookup(s.CanProvideTransportation)))
            .ForMember(d => d.era_dietaryrequirement, opts => opts.MapFrom(s => s.HaveSpecialDiet))
            .ForMember(d => d.era_dietaryrequirementdetails, opts => opts.MapFrom(s => s.SpecialDietDetails))
            .ForMember(d => d.era_medicationrequirement, opts => opts.MapFrom(s => s.TakeMedication))
            .ForMember(d => d.era_hasenoughsupply, opts => opts.MapFrom(s => s.HaveMedicalSupplies))
            .ForMember(d => d.era_insurancecoverage, opts => opts.MapFrom(s => (int?)Enum.Parse <InsuranceOptionOptionSet>(s.Insurance.ToString())))
            .ForMember(d => d.era_householdrecoveryplan, opts => opts.MapFrom(s => resolveNoteContent(s.Notes.FirstOrDefault(n => n.Type == NoteType.RecoveryPlan))))
            .ForMember(d => d.era_evacuationimpacttohousehold, opts => opts.MapFrom(s => resolveNoteContent(s.Notes.FirstOrDefault(n => n.Type == NoteType.EvacuationImpact))))
            .ForMember(d => d.era_externalreferralsdetails, opts => opts.MapFrom(s => resolveNoteContent(s.Notes.FirstOrDefault(n => n.Type == NoteType.ExternalReferralServices))))
            .ForMember(d => d.era_haschildcarereferral, opts => opts.MapFrom(s => s.RecommendedReferralServices.Contains(ReferralServices.ChildCare)))
            .ForMember(d => d.era_hasfirstaidreferral, opts => opts.MapFrom(s => s.RecommendedReferralServices.Contains(ReferralServices.FirstAid)))
            .ForMember(d => d.era_hasinquiryreferral, opts => opts.MapFrom(s => s.RecommendedReferralServices.Contains(ReferralServices.Inquiry)))
            .ForMember(d => d.era_haspersonalservicesreferral, opts => opts.MapFrom(s => s.RecommendedReferralServices.Contains(ReferralServices.Personal)))
            .ForMember(d => d.era_haspetcarereferral, opts => opts.MapFrom(s => s.RecommendedReferralServices.Contains(ReferralServices.PetCare)))
            .ForMember(d => d.era_hashealthservicesreferral, opts => opts.MapFrom(s => s.RecommendedReferralServices.Contains(ReferralServices.Health)))
            .ForMember(d => d.era_addressline1, opts => opts.MapFrom(s => s.EvacuatedFrom.AddressLine1))
            .ForMember(d => d.era_addressline2, opts => opts.MapFrom(s => s.EvacuatedFrom.AddressLine2))
            .ForMember(d => d.era_postalcode, opts => opts.MapFrom(s => s.EvacuatedFrom.PostalCode))
            .ForMember(d => d._era_jurisdictionid_value, opts => opts.MapFrom(s => s.EvacuatedFrom.CommunityCode))
            .ForMember(d => d.era_era_householdmember_era_needassessment, opts => opts.MapFrom(s => s.HouseholdMembers))
            .ForPath(d => d.era_registrationlocation, opts => opts.Ignore())
            ;

            CreateMap <era_needassessment, EvacuationAddress>()
            .ForMember(d => d.AddressLine1, opts => opts.MapFrom(s => s.era_addressline1))
            .ForMember(d => d.AddressLine2, opts => opts.MapFrom(s => s.era_addressline2))
            .ForMember(d => d.PostalCode, opts => opts.MapFrom(s => s.era_postalcode))
            .ForMember(d => d.CommunityCode, opts => opts.MapFrom(s => s._era_jurisdictionid_value))
            ;

            CreateMap <era_needassessment, NeedsAssessment>()
            .ForMember(d => d.Id, opts => opts.MapFrom(s => s.era_needassessmentid))
            .ForMember(d => d.EvacuatedFrom, opts => opts.MapFrom(s => s))
            .ForMember(d => d.CompletedByTeamMemberId, opts => opts.MapFrom(s => s._era_reviewedbyid_value))
            .ForMember(d => d.CompletedOn, opts => opts.MapFrom(s => s.createdon.Value.UtcDateTime))
            .ForMember(d => d.LastModified, opts => opts.MapFrom(s => s.modifiedon.Value.UtcDateTime))
            .ForMember(d => d.LastModifiedTeamMemberId, opts => opts.MapFrom(s => s._era_reviewedbyid_value))
            .ForMember(d => d.Type, opts => opts.MapFrom(s => (int?)Enum.Parse <NeedsAssessmentType>(((NeedsAssessmentTypeOptionSet)s.era_needsassessmenttype).ToString())))
            .ForMember(d => d.CanProvideClothing, opts => opts.MapFrom(s => Lookup(s.era_canevacueeprovideclothing)))
            .ForMember(d => d.CanProvideFood, opts => opts.MapFrom(s => Lookup(s.era_canevacueeprovidefood)))
            .ForMember(d => d.CanProvideIncidentals, opts => opts.MapFrom(s => Lookup(s.era_canevacueeprovideincidentals)))
            .ForMember(d => d.CanProvideLodging, opts => opts.MapFrom(s => Lookup(s.era_canevacueeprovidelodging)))
            .ForMember(d => d.CanProvideTransportation, opts => opts.MapFrom(s => Lookup(s.era_canevacueeprovidetransportation)))
            .ForMember(d => d.TakeMedication, opts => opts.MapFrom(s => s.era_medicationrequirement))
            .ForMember(d => d.HaveMedicalSupplies, opts => opts.MapFrom(s => s.era_hasenoughsupply))
            .ForMember(d => d.Insurance, opts => opts.MapFrom(s => Enum.Parse <InsuranceOption>(((InsuranceOptionOptionSet)s.era_insurancecoverage).ToString())))
            .ForMember(d => d.HaveSpecialDiet, opts => opts.MapFrom(s => s.era_dietaryrequirement))
            .ForMember(d => d.SpecialDietDetails, opts => opts.MapFrom(s => s.era_dietaryrequirementdetails))
            .ForMember(d => d.HavePetsFood, opts => opts.Ignore())
            .ForMember(d => d.HouseholdMembers, opts => opts.MapFrom(s => s.era_era_householdmember_era_needassessment))
            .ForMember(d => d.Pets, opts => opts.Ignore())
            .ForMember(d => d.Notes, opts => opts.Ignore())
            .ForMember(s => s.RecommendedReferralServices, opts => opts.MapFrom(s => new[]
            {
                s.era_haschildcarereferral.GetValueOrDefault(false) ? ReferralServices.ChildCare : null,
                s.era_hasfirstaidreferral.GetValueOrDefault(false) ? ReferralServices.FirstAid : null,
                s.era_hasinquiryreferral.GetValueOrDefault(false) ? ReferralServices.Inquiry : null,
                s.era_haspersonalservicesreferral.GetValueOrDefault(false) ? ReferralServices.Personal : null,
                s.era_haspetcarereferral.GetValueOrDefault(false) ? ReferralServices.PetCare : null,
                s.era_hashealthservicesreferral.GetValueOrDefault(false) ? ReferralServices.Health : (ReferralServices?)null,
            }.Where(r => r != null).ToArray()))
            ;

            CreateMap <era_householdmember, HouseholdMember>()
            .ForMember(d => d.Id, opts => opts.MapFrom(s => s.era_householdmemberid))
            .ForMember(d => d.LinkedRegistrantId, opts => opts.MapFrom(s => s.era_Registrant == null ? null : s.era_Registrant.contactid))
            .ForMember(d => d.HasAccessRestriction, opts => opts.MapFrom(s => s.era_Registrant == null ? null : s.era_Registrant.era_restriction))
            .ForMember(d => d.IsVerifiedRegistrant, opts => opts.MapFrom(s => s.era_Registrant == null ? null : s.era_Registrant.era_verified))
            .ForMember(d => d.IsAuthenticatedRegistrant, opts => opts.MapFrom(s => s.era_Registrant == null ? null : s.era_Registrant.era_authenticated))
            .ForMember(d => d.IsPrimaryRegistrant, opts => opts.MapFrom(s => s.era_isprimaryregistrant))
            .ForMember(d => d.IsMinor, opts => opts.MapFrom(s => s.era_isunder19))
            .ForMember(d => d.FirstName, opts => opts.MapFrom(s => s.era_firstname.ToString()))
            .ForMember(d => d.LastName, opts => opts.MapFrom(s => s.era_lastname.ToString()))
            .ForMember(d => d.DateOfBirth, opts => opts.MapFrom(s => !s.era_dateofbirth.HasValue
                    ? null
                    : $"{s.era_dateofbirth.Value.Month:D2}/{s.era_dateofbirth.Value.Day:D2}/{s.era_dateofbirth.Value.Year:D4}"))
            .ForMember(d => d.Initials, opts => opts.MapFrom(s => s.era_initials.ToString()))
            .ForMember(d => d.Gender, opts => opts.ConvertUsing <GenderConverter, int?>(s => s.era_gender))

            .ReverseMap()
            .ForMember(d => d.era_householdmemberid, opts => opts.MapFrom(s => isGuid(s.Id) ? Guid.Parse(s.Id) : (Guid?)null))
            .ForMember(d => d.era_isprimaryregistrant, opts => opts.MapFrom(s => s.IsPrimaryRegistrant))
            .ForMember(d => d.era_isunder19, opts => opts.MapFrom(s => DateTime.Parse(s.DateOfBirth).CalculatetAge() < 19))
            .ForMember(d => d.era_firstname, opts => opts.MapFrom(s => s.FirstName))
            .ForMember(d => d.era_lastname, opts => opts.MapFrom(s => s.LastName))
            .ForMember(d => d.era_initials, opts => opts.MapFrom(s => s.Initials))
            .ForMember(d => d.era_gender, opts => opts.ConvertUsing <GenderConverter, string>(s => s.Gender))
            .ForMember(d => d.era_dateofbirth, opts => opts.MapFrom(s => string.IsNullOrEmpty(s.DateOfBirth) ? (Date?)null : Date.Parse(s.DateOfBirth)))
            .ForMember(d => d._era_registrant_value, opts => opts.MapFrom(s => s.LinkedRegistrantId))
            ;

            CreateMap <era_animal, Pet>()
            .ForMember(d => d.Id, opts => opts.MapFrom(s => s.era_animalid.ToString()))
            .ForMember(d => d.Quantity, opts => opts.MapFrom(s => s.era_numberofpets))
            .ForMember(d => d.Type, opts => opts.MapFrom(s => s.era_name))

            .ReverseMap()
            .ValidateMemberList(MemberList.Source)
            .ForSourceMember(s => s.Id, opts => opts.DoNotValidate())
            .ForMember(d => d.era_animalid, opts => opts.MapFrom(s => Guid.NewGuid()))
            .ForMember(d => d.era_numberofpets, opts => opts.MapFrom(s => s.Quantity))
            .ForMember(d => d.era_name, opts => opts.MapFrom(s => s.Type));

            CreateMap <era_essfilenote, Note>()
            .ForMember(d => d.Id, opts => opts.MapFrom(s => s.era_essfilenoteid))
            .ForMember(d => d.Content, opts => opts.MapFrom(s => s.era_notetext))
            .ForMember(d => d.AddedOn, opts => opts.MapFrom(s => s.createdon.Value.UtcDateTime))
            .ForMember(d => d.ModifiedOn, opts => opts.MapFrom(s => s.modifiedon.Value.UtcDateTime))
            .ForMember(d => d.CreatingTeamMemberId, opts => opts.MapFrom(s => s._era_essteamuserid_value))
            .ForMember(d => d.Type, opts => opts.MapFrom(s => NoteType.General))
            .ForMember(d => d.IsHidden, opts => opts.MapFrom(s => s.era_ishidden == true))
            ;

            CreateMap <Note, era_essfilenote>(MemberList.None)
            .ForMember(d => d.era_essfilenoteid, opts => opts.MapFrom(s => s.Id))
            .ForMember(d => d.era_notetext, opts => opts.MapFrom(s => s.Content))
            .ForMember(d => d._era_essteamuserid_value, opts => opts.MapFrom(s => isGuid(s.CreatingTeamMemberId) ? Guid.Parse(s.CreatingTeamMemberId) : (Guid?)null))
            .ForMember(d => d.era_ishidden, opts => opts.MapFrom(s => s.IsHidden))
            ;
        }