public static Restaurant Find(int id)
        {
            SqlConnection conn = DB.Connection();
            SqlDataReader rdr = null;
            conn.Open();

            SqlCommand cmd = new SqlCommand("SELECT * FROM restaurants WHERE id = @RestaurantId;", conn);
            SqlParameter restaurantIdParameter = new SqlParameter();
            restaurantIdParameter.ParameterName = "@RestaurantId";
            restaurantIdParameter.Value = id.ToString();
            cmd.Parameters.Add(restaurantIdParameter);
            rdr = cmd.ExecuteReader();

            int foundRestaurantId = 0;
            string foundRestaurantName = null;
            int foundRestaurantCuisineId = 0;
            string foundRestaurantImage = null;

            while(rdr.Read())
            {
              foundRestaurantId = rdr.GetInt32(0);
              foundRestaurantName = rdr.GetString(2);
              foundRestaurantCuisineId = rdr.GetInt32(1);
              foundRestaurantImage = rdr.GetString(3);
            }
            Restaurant foundRestaurant = new Restaurant(foundRestaurantCuisineId, foundRestaurantName, foundRestaurantImage, foundRestaurantId);

            if (rdr != null)
            {
              rdr.Close();
            }
            if (conn != null)
            {
              conn.Close();
            }
            return foundRestaurant;
        }
 public HomeModule()
 {
     Get["/"] = _ => {
     List<Cuisine> AllCuisines = Cuisine.GetAll();
     return View["index.cshtml", AllCuisines];
       };
       Get["/restaurants"] = _ => {
     List<Restaurant> AllRestaurants = Restaurant.GetAll();
     return View["restaurants.cshtml", AllRestaurants];
       };
       Get["/cuisines"] = _ => {
     List<Cuisine> AllCuisines = Cuisine.GetAll();
     return View["cuisines.cshtml", AllCuisines];
       };
       Get["/cuisines/new"] = _ => {
     return View["cuisines_form.cshtml"];
       };
       Post["/cuisines/new"] = _ => {
     Cuisine newCuisine = new Cuisine(0, Request.Form["cuisine-name"]);
     newCuisine.Save();
     return View["success.cshtml"];
       };
       Get["/restaurants/new"] = _ => {
     List<Cuisine> AllCuisines = Cuisine.GetAll();
     return View["restaurant_form.cshtml", AllCuisines];
       };
       Post["/restaurants/new"] = _ => {
     Restaurant newRestaurant = new Restaurant(Request.Form["cuisine-id"], Request.Form["restaurant-name"], Request.Form["restaurant-image"]);
     newRestaurant.Save();
     return View["success.cshtml"];
       };
       Post["/restaurants/delete"] = _ => {
     Restaurant.DeleteAll();
     return View["cleared.cshtml"];
       };
       Post["/cuisines/delete"] = _ => {
     Cuisine.DeleteAll();
     return View["cleared.cshtml"];
       };
       Get["/cuisines/{id}"] = parameters => {
     Dictionary<string, object> model = new Dictionary<string, object>();
     var SelectedCuisine = Cuisine.Find(parameters.id);
     var CuisineRestaurants = SelectedCuisine.GetRestaurants();
     model.Add("cuisine", SelectedCuisine);
     model.Add("restaurants", CuisineRestaurants);
     return View["cuisine.cshtml", model];
       };
       Get["/cuisine/edit/{id}"] = parameters => {
     Cuisine SelectedCuisine = Cuisine.Find(parameters.id);
     return View["cuisine_edit.cshtml", SelectedCuisine];
       };
       Patch["/cuisine/edit/{id}"] = parameters => {
     Cuisine SelectedCuisine = Cuisine.Find(parameters.id);
     SelectedCuisine.Update(Request.Form["cuisine-name"]);
     return View["success.cshtml"];
       };
       Get["/cuisine/delete/{id}"] = parameters => {
     Cuisine SelectedCuisine = Cuisine.Find(parameters.id);
     return View["cuisine_delete.cshtml", SelectedCuisine];
       };
       Delete["/cuisine/delete/{id}"] = parameters => {
     Cuisine SelectedCuisine = Cuisine.Find(parameters.id);
     SelectedCuisine.Delete();
     return View["success.cshtml"];
       };
       Get["/restaurant/review/{id}"] = parameters => {
     var SelectedRestaurant = Restaurant.Find(parameters.id);
     return View["review_form.cshtml", SelectedRestaurant];
       };
       Post["/new-review/{id}"] = parameters => {
     var SelectedRestaurant = Restaurant.Find(parameters.id);
     Review newReview = new Review(Request.Form["stars"], Request.Form["restaurant-review"], SelectedRestaurant.GetId());
     newReview.Save();
     return View["review_success.cshtml", newReview.GetComment()];
       };
       Get["/restaurants/{id}"] = parameters => {
     Dictionary<string, object> model = new Dictionary<string, object>();
     var SelectedRestaurant = Restaurant.Find(parameters.id);
     var RestaurantReviews = SelectedRestaurant.GetReviews();
     model.Add("restaurant", SelectedRestaurant);
     model.Add("reviews", RestaurantReviews);
     return View["restaurant.cshtml", model];
       };
 }
        public List<Restaurant> GetRestaurants()
        {
            SqlConnection conn = DB.Connection();
              SqlDataReader rdr = null;
              conn.Open();

              SqlCommand cmd = new SqlCommand("SELECT * FROM restaurants WHERE cuisine_id = @CuisineId;", conn);
              SqlParameter cuisineIdParameter = new SqlParameter();
              cuisineIdParameter.ParameterName = "@CuisineId";
              cuisineIdParameter.Value = this.GetId();
              cmd.Parameters.Add(cuisineIdParameter);
              rdr = cmd.ExecuteReader();

              List<Restaurant> restaurants = new List<Restaurant> {};
              while(rdr.Read())
              {
            int restaurantId = rdr.GetInt32(0);
            string restaurantName = rdr.GetString(3);
            int restaurantCuisineId = rdr.GetInt32(1);
            string restaurantImage = rdr.GetString(2);
            Restaurant newRestaurant = new Restaurant(restaurantCuisineId, restaurantName, restaurantImage, restaurantId);
            restaurants.Add(newRestaurant);
              }
              if (rdr != null)
              {
            rdr.Close();
              }
              if (conn != null)
              {
            conn.Close();
              }
              return restaurants;
        }
        public static List<Restaurant> GetAll()
        {
            List<Restaurant> AllRestaurants = new List<Restaurant>{};

            SqlConnection conn = DB.Connection();
            SqlDataReader rdr = null;
            conn.Open();

            SqlCommand cmd = new SqlCommand("SELECT * FROM restaurants;", conn);
            rdr = cmd.ExecuteReader();

            while(rdr.Read())
            {
              int restaurantId = rdr.GetInt32(0);
              int restaurantCuisineId = rdr.GetInt32(1);
              string restaurantName = rdr.GetString(2);
              string restaurantImage = rdr.GetString(3);

              Restaurant newRestaurant = new Restaurant(restaurantCuisineId, restaurantName, restaurantImage, restaurantId);
              AllRestaurants.Add(newRestaurant);
            }
            if (rdr != null)
            {
              rdr.Close();
            }
            if (conn != null)
            {
              conn.Close();
            }
            return AllRestaurants;
        }