/// <summary>
        /// Function to map PersonBase to Guest.
        /// </summary>
        /// <param name="personBase">Instance of PersonBase</param>
        /// <returns>Instance of Guest</returns>
        public static Guest MapToGuest(this PersonBase personBase)
        {
            if (personBase == null)
            {
                throw new ArgumentNullException("personBase");
            }

            Guest guest = new Guest();
            guest.GuestId = personBase.PersonId;
            return guest;
        }
        /// <summary>
        /// Maps the guest reservation detail.
        /// </summary>
        /// <param name="dataReader">The data reader.</param>
        /// <returns>Guest collection</returns>
        private static async Task<GuestCollection> RetrieveGuestReservationDetail(SqlDataReader dataReader)
        {
            var guestCollection = new GuestCollection();
            if (dataReader != null)
            {
                while (await dataReader.ReadAsync())
                {
                    var guest = new Guest();

                    guest.GuestId = dataReader.Int32Field(GuestId).ToString();
                    guest.CruiseDetail = new GuestCruiseDetail();
                    guest.CruiseDetail.ReservationId = dataReader.Int32Field(ReservationId).ToString();
                    guest.CruiseDetail.ReservationNumber = dataReader.StringField(ReservationNumber);
                    guest.CruiseDetail.IsVip = dataReader.BooleanField(VIPFlag);
                    guest.CruiseDetail.IsPrimary = dataReader.BooleanField(IsPrimary);
                    guest.CruiseDetail.Stateroom = dataReader.StringField(Stateroom);
                    guest.CruiseDetail.EmbarkDate = dataReader.DateTimeField(EmbarkDate);
                    guest.CruiseDetail.DebarkDate = dataReader.DateTimeField(DebarkDate);
                    guest.CruiseDetail.ReservationStatusId = dataReader.ByteField(ReservationStatusId).ToString();
                    guest.CruiseDetail.VoyageId = dataReader.Int32Field(VoyageId).ToString();
                    var loyaltyLevelTypeId = dataReader.Int32NullableField(LoyaltyLevelTypeId);
                    guest.CruiseDetail.LoyaltyLevelTypeId = loyaltyLevelTypeId.HasValue ? loyaltyLevelTypeId.Value.ToString() : null;
                    var beaconId = dataReader.Int32NullableField(BeaconId);
                    guest.CruiseDetail.BeaconId = beaconId.HasValue ? beaconId.Value.ToString() : null;
                    ////guest.CruiseDetail.HasRecovery = dataReader.BooleanField(HasRecovery);
                    guest.CruiseDetail.HasTravelWith = dataReader.BooleanField(HasTravelWith);
                    guest.CruiseDetail.IsFolioAtRisk = dataReader.BooleanField(IsFolioAtRisk);
                    guest.CruiseDetail.CanDebarkAlone = dataReader.BooleanField(CanDebarkAlone);
                    guest.CruiseDetail.StateroomOccupancy = dataReader.ByteField(StateroomOccupancy).ToString();
                    guest.CruiseDetail.DiningDetail = dataReader.StringField(DiningDetail);
                    guest.CruiseDetail.IsCheckedIn = dataReader.BooleanField(IsCheckedIn);
                    guest.CruiseDetail.IsConciergeStatus = dataReader.BooleanField(IsConciergeStatus);
                    guest.CruiseDetail.IsBackToBack = dataReader.BooleanField(IsBackToBack);

                    var stateroomCategoryTypeId = dataReader.Int16NullableField(StateroomCategoryTypeID);
                    guest.CruiseDetail.StateroomCategoryTypeId = stateroomCategoryTypeId.HasValue ? stateroomCategoryTypeId.Value.ToString() : null;
                    guest.CruiseDetail.StateroomCategoryType = dataReader.StringField(Category);

                    guestCollection.Add(guest);
                }
            }

            return guestCollection;
        }
        /// <summary>
        /// Retrieves the guest personal detail.
        /// </summary>
        /// <param name="dataReader">The data reader.</param>
        /// <returns>Guest Collection.</returns>
        private static async Task<GuestCollection> RetrieveGuestPersonalDetail(SqlDataReader dataReader)
        {
            var guestCollection = new GuestCollection();
            if (dataReader != null)
            {
                while (await dataReader.ReadAsync())
                {
                    var guest = new Guest();

                    guest.GuestId = dataReader.Int32Field(GuestId).ToString();
                    guest.PersonalDetail = new PersonalDetail();
                    guest.PersonalDetail.Title = dataReader.StringField(Title);
                    guest.PersonalDetail.FirstName = dataReader.StringField(FirstName);
                    guest.PersonalDetail.MiddleName = dataReader.StringField(MiddleName);
                    guest.PersonalDetail.LastName = dataReader.StringField(LastName);
                    guest.PersonalDetail.Nickname = dataReader.StringField(NickName);
                    guest.PersonalDetail.PreferredName = dataReader.StringField(PreferredName);
                    guest.PersonalDetail.Suffix = dataReader.StringField(Suffix);
                    guest.PersonalDetail.Birthdate = dataReader.DateTimeNullableField(BirthDate);
                    guest.PersonalDetail.BirthCountryId = dataReader.Int32NullableField(BirthCountryId).HasValue ? dataReader.Int32NullableField("BirthCountryID").Value.ToString() : null;
                    guest.PersonalDetail.CitizenshipCountryId = dataReader.Int32NullableField(CitizenshipCountryId).HasValue ? dataReader.Int32NullableField("BirthCountryID").Value.ToString() : null;
                    guest.PersonalDetail.Gender = dataReader.StringField(Gender);
                    guest.PersonalDetail.MaritalStatus = dataReader.StringField(MaritalStatus);
                    guest.PersonalDetail.Occupation = dataReader.StringField(Occupation);
                    guest.PersonalDetail.AnniversaryDate = dataReader.DateTimeNullableField(AnniversaryDate);
                    guest.PersonalDetail.DocumentNumber = dataReader.StringField(DocumentNumber);
                    guest.PersonalDetail.Age = dataReader.Int16Field(Age);
                    guest.PersonalDetail.SourceId = dataReader.StringField(SourceId);

                    guestCollection.Add(guest);
                }
            }

            return guestCollection;
        }
        /// <summary>
        /// Function to add alert.
        /// </summary>
        /// <param name="guest">The guest.</param>
        private static void AddAlert(Guest guest)
        {
            if (guest != null)
            {
                var guestFolios = guest.Folios.FirstOrDefault();

                var alert = guest.Alerts.FirstOrDefault(g => g.AlertType.Equals(CommonConstants.AllowOnboard, StringComparison.OrdinalIgnoreCase));

                if (alert != null)
                {
                    guest.AllowOnboardAlert = alert;
                }

                if (guest.CruiseDetail != null && guestFolios != null && !guestFolios.IsGangwayAllowed && guest.CruiseDetail.FolioOverdueAmount >= CommonConstants.ThresholdFolioOverdueAmount)
                {
                    guest.Alerts.Add(AlertService.CreateAlerts(Folio));
                }

                if (guest.CruiseDetail != null && !guest.IsOnboardWithoutCheckIn && !guest.CruiseDetail.IsCheckedIn)
                {
                    guest.Alerts.Add(AlertService.CreateAlerts(NotCheckedIn));
                }
                else if (guest.IsOnboardWithoutCheckIn)
                {
                    guest.Alerts.Remove(alert);
                }

                guest.HasAlert = guest.Alerts.Count > 0;
            }
        }
 /// <summary>
 /// Deprecated Method for adding a new object to the Guests EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
 /// </summary>
 public void AddToGuests(Guest guest)
 {
     base.AddObject("Guests", guest);
 }
        /// <summary>
        /// Maps the person data.
        /// </summary>
        /// <param name="guest">The guest.</param>
        /// <param name="retrievedGuest">The retrieved guest.</param>
        private static void MapGuestPersonalDetails(Guest guest, Guest retrievedGuest)
        {
            guest.PersonalDetail.FirstName = retrievedGuest.PersonalDetail.FirstName;
            guest.PersonalDetail.LastName = retrievedGuest.PersonalDetail.LastName;
            guest.PersonalDetail.Gender = retrievedGuest.PersonalDetail.Gender;
            guest.PersonalDetail.Age = retrievedGuest.PersonalDetail.Age;
            guest.PersonalDetail.Birthdate = retrievedGuest.PersonalDetail.Birthdate;
            guest.SecurityPhotoAddress = retrievedGuest.SecurityPhotoAddress;
            guest.CruiseDetail.Stateroom = retrievedGuest.CruiseDetail.Stateroom;
            guest.CruiseDetail.StateroomOccupancy = retrievedGuest.CruiseDetail.StateroomOccupancy;
            guest.CruiseDetail.StateroomCategoryType = GetStateroomCategoryType(retrievedGuest); ////todo
            guest.CruiseDetail.ReservationNumber = retrievedGuest.CruiseDetail.ReservationNumber;
            guest.PersonalDetail.Title = retrievedGuest.PersonalDetail.Title;
            guest.CruiseDetail.LoyaltyLevelTypeId = retrievedGuest.CruiseDetail.LoyaltyLevelTypeId;
            guest.CruiseDetail.LoyaltyLevelName = RetrieveLoyaltyLevelNameById(retrievedGuest.CruiseDetail);
            guest.PersonalDetail.Country = RetriveCountry(retrievedGuest.PersonalDetail);
            if (guest.PersonalDetail.Country != null)
            {
                guest.PersonalDetail.Country.Name = retrievedGuest.PersonalDetail.Country.Name;
            }

            guest.CruiseDetail.EmbarkDate = retrievedGuest.CruiseDetail.EmbarkDate;
            guest.CruiseDetail.DebarkDate = retrievedGuest.CruiseDetail.DebarkDate;
            guest.CruiseDetail.DiningDetail = retrievedGuest.CruiseDetail.DiningDetail;
            guest.CruiseDetail.Celebrations = retrievedGuest.CruiseDetail.Celebrations;
            guest.CruiseDetail.IsConciergeStatus = retrievedGuest.CruiseDetail.IsConciergeStatus;
            guest.CruiseDetail.IsBackToBack = retrievedGuest.CruiseDetail.IsBackToBack;
            guest.PersonalDetail.DocumentNumber = retrievedGuest.PersonalDetail.DocumentNumber;
            guest.PersonalDetail.DocumentType = retrievedGuest.PersonalDetail.DocumentType;
            foreach (var authorization in retrievedGuest.PortAuthorizations)
            {
                guest.PortAuthorizations.Add(authorization);
            }
        }
        /// <summary>
        /// Maps the guest alerts.
        /// </summary>
        /// <param name="guest">The guest.</param>
        /// <param name="retrievedGuest">The retrieved guest.</param>
        private static void MapGuestAlerts(Guest guest, Guest retrievedGuest)
        {
            var selectedPerson = RetrieveSelectedPerson();

            guest.HasAlert = retrievedGuest.HasAlert;
            guest.AssignAlerts(retrievedGuest.Alerts);

            if (guest.GuestId.Equals(selectedPerson.PersonId, StringComparison.OrdinalIgnoreCase))
            {
                selectedPerson.HasAlert = retrievedGuest.HasAlert;
                selectedPerson.AssignAlerts(retrievedGuest.Alerts);
                Messenger.Instance.Notify(MessengerMessage.NotifyPersonAlert, selectedPerson);
                Messenger.Instance.Notify(MessengerMessage.NotifyAlertDetails, selectedPerson);
            }
        }
 /// <summary>
 /// Maps the guest data.
 /// </summary>
 /// <param name="guest">The guest.</param>
 /// <param name="retrievedGuest">The retrieved guest.</param>
 /// <param name="eventType">Type of the event.</param>
 private static void MapGuestData(Guest guest, Guest retrievedGuest, NotificationEventType eventType)
 {
     if (guest != null)
     {
         if (eventType == NotificationEventType.PersonData)
         {
             MapGuestPersonalDetails(guest, retrievedGuest);
         }
         else if (eventType == NotificationEventType.Reservation)
         {
             MapGuestPersonalDetails(guest, retrievedGuest);
             MapGuestBoardingStatusData(guest, retrievedGuest);
             MapGuestAlerts(guest, retrievedGuest);
             MapGuestMessages(guest, retrievedGuest);
         }
         else if (eventType == NotificationEventType.BoardingStatus)
         {
             MapGuestBoardingStatusData(guest, retrievedGuest);
         }
         else if (eventType == NotificationEventType.Alert)
         {
             MapGuestAlerts(guest, retrievedGuest);
         }
         else if (eventType == NotificationEventType.Message)
         {
             MapGuestMessages(guest, retrievedGuest);
         }
     }
 }
 /// <summary>
 /// Function to place guest ashore.
 /// </summary>
 /// <param name="guest">Instance of Guest</param>
 private void PlaceGuestAshore(Guest guest)
 {
     if (guest.IsOnboard && this.workstation.CanAshore)
     {
         ChangeGuestBoardingStatus(guest);
     }
 }
 /// <summary>
 /// Function to place guest onboard.
 /// </summary>
 /// <param name="guest">Instance of Guest</param>
 private void PlaceGuestOnboard(Guest guest)
 {
     if (!guest.IsOnboard && this.workstation.CanOnboard)
     {
         ChangeGuestBoardingStatus(guest);
     }
 }
        /// <summary>
        /// Views the guest stateroom details.
        /// </summary>
        /// <param name="guest">The guest.</param>
        private void ViewGuestStateroomDetails(Guest guest)
        {
            this.IsShowPersonInfoIconClicked = true;
            this.SelectGuest(guest);
            PersonBase person = guest.MapToPersonBase();

            if (this.tempLoyaltyLevelTypes != null)
            {
                var loyaltyLevelType = this.tempLoyaltyLevelTypes.FirstOrDefault(s => s.LoyaltyLevelTypeId == this.personsParty.SelectedPerson.CruiseDetail.LoyaltyLevelTypeId);
                if (loyaltyLevelType != null)
                {
                    person.LoyaltyLevel = loyaltyLevelType.Name;
                }
            }

            Messenger.Instance.Notify(MessengerMessage.ShowPersonInfo, new Tuple<PersonBase, bool>(person, false));
        }
        /// <summary>
        /// Function to select guest.
        /// </summary>
        /// <param name="guest">The guest.</param>
        private void SelectGuest(Guest guest)
        {
            if (guest != null && !this.IsStopSelection)
            {
                PersonBase personBase = guest.MapToPersonBase();
                PersonSelectionService.SelectPerson(personBase);
                if (!this.IsShowPersonInfoIconClicked)
                {
                    this.ShowAgeVerificationPopupView();
                }
            }

            this.IsShowPersonInfoIconClicked = false;
            this.IsStopSelection = false;
        }
        /// <summary>
        /// Function to change boarding status of the guest.
        /// </summary>
        /// <param name="guest">Instance of the guest</param>
        private static void ChangeGuestBoardingStatus(Guest guest)
        {
            if (guest != null)
            {
                PersonBase personBase = guest.MapToPersonBase();
                PersonSelectionService.SelectPerson(personBase);

                Messenger.Instance.Notify(MessengerMessage.ChangePersonBoardingStatus, personBase);
            }
        }
        private void SetUpData()
        {
            this.targetService = new PhotoService();
            this.person = new Person();
            CrewmemberCollection crewMembers = new CrewmemberCollection();
            var personDetail = new PersonalDetail { CitizenshipCountryId = string.Empty, FirstName = string.Empty, LastName = string.Empty, MiddleName = string.Empty, Title = string.Empty, PreferredName = string.Empty, MaritalStatus = string.Empty, Nickname = string.Empty, Occupation = string.Empty, DocumentNumber = string.Empty, Suffix = string.Empty };
            crewMembers.Add(new Crewmember { CrewmemberId = string.Empty, CrewmemberTypeId = "1", SecurityPhotoAddress = string.Empty, ChargeId = string.Empty, EmployeeNo = string.Empty, LastEvent = string.Empty, PersonalDetail = personDetail });
            this.person.AssignCrewmembers(crewMembers);

            GuestCollection guests = new GuestCollection();

            var checkInDetail = new CheckInDetail
            {
                ApplicationId = string.Empty,
                LocationId = "1",
                LocationTypeId = "1",
                MachineName = "Machine",
                Station = "station",
                UserId = "user"
            };
            var cruiseDetail = new GuestCruiseDetail
            {
                BeaconId = string.Empty,
                CheckInDetail = checkInDetail,
                LoyaltyLevelTypeId = "1",
                ReservationId = "1",
                Stateroom = stateroom,
                ReservationStatusId = "0000089",
                StateroomCategoryTypeId = "3"
            };

            var guest = new Guest
            {
                GuestId = PersonId,
                PersonalDetail = personDetail,
                Age = 0,
                CruiseDetail = cruiseDetail,
                SecurityPhotoAddress = string.Empty,
            };

            guests.Add(guest);

            this.person.AssignGuests(guests);

            PortDebarkAuthorization pda = new PortDebarkAuthorization { PortId = "1", PersonId = "00001", CanDebarkAlone = true, IsActivePort = true, PortOrder = 1 };

            DebarkAuthorizedPersonCollection dapCollection = new DebarkAuthorizedPersonCollection();

            dapCollection.Add(new DebarkAuthorizedPerson { PersonTypeId = "2", Person = this.FilledPerson(), PersonId = PersonId, PersonType = PersonType.Guest });
            pda.AssignDebarkAuthorizedPersons(dapCollection);

            PortDebarkAuthorizationCollection portDebarkAuthorizations = new PortDebarkAuthorizationCollection();
            portDebarkAuthorizations.Add(pda);
            guest.AssignPortAuthorizations(portDebarkAuthorizations);
            guests.Add(guest);

            this.listOfPDA.Add(pda);

            person.AssignGuests(guests);
        }
        /// <summary>
        /// Maps the guest personal detail.
        /// </summary>
        /// <param name="dataReader">The data reader.</param>
        /// <returns>Guest Collection.</returns>
        private static async Task<GuestCollection> MapGuests(SqlDataReader dataReader)
        {
            var guestCollection = new GuestCollection();
            if (dataReader != null)
            {
                while (await dataReader.ReadAsync())
                {
                    var guest = new Guest();

                    guest.GuestId = dataReader.Int32Field(GuestId).ToString();
                    var hasAlert = dataReader.BooleanNullableField(HasAlert);
                    guest.HasAlert = hasAlert.HasValue ? hasAlert.Value : false;
                    var hasMessage = dataReader.BooleanNullableField(HasMessage);
                    guest.HasMessage = hasMessage.HasValue ? hasMessage.Value : false;
                    guest.LastDateTime = dataReader.DateTimeNullableField(LastDateTime);
                    guest.LastEvent = dataReader.StringField(LastEvent);
                    guest.SecurityPhotoAddress = dataReader.StringField(SecurityPhotoMediaItemAddress);

                    byte[] bytes = await guest.SecurityPhotoAddress.ImageAddressToByteArray();
                    guest.Photo = bytes.ToBitmapSource();
                    guest.AssignPhotoByteArray(new Collection<byte>(bytes));
                    guestCollection.Add(guest);
                }
            }

            return guestCollection;
        }
 /// <summary>
 /// Function to retrieve photo of guest.
 /// </summary>
 /// <param name="guest">Instance of Guest</param>
 private static void RetrieveGuestPhoto(Guest guest)
 {
     Observable.ToAsync(() =>
     {
         var person = new Person();
         var guestCollection = new GuestCollection();
         guestCollection.Add(guest);
         person.AssignGuests(guestCollection);
         DIContainer.Instance.Resolve<PhotoService>().RetrievePhotos(person);
     })().Subscribe(r => { }, ex => { });
 }
 /// <summary>
 /// Shows the message.
 /// </summary>
 /// <param name="guest">The guest.</param>
 private void ShowMessage(Guest guest)
 {
     PersonBase personBase = guest.MapToPersonBase();
     PersonSelectionService.SelectPerson(personBase);
     this.ShowMessagePopUp(personBase);
 }
        /// <summary>
        /// Maps the guest messages.
        /// </summary>
        /// <param name="guest">The guest.</param>
        /// <param name="retrievedGuest">The retrieved guest.</param>
        private static void MapGuestMessages(Guest guest, Guest retrievedGuest)
        {
            var selectedPerson = RetrieveSelectedPerson();
            var messageAcknowledge = retrievedGuest.Messages.All(m => m.StatusId.Equals(CommonConstants.MessageAcknowledgeStatusId));
            guest.AreAllMessagesGotAcknowledged = messageAcknowledge;
            guest.AssignMessages(retrievedGuest.Messages);

            if (guest.GuestId.Equals(selectedPerson.PersonId, StringComparison.OrdinalIgnoreCase))
            {
                selectedPerson.AreAllMessagesGotAcknowledged = messageAcknowledge;
                selectedPerson.AssignPersonMessages(retrievedGuest.Messages);
                Messenger.Instance.Notify(MessengerMessage.NotifyPersonMessage, selectedPerson);
                Messenger.Instance.Notify(MessengerMessage.NotifyMessageDetails, selectedPerson);
            }
        }
        private Person FilledPerson()
        {
            var person = new Person();
            CrewmemberCollection crewMembers = new CrewmemberCollection();
            var personDetail = new PersonalDetail { CitizenshipCountryId = string.Empty, FirstName = string.Empty, LastName = string.Empty, MiddleName = string.Empty, Title = string.Empty, PreferredName = string.Empty, MaritalStatus = string.Empty, Nickname = string.Empty, Occupation = string.Empty, DocumentNumber = string.Empty, Suffix = string.Empty };
            crewMembers.Add(new Crewmember { CrewmemberId = string.Empty, CrewmemberTypeId = "1", SecurityPhotoAddress = string.Empty, ChargeId = string.Empty, EmployeeNo = string.Empty, LastEvent = string.Empty, PersonalDetail = personDetail });
            person.AssignCrewmembers(crewMembers);

            GuestCollection guests = new GuestCollection();
            var checkInDetail = new CheckInDetail
            {
                ApplicationId = string.Empty,
                LocationId = "1",
                LocationTypeId = "1",
                MachineName = "Machine",
                Station = "station",
                UserId = "user"
            };
            var cruiseDetail = new GuestCruiseDetail
            {
                BeaconId = string.Empty,
                CheckInDetail = checkInDetail,
                LoyaltyLevelTypeId = "1",
                ReservationId = "1",
                Stateroom = stateroom,
                ReservationStatusId = "0000089",
                StateroomCategoryTypeId = "aaasad"
            };
            var guest = new Guest
            {
                GuestId = PersonId,
                PersonalDetail = personDetail,
                Age = 0,
                CruiseDetail = cruiseDetail,
                SecurityPhotoAddress = string.Empty
            };

            var cruiseDetails = new GuestCruiseDetail { BeaconId = string.Empty, BerthNumber = string.Empty, IdentificationId = string.Empty, LoyaltyLevelTypeId = string.Empty, ReservationId = string.Empty, Stateroom = stateroom };
            //// var personDetail = new PersonalDetail { CitizenshipCountryId = string.Empty, FirstName = string.Empty, LastName = string.Empty, MiddleName = string.Empty, Title = string.Empty, PreferredName = string.Empty, MaritalStatus = string.Empty, Nickname = string.Empty, Occupation = string.Empty, PassportNo = string.Empty, Suffix = string.Empty };
            var personBase = new PersonBase
            {
                IsOnHold = true,
                ChargeId = ChargeId,
                CruiseDetail = cruiseDetails,
                PersonalDetail = personDetail,
                LastEvent = string.Empty,
                PersonId = PersonId,
                SecurityPhotoAddress = string.Empty,
                Stateroom = stateroom
            };

            PortDebarkAuthorization pda = new PortDebarkAuthorization { PortId = "1", PersonId = "00001", CanDebarkAlone = true, IsActivePort = true, PortOrder = 1 };

            DebarkAuthorizedPersonCollection dapCollection = new DebarkAuthorizedPersonCollection();

            dapCollection.Add(new DebarkAuthorizedPerson { PersonTypeId = "2", Person = personBase, PersonId = PersonId, PersonType = PersonType.Guest });
            pda.AssignDebarkAuthorizedPersons(dapCollection);

            PortDebarkAuthorizationCollection portDebarkAuthorizations = new PortDebarkAuthorizationCollection();
            portDebarkAuthorizations.Add(pda);
            guest.AssignPortAuthorizations(portDebarkAuthorizations);
            guests.Add(guest);

            person.AssignGuests(guests);
            return person;
        }
        /// <summary>
        /// Maps the boarding status data.
        /// </summary>
        /// <param name = "guest" > The guest.</param>
        /// <param name = "retrievedGuest" > The retrieved guest.</param>
        private static void MapGuestBoardingStatusData(Guest guest, Guest retrievedGuest)
        {
            var selectedPerson = RetrieveSelectedPerson();

            guest.IsOnboard = retrievedGuest.IsOnboard;
            guest.LastEvent = retrievedGuest.LastEvent;
            guest.LastDateTime = retrievedGuest.LastDateTime;

            if (guest.GuestId.Equals(selectedPerson.PersonId, StringComparison.OrdinalIgnoreCase))
            {
                selectedPerson.IsOnboard = retrievedGuest.IsOnboard;
                selectedPerson.LastEvent = retrievedGuest.LastEvent;
                selectedPerson.LastDateTime = retrievedGuest.LastDateTime;
            }
        }
        /// <summary>
        /// Handles the Click event of the AddButton control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        private void AddButton_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(this.Form.FirstNameTextBox.Text) ||
                string.IsNullOrEmpty(this.Form.LastNameTextBox.Text) ||
                string.IsNullOrEmpty(this.Form.CountryTextBox.Text) ||
                string.IsNullOrEmpty(this.Form.StreetTextBox.Text) ||
                string.IsNullOrEmpty(this.Form.PostCodeTextBox.Text) ||
                string.IsNullOrEmpty(this.Form.HouseNumberTextBox.Text) ||
                string.IsNullOrEmpty(this.Form.TownTextBox.Text) ||
                string.IsNullOrEmpty(this.Form.PhoneNumberTextBox.Text))
            {
                MessageBox.Show(
                    "Nie wpisano wszystkich wymaganych danych.",
                    "Błąd",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Exclamation,
                    MessageBoxDefaultButton.Button1);

                return;
            }

            var newGuest = new Guest
            {
                FirstName = this.Form.FirstNameTextBox.Text,
                LastName = this.Form.LastNameTextBox.Text,
                Email = this.Form.EmailTextBox.Text,
                CountryId = this.Form.CountryTextBox.Text,
                Street = this.Form.StreetTextBox.Text,
                PostCode = this.Form.PostCodeTextBox.Text,
                ApartmentNumber = this.Form.ApartmentNumberTextBox.Text,
                HouseNumber = this.Form.HouseNumberTextBox.Text,
                Town = this.Form.TownTextBox.Text,
                CompanyName = this.Form.CompanyNameTextBox.Text,
                IdNumber = this.Form.IDNumberTextBox.Text,
                TelephoneNumber = this.Form.PhoneNumberTextBox.Text
            };

            DataAccess.Instance.Guests.Add(newGuest);

            DataAccess.Instance.UnitOfWork.Commit();

            this.Form.Close();
        }
        /// <summary>
        /// Gets the stateroom category type identifier.
        /// </summary>
        /// <param name="guest">The guest.</param>
        /// <returns>stateroom category type</returns>
        private static string GetStateroomCategoryType(Guest guest)
        {
            if (guest.CruiseDetail != null && string.IsNullOrEmpty(guest.CruiseDetail.StateroomCategoryId))
            {
                return guest.CruiseDetail.StateroomCategoryType;
            }

            var staterommCategories = RetrieveStateroomCategories();
            var stateroomCategory = staterommCategories.FirstOrDefault(category => !string.IsNullOrEmpty(category.StateroomCategoryId) && category.StateroomCategoryId.Equals(guest.CruiseDetail.StateroomCategoryId));
            if (stateroomCategory != null)
            {
                return stateroomCategory.Category;
            }

            return null;
        }
 /// <summary>
 /// Create a new Guest object.
 /// </summary>
 /// <param name="id">Initial value of the Id property.</param>
 /// <param name="firstName">Initial value of the FirstName property.</param>
 /// <param name="lastName">Initial value of the LastName property.</param>
 /// <param name="street">Initial value of the Street property.</param>
 /// <param name="postCode">Initial value of the PostCode property.</param>
 /// <param name="apartmentNumber">Initial value of the ApartmentNumber property.</param>
 /// <param name="houseNumber">Initial value of the HouseNumber property.</param>
 /// <param name="town">Initial value of the Town property.</param>
 /// <param name="telephoneNumber">Initial value of the TelephoneNumber property.</param>
 /// <param name="countryId">Initial value of the CountryId property.</param>
 /// <param name="isVerified">Initial value of the IsVerified property.</param>
 public static Guest CreateGuest(global::System.Int32 id, global::System.String firstName, global::System.String lastName, global::System.String street, global::System.String postCode, global::System.String apartmentNumber, global::System.String houseNumber, global::System.String town, global::System.String telephoneNumber, global::System.String countryId, global::System.Boolean isVerified)
 {
     Guest guest = new Guest();
     guest.Id = id;
     guest.FirstName = firstName;
     guest.LastName = lastName;
     guest.Street = street;
     guest.PostCode = postCode;
     guest.ApartmentNumber = apartmentNumber;
     guest.HouseNumber = houseNumber;
     guest.Town = town;
     guest.TelephoneNumber = telephoneNumber;
     guest.CountryId = countryId;
     guest.IsVerified = isVerified;
     return guest;
 }