public IHttpActionResult PostHotel(Hotel hotel)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            db.Hotel.Add(hotel);

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateException)
            {
                if (HotelExists(hotel.Hotel_No))
                {
                    return Conflict();
                }
                else
                {
                    throw;
                }
            }

            return CreatedAtRoute("DefaultApi", new { id = hotel.Hotel_No }, hotel);
        }
        public IHttpActionResult PutHotel(int id, Hotel hotel)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            if (id != hotel.Hotel_No)
            {
                return BadRequest();
            }

            db.Entry(hotel).State = EntityState.Modified;

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!HotelExists(id))
                {
                    return NotFound();
                }
                else
                {
                    throw;
                }
            }

            return StatusCode(HttpStatusCode.NoContent);
        }
        private static void Main(string[] args)
        {
            const string serverUrl = "http://localhost.fiddler:5000";

            var hotellist = new List<Hotel>();
            var roomlist = new List<Room>();
             //   Console.ReadLine( );

            Hotel aNewHotel = new Hotel()
            {
                Hotel_No = 345,Name = "Big Hotel",Address = "MyWay 1",Rating = "*"
            };

            string jsonaNewHotel = aNewHotel.SerializerJson();
            Console.WriteLine(jsonaNewHotel);

            Hotel deserializeHotel = Hotel.DeserializeJson(jsonaNewHotel);

            Console.WriteLine(deserializeHotel.ToString());

            Console.ReadLine();
            ////GetAHotel
            //Hotel selectedHotel = GetAHotel(serverUrl,3);
            //Console.WriteLine("After WebserviceCall");
            //Console.WriteLine(selectedHotel);

            //Exercise1
            //int selectHotel = 3;
            //Excercise1(serverUrl, selectHotel);

            //Exercise 2
            //Exercise2(serverUrl, hotellist);

            //Exercise 3
            //3.Select(HTTP Get) all hotels and all of them located in roskilde should be put into a list of hotels using LINQ
            //Exercise3(serverUrl, hotellist, roomlist);

            //Excercise4
            //Exercise4(serverUrl);

            //Exercise5
            //Exercise5(serverUrl);

            //Exercise6
            //int deleteHotelNo = 1002;
            //DeleteHotel(serverUrl, deleteHotelNo);

            //Exercise7
            //int hotelNo = 4;
            //int roomNo = 300;
            // exercise7(hotelNo, roomNo, serverUrl);

            //Exercise 8
            //8) Update all hotels in roskilde increase the price of a single
            //room with 20 %, show the prices before and after the update
              //  Exercise8(serverUrl, hotellist, roomlist);

            Console.ReadLine();

            //using (var client = new HttpClient())
            //{
            //    client.BaseAddress = new Uri(serverUrl);
            //    client.DefaultRequestHeaders.Clear();
            //    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            //    try
            //    {
            //        var response =  client.GetAsync("Api/Hotels").Result;

            //        if (response.IsSuccessStatusCode)
            //        {
            //var hotels = response.Content.ReadAsAsync<IEnumerable<Hotel>>().Result;

            //            foreach (var hotel in hotels)
            //            {
            //                Console.WriteLine(hotel.ToString());
            //            }
            //            Console.ReadLine();
            //        }
            //    }
            //    catch (Exception)
            //    {
            //        throw;
            //    }
            //}

            //var MyNewHotel = new Hotel()
            //{
            //    Hotel_No = 1005,
            //    Address = "Fiddlerhotel 1",
            //    Name = "Fiddler hotel",
            //    Rating = "",
            //    HotelUrl = "fiddlerhotel.com",
            //    Room = new List<Room>()
            //};

            //string json = JsonConvert.SerializeObject(MyNewHotel);
            //Console.WriteLine("json file : " + json);
            //StringContent MyContent = new StringContent(json, System.Text.Encoding.UTF8, "application/json");

            //using (var client = new HttpClient())
            //{
            //    client.BaseAddress = new Uri(serverUrl);
            //    client.DefaultRequestHeaders.Clear();
            //    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            //    try
            //    {
            //        var response = client.PostAsync("Api/Hotels", MyContent).Result;
            //        var r = response.Content;
            //        Console.WriteLine("response : " + response.StatusCode);
            //    }
            //    catch (Exception)
            //    {
            //        throw;
            //    }
            //}

            //int changeHotelNo = 1005;

            //var ChangeMyNewHotel = new Hotel()
            //{
            //    Hotel_No = changeHotelNo,
            //    Address = "Fiddlerhotel update",
            //    Name = "Fiddler hotel",
            //    Rating = "*",
            //    HotelUrl = "fiddlerhotel.com",
            //    Room = new List<Room>()
            //};

            //string jsonC = JsonConvert.SerializeObject(ChangeMyNewHotel);

            //StringContent content = new StringContent(jsonC, System.Text.Encoding.UTF8, "application/json");

            //using (var client = new HttpClient())
            //{
            //    client.BaseAddress = new Uri(serverUrl);
            //    client.DefaultRequestHeaders.Clear();
            //    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            //    try
            //    {
            //        //var response = client.PostAsJsonAsync("Api/Hotels", MyContent).Result;
            //        var response = client.PutAsync("Api/Hotels/" + changeHotelNo, content).Result;

            //        var r = response.Content;
            //        Console.WriteLine("response : " + response.StatusCode);
            //    }
            //    catch (Exception)
            //    {
            //        throw;
            //    }
            //}

            //using (var client = new HttpClient())
            //{
            //    client.BaseAddress = new Uri(serverUrl);
            //    client.DefaultRequestHeaders.Clear();
            //    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            //    try
            //    {
            //        //var response = client.PostAsJsonAsync("Api/Hotels", MyContent).Result;
            //        var response = client.DeleteAsync("Api/Hotels/" + 1005).Result;

            //        var r = response.Content;
            //        Console.WriteLine("response : " + response.StatusCode);
            //    }
            //    catch (Exception)
            //    {
            //        throw;
            //    }
            //}

            //Console.ReadLine();
        }
        /// <summary>
        /// method to get a specific hotel
        /// </summary>
        /// <param name="serverUrl"></param>
        /// <param name="selectHotelNo"></param>
        /// <returns></returns>
        /// <summary>
        /// method to get a specific hotel
        /// </summary>
        /// <param name="serverUrl"></param>
        /// <param name="selectHotelNo"></param>
        /// <returns></returns>
        private static Hotel GetHotel(string serverUrl, int selectHotelNo)
        {
            var hotel = new Hotel();
            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(serverUrl);
                client.DefaultRequestHeaders.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                string urlString = "api/hotels/" + selectHotelNo;
                var response = client.GetAsync(urlString).Result;
                Console.WriteLine("GetAsync : " + urlString);
                Console.WriteLine("Status code : " + response.StatusCode);
                if (response.IsSuccessStatusCode)
                {
                     hotel = response.Content.ReadAsAsync<Hotel>().Result;
                    Console.WriteLine("hotel : " + hotel.ToString());
                }
            }
            return hotel;
        }
        private static void Exercise5(string serverUrl)
        {
            Console.WriteLine("Exercise 5");
            Console.WriteLine("Insert (HTTP Post) a new hotel fx number 200");

            int myNewHotelNo = 2000;
            //First we create the new hotel object
            var myNewHotel = new Hotel()
            {
                Hotel_No = myNewHotelNo,
                Address = "Fiddlerhotel 1",
                Name = "Fiddler hotel",
                Rating = "***",
                HotelUrl = "fiddlerhotel.com",
                Room = new List<Room>()
            };

            //The we need to serialize it
            string newHoteljson = JsonConvert.SerializeObject(myNewHotel);

            //Create the content we will send in the Http post request
            var content = new StringContent(newHoteljson, Encoding.UTF8, "application/json");

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(serverUrl);
                client.DefaultRequestHeaders.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

                var response = client.PostAsync("api/hotels", content).Result;
                Console.WriteLine("PostAsync");
                Console.WriteLine("Status code " + response.StatusCode);

                if (response.IsSuccessStatusCode)
                {
                    //Success , Now we can get the hotel by a Http post
                    var responseHotel = client.GetAsync("api/hotels/" + myNewHotelNo).Result;
                    Console.WriteLine("GetAsync");
                    Console.WriteLine("Status code " + response.StatusCode);

                    if (responseHotel.IsSuccessStatusCode)
                    {
                        var hotel200 = responseHotel.Content.ReadAsAsync<Hotel>().Result;
                        Console.WriteLine(hotel200.ToString());
                    }
                }
            }
        }
        /// <summary>
        /// Update (HTTP Put) hotel number 3, change the name of the hotel. 
        /// You have to create a new Hotel Object with the data and then use this object 
        /// when you create your content string. 
        /// </summary>
        /// <param name="serverUrl"></param>
        private static void Exercise4(string serverUrl)
        {
            var hotel3 = new Hotel();
            int hotelno = 3;
            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(serverUrl);
                client.DefaultRequestHeaders.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("Application/json"));

                //First thing to do is to get the hotel number 3 into my hotel3 variable by a http Get request
                var hotelResponse = client.GetAsync("api/hotels/" + hotelno).Result;

                if (hotelResponse.IsSuccessStatusCode)
                {
                    hotel3 = hotelResponse.Content.ReadAsAsync<Hotel>().Result;
                    Console.WriteLine(hotel3.ToString());
                }

                //Now change the name and address of the hotel3
                hotel3.Name = "Great Hotel";
                hotel3.Address = "Great Hotel Road 1";

                //we have to serialize the hotel3 object into json format
                string jsonHotel3 = JsonConvert.SerializeObject(hotel3);

                //Create the content we want to send with the Http put request
                StringContent content = new StringContent(jsonHotel3, Encoding.UTF8, "Application/json");

                //Using a Http Put Request we can update the Hotel number 3
                var updateResponse = client.PutAsync("api/hotels/" + hotelno, content).Result;
                Console.WriteLine("status code : " + updateResponse.StatusCode);
            }
        }