//get rooms by id hotel
 public static List <Room> getRoomByIDHotel(int id)
 {
     using (var context = new ValaisBookingEntities())
     {
         return(context.Room.Include("Picture").Include("Hotel").Where(r => r.Hotel.IdHotel == id).ToList());
     }
 }
 //get hotel by location
 public static List <Hotel> getHotelByLocation(string city)
 {
     using (var context = new ValaisBookingEntities())
     {
         return(context.Hotel.Where(h => h.Location == city).ToList());
     }
 }
 //room by id room
 public static Room getRoomByIdRoom(int id)
 {
     using (var context = new ValaisBookingEntities())
     {
         return(context.Room.Include("Picture").Include("Hotel").Where(r => r.IdRoom == id).Single());
     }
 }
 //get hotel by id
 public static Hotel GetHotelById(int idHotel)
 {
     using (var context = new ValaisBookingEntities())
     {
         return(context.Hotel.Where(h => h.IdHotel == idHotel).Single());
     }
 }
 //get all hotel
 public static List <Hotel> getAllHotel()
 {
     using (var context = new ValaisBookingEntities())
     {
         return(context.Hotel.Include("Room").ToList <Hotel>());
     }
 }
 //get booking by id name
 public static List <Booking> getBooking(String firsname, String lastname)
 {
     using (var context = new ValaisBookingEntities())
     {
         return(context.Booking.Include("Room").Where(b => b.Firstname == firsname && b.Lastname == lastname).ToList());
     }
 }
 //cancel a room
 public static bool cancelBook(int idBook)
 {
     using (var context = new ValaisBookingEntities())
     {
         Booking book = (Booking)context.Booking.Where(b => b.IdBooking == idBook).Single();
         context.Booking.Remove(book);
         context.SaveChanges();
         return(true);
     }
 }
        //Check if hotel is busy
        private static bool hotel70Busy(int idHotel, DateTime cin, DateTime cout)
        {
            using (var context = new ValaisBookingEntities())
            {
                float       nbRooms = context.Room.Where(r => r.IdHotel == idHotel).ToList().Count();
                List <Room> listReservationInDate = context.Booking.Where(res => cin >= res.CheckIn && cin <= res.CheckOut || cout >= res.CheckIn && cout <= res.CheckOut || cin <= res.CheckIn && cout >= res.CheckOut).Select(r => r.Room).ToList();

                float busyRooms = listReservationInDate.Where(r => r.IdHotel == idHotel).ToList().Count();

                if ((busyRooms / nbRooms) >= 0.7)
                {
                    return(true);
                }
                return(false);
            }
        }
 //Book a room
 public static void book(DateTime checkin, DateTime checkout, String firstname, String lastname, decimal price, DateTime date, Room room)
 {
     using (var context = new ValaisBookingEntities())
     {
         Booking book = new Booking();
         book.CheckIn   = checkin;
         book.CheckOut  = checkout;
         book.Firstname = firstname;
         book.Lastname  = lastname;
         book.Price     = price;
         book.Date      = date;
         book.IdRoom    = room.IdRoom;
         context.Booking.Add(book);
         context.SaveChanges();
     }
 }
        //get rooms by search
        public static List <Room> getRoomsByBasicSearch(string city, DateTime dateCheckIn, DateTime dateCheckOut)
        {
            using (var context = new ValaisBookingEntities())
            {
                List <Room> listRoomInCity = context.Room.Include("Picture").Include("Hotel").Where(ro => ro.Hotel.Location == city).ToList();

                List <Booking> listReservationInDate = context.Booking.Where(res => dateCheckIn >= res.CheckIn && dateCheckIn <= res.CheckOut || dateCheckOut >= res.CheckIn && dateCheckOut <= res.CheckOut || dateCheckIn <= res.CheckIn && dateCheckOut >= res.CheckOut).ToList();

                List <Room> finalListRoom = (from room in listRoomInCity
                                             where !(from res in listReservationInDate
                                                     select res.IdRoom).Contains(room.IdRoom)
                                             select room).ToList();

                finalListRoom = settingPrice(dateCheckIn, dateCheckOut, finalListRoom);

                return(finalListRoom);
            }
        }