/// <summary>
 /// Create a new Reservation object.
 /// </summary>
 /// <param name="id">Initial value of the Id property.</param>
 /// <param name="guestId">Initial value of the GuestId property.</param>
 /// <param name="startDate">Initial value of the StartDate property.</param>
 /// <param name="endDate">Initial value of the EndDate property.</param>
 /// <param name="isVisit">Initial value of the IsVisit property.</param>
 public static Reservation CreateReservation(global::System.Int32 id, global::System.Int32 guestId, global::System.DateTime startDate, global::System.DateTime endDate, global::System.Boolean isVisit)
 {
     Reservation reservation = new Reservation();
     reservation.Id = id;
     reservation.GuestId = guestId;
     reservation.StartDate = startDate;
     reservation.EndDate = endDate;
     reservation.IsVisit = isVisit;
     return reservation;
 }
 /// <summary>
 /// Deprecated Method for adding a new object to the Reservations EntitySet. Consider using the .Add method of the associated ObjectSet&lt;T&gt; property instead.
 /// </summary>
 public void AddToReservations(Reservation reservation)
 {
     base.AddObject("Reservations", reservation);
 }
        /// <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 (this.Form.RoomsToBeReservedDataGridView.Rows.Count < 1)
            {
                MessageBox.Show(
                    "Należy zarezerwować minimum 1 pokój.",
                    "Błąd",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Exclamation,
                    MessageBoxDefaultButton.Button1);

                return;
            }

            if (!this.editsWereMade)
            {
                this.Form.Close();
                return;
            }

            if (this.IsEditForm)
            {
                DataAccess.Instance.Reservations.Delete(DataAccess.Instance.Reservations.Single(r => r.Id == this.ItemToEditID));

                var roomReservationsToDelete = from room in DataAccess.Instance.RoomReservations.Find(r => r.ReservationId == this.ItemToEditID)
                                               select room;

                foreach (var roomReservation in roomReservationsToDelete)
                {
                    DataAccess.Instance.RoomReservations.Delete(roomReservation);
                }
            }

            var reservation = new Reservation
            {
                AdditionalInfo = this.Form.AddInfoTextBox.Text,
                StartDate = this.Form.StartDateDateTimePicker.Value,
                EndDate = this.Form.EndDateDateTimePicker.Value,
                GuestId = this.ClientID
            };

            DataAccess.Instance.Reservations.Add(reservation);

            foreach (DataGridViewRow row in this.Form.RoomsToBeReservedDataGridView.Rows)
            {
                int roomNumber = (int)row.Cells[NumberColumnName].Value;

                DataAccess.Instance.RoomReservations.Add(
                    new RoomReservation
                    {
                        RoomId = roomNumber,
                        StartDate = this.Form.StartDateDateTimePicker.Value,
                        EndDate = this.Form.EndDateDateTimePicker.Value,
                        ReservationId = reservation.Id
                    });
            }

            DataAccess.Instance.UnitOfWork.Commit();
            this.Form.Close();
        }