/// <summary> /// Maps the asynchronous. /// </summary> /// <param name="guestEntity">The guest entities.</param> /// <returns>Return instance of Guest.</returns> private static Guest MapAsync(Entities.Guest guestEntity) { var guest = new Guest(); if (guestEntity != null) { guest.GuestId = guestEntity.GuestId; guest.GuestReservationId = guestEntity.GuestReservationId; guest.PersonalDetail = guestEntity.PersonalDetail; guest.CruiseDetail = guest.CruiseDetail ?? new GuestCruiseDetail(); if (guestEntity.ReservationDetail != null) { guest.CruiseDetail.IsPrimary = guestEntity.ReservationDetail.IsPrimary; guest.CruiseDetail.LoyaltyLevelTypeId = guestEntity.ReservationDetail.LoyaltyLevelTypeId; guest.CruiseDetail.ReservationId = guestEntity.ReservationDetail.ReservationId; guest.CruiseDetail.ReservationNumber = guestEntity.ReservationDetail.ReservationNumber; guest.CruiseDetail.ReservationStatusId = guestEntity.ReservationDetail.ReservationStatusId; guest.CruiseDetail.Stateroom = guestEntity.ReservationDetail.StateroomId; guest.CruiseDetail.EmbarkDate = guestEntity.ReservationDetail.ReservationFromDate; guest.CruiseDetail.DebarkDate = guestEntity.ReservationDetail.ReservationToDate; guest.CruiseDetail.VoyageId = guestEntity.ReservationDetail.VoyageId; guest.CruiseDetail.CanDebarkAlone = guest.PersonalDetail != null && guest.PersonalDetail.Age.HasValue && guest.PersonalDetail.Age.Value >= ApplicationSetting.MaximumChildAge; } guest.PersonalDetail = guest.PersonalDetail ?? new PersonalDetail(); var passportDetail = guestEntity.Identifications.FirstOrDefault(a => a.DocumentTypeId.Equals(ApplicationSetting.DocumentTypeId, StringComparison.OrdinalIgnoreCase)); if (passportDetail != null) { guest.PersonalDetail.DocumentNumber = passportDetail.Number; guest.PersonalDetail.DocumentTypeId = passportDetail.DocumentTypeId; } else { var identificationDetail = guestEntity.Identifications.FirstOrDefault(); if (identificationDetail != null) { guest.PersonalDetail.DocumentNumber = identificationDetail.Number; guest.PersonalDetail.DocumentTypeId = identificationDetail.DocumentTypeId; } } var mediaItem = guestEntity.MediaItems.FirstOrDefault(a => a.MediaTypeId.Equals(ApplicationSetting.MediaTypeId, StringComparison.OrdinalIgnoreCase)); guest.SecurityPhotoAddress = mediaItem != null ? mediaItem.MediaItemAddress : null; if (guestEntity.Folios.Count > 0) { guest.AssignFolios(guestEntity.Folios); } } return guest; }