Ejemplo n.º 1
0
        /// <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;
        }