예제 #1
0
        /// <summary>
        /// Update an existing Guest in the databse.
        /// </summary>
        /// <param name="p_guest">New Guest-Object.</param>
        /// <returns>The updated Guest-Object. NULL, or Exception if an error occurs.</returns>
        public Guest Update(Guest p_guest)
        {
            using (var context = new FhdwHotelContext())
            {
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        p_guest.ContactAddress = context.Address.SingleOrDefault(a => a.ID == p_guest.ContactAddress.ID);
                        p_guest.BillingAddress = context.Address.SingleOrDefault(a => a.ID == p_guest.BillingAddress.ID);

                        context.Guest.Add(p_guest);
                        context.SaveChanges();
                        transaction.Commit();

                        return p_guest;
                    }
                    catch (Exception ex)
                    {
                        System.Diagnostics.Debug.WriteLine(ex.Message);
                        transaction.Rollback();
                        return null;
                    }
                }
            }
        }
예제 #2
0
        /// <summary>
        /// Update an existing Booking entry.
        /// </summary>
        /// <param name="p_booking">Bookingobject with an ID.</param>
        /// <returns>Updated Bookingobject.</returns>
        public Booking Update(Booking p_booking)
        {
            using (var context = new FhdwHotelContext())
            {

                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        p_booking.Hotel = context.Hotel.SingleOrDefault(h => h.ID == p_booking.Hotel.ID);

                        context.Booking.Add(p_booking);
                        context.SaveChanges();

                        transaction.Commit();
                        return p_booking;
                    }
                    catch (Exception ex)
                    {
                        System.Diagnostics.Debug.WriteLine(ex.Message);
                        transaction.Rollback();
                        return null;
                    }
                }
            }
        }
예제 #3
0
        /// <summary>
        /// Insert a new Room into the databse.
        /// </summary>
        /// <param name="p_room">The new Room.</param>
        /// <returns>The Newly created Room-Object. NULL, or Exception if an error occurs.</returns>
        public Room Insert(Room p_room)
        {
            using (var context = new FhdwHotelContext())
            {
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        var hotel = context.Hotel.SingleOrDefault(h => h.ID == p_room.Hotel.ID);
                        p_room.Hotel = hotel;

                        context.Room.Add(p_room);
                        context.SaveChanges();

                        transaction.Commit();
                        return p_room;
                    }
                    catch (Exception ex)
                    {
                        System.Diagnostics.Debug.WriteLine(ex.Message);
                        transaction.Rollback();
                        return null;
                    }
                }
            }
        }
예제 #4
0
        /// <summary>
        /// Insert a new booking into the database.
        /// </summary>
        /// <param name="p_booking">Bookingobject without an ID.</param>
        /// <returns>Filled Bookingobject.</returns>
        public Booking Insert(Booking p_booking)
        {
            using (var context = new FhdwHotelContext())
            {
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        p_booking.Hotel = context.Hotel.SingleOrDefault(h => h.ID == p_booking.Hotel.ID);
                        if (p_booking.Guest != null && p_booking.Guest.ID > 0)
                        {
                            p_booking.Guest = context.Guest.SingleOrDefault(g => g.ID == p_booking.Guest.ID);
                            if (p_booking.Guest.ContactAddress.ID > 0) p_booking.Guest.ContactAddress = context.Address.SingleOrDefault(a => a.ID == p_booking.Guest.ContactAddress.ID);
                            if (p_booking.Guest.BillingAddress.ID > 0) p_booking.Guest.BillingAddress = context.Address.SingleOrDefault(a => a.ID == p_booking.Guest.BillingAddress.ID);
                        }

                        var rooms = p_booking.Rooms;
                        p_booking.Rooms = new List<Room>();
                        foreach (var room in rooms)
                        {
                            p_booking.Rooms.Add(context.Room.FirstOrDefault(r => r.ID == room.ID));
                        }


                        context.Booking.Add(p_booking);
                        context.SaveChanges();

                        transaction.Commit();
                        return p_booking;
                    }
                    catch (Exception ex)
                    {
                        System.Diagnostics.Debug.WriteLine(ex.Message);
                        transaction.Rollback();
                        return null;
                    }
                }
            }
        }
예제 #5
0
        /// <summary>
        /// Add Testdata to the Database.
        /// </summary>
        /// <param name="p_addresses">A Collection with Addressobjects.</param>
        /// <param name="p_admins">A Collection with Adminobjects</param>
        /// <param name="p_bookings">A Collection with Bookingobjects</param>
        /// <param name="p_guests">A Collection with Guestobjects</param>
        /// <param name="p_hotels">A Collection with Hotelobjects</param>
        /// <param name="p_rooms">A Collection with Roomobjects</param>
        /// <param name="p_roomTypes">A Collection of RoomTypes</param>
        /// <param name="p_roomCategories">A Collection of Roomcategories.</param>
        public void InsertTestData(ICollection<Address> p_addresses, ICollection<Admin> p_admins, ICollection<Booking> p_bookings, ICollection<Guest> p_guests, ICollection<DomainModel.Hotel> p_hotels, ICollection<Room> p_rooms, ICollection<RoomType> p_roomTypes, ICollection<RoomCategory> p_roomCategories)
        {
            using (var context = new FhdwHotelContext())
            {
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        if (p_roomTypes != null && !context.RoomType.Any())
                        {
                            context.RoomType.AddRange(p_roomTypes);
                            context.SaveChanges();
                        }

                        if (p_roomCategories != null && !context.RoomCategory.Any())
                        {
                            context.RoomCategory.AddRange(p_roomCategories);
                            context.SaveChanges();
                        }

                        if (p_admins != null && !context.Admin.Any())
                        {
                            context.Admin.AddRange(p_admins);
                            context.SaveChanges();
                        }

                        if (p_addresses != null && !context.Address.Any())
                        {
                            context.Address.AddRange(p_addresses);
                            context.SaveChanges();
                        }

                        if (p_hotels != null && !context.Hotel.Any())
                        {
                            foreach (var hotel in p_hotels)
                            {
                                hotel.Address = context.Address.SingleOrDefault(a => a.ID == hotel.Address.ID);
                                context.Hotel.Add(hotel);
                            }
                            context.SaveChanges();
                        }

                        if (p_rooms != null && !context.Room.Any())
                        {
                            foreach (var room in p_rooms)
                            {
                                room.Hotel = context.Hotel.SingleOrDefault(h => h.ID == room.Hotel.ID);
                                context.Room.Add(room);
                            }
                            context.SaveChanges();
                        }

                        if (p_guests != null && !context.Guest.Any())
                        {
                            foreach (var guest in p_guests)
                            {
                                if (guest.ContactAddress != null) guest.ContactAddress = context.Address.SingleOrDefault(a => a.ID == guest.ContactAddress.ID);
                                if (guest.BillingAddress != null) guest.BillingAddress = context.Address.SingleOrDefault(a => a.ID == guest.BillingAddress.ID);
                                context.Guest.Add(guest);
                            }
                            context.SaveChanges();
                        }

                        if (p_bookings != null && !context.Booking.Any()) context.Booking.AddRange(p_bookings);

                        transaction.Commit();
                    }
                    catch (Exception ex)
                    {
                        System.Diagnostics.Debug.WriteLine(ex.Message);
                        transaction.Rollback();
                    }
                }
            }
        }
예제 #6
0
        /// <summary>
        /// Delete a room from the database.
        /// </summary>
        /// <param name="p_room">Roomobject with the ID set.</param>
        /// <returns>The deleted Room-Object. NULL, or Exception if an error occurs.</returns>
        public Room Delete(Room p_room)
        {
            using (var context = new FhdwHotelContext())
            {
                using (var transaction = context.Database.BeginTransaction())
                {
                    try
                    {
                        var roomToDelete = context.Room.SingleOrDefault(r => r.ID == p_room.ID);

                        context.Room.Remove(roomToDelete);
                        context.SaveChanges();
                        transaction.Commit();

                        return roomToDelete;
                    }
                    catch (Exception ex)
                    {
                        System.Diagnostics.Debug.WriteLine(ex.Message);
                        transaction.Rollback();
                        return null;
                    }
                }
            }
        }