示例#1
0
        public bool addReview(UserReview userReview)
        {
            // insert into reviews values('ID_TA', 'review', 'date');
            bool result = dBConnect.Insert("(" + userReview.RestID + ", \"" + userReview.Content + "\" ,\"" + userReview.Date + "\" , " + userReview.Rate.ToString() + ")", "reviews");

            if (result == false)
            {
                return(false);
            }
            List <string>[] data = dBConnect.Select("restaurants", "ID_TA = '" + userReview.RestID + "'", null, null, null, -1);
            if (data == null)
            {
                return(false);
            }
            int    numOfReviews = Int32.Parse(data[7][0]);
            double rate         = Convert.ToDouble(data[3][0]);
            double newRate      = (numOfReviews * rate + userReview.Rate) / (numOfReviews + 1);

            // UPDATE restaurants SET Num_of_reviews = 'num', Rating =rate WHERE ID_TA = 'ID_TA';
            result = dBConnect.Update("restaurants", "Numbers_of_reviews= "
                                      + (numOfReviews + 1).ToString() + " ,Rating= \"" + newRate.ToString() + "\"", "ID_TA= \"" + userReview.RestID + "\"");
            if (result == false)
            {
                return(false);
            }
            RestsResults[restsResults.FindIndex(x => x.ID == userReview.RestID)].Rate = newRate;
            return(true);
        }
示例#2
0
        public Restaurant restDetails()
        {
            Restaurant currRest = RestsResults[restsResults.FindIndex(x => x.ID == RestID)];
            // create sql query
            string select = "restaurants.price_range, restaurants.Numbers_of_reviews, restaurants.url_TA ";
            string from   = "restaurants";

            string where = "restaurants.ID_TA = " + currRest.ID;

            List <string>[] rest = dBConnect.Select(from, where, null, null, select, -1);
            if (rest == null)
            {
                return(null);
            }
            select = "restaurants.ID_TA, style.style";
            from   = "restaurants inner join style_rest on  restaurants.ID_TA = style_rest.ID_TA inner join style on style.id = style_rest.styleid";
            for (int i = 0; i < rest[0].Count; i++)
            {
                currRest.PriceRange   = rest[4][i];
                currRest.NumOfReviews = Convert.ToInt32(rest[7][i]);
                currRest.URL          = rest[5][i];

                // condition for specific id -restaurant-styles
                ;
                where = " restaurants.ID_TA='" + currRest.ID + "' ";
                List <string>[] dbStyles = dBConnect.Select(from, where, null, null, select, 3);
                if (dbStyles == null)
                {
                    return(null);
                }
                List <string> styles = new List <string>();
                for (int j = 0; j < dbStyles[0].Count; j++)
                {
                    styles.Add(dbStyles[9][j]);
                }
                // get -restaurant -reviews
                List <string>[] dbReviews = dBConnect.Select("reviews", "ID_TA= " + currRest.ID, null, null, null, -1);
                if (dbReviews == null)
                {
                    return(null);
                }
                List <UserReview> listReviews = new List <UserReview>();
                for (int j = 0; j < dbReviews[0].Count; j++)
                {
                    double rate;
                    if (Convert.ToDouble(dbReviews[12][j]) == -1)
                    {
                        rate = calculateRate(currRest.Rate);
                    }
                    else
                    {
                        rate = calculateRate(Convert.ToDouble(dbReviews[12][j]));
                    }
                    UserReview newReview = new UserReview(currRest.ID, dbReviews[10][j], dbReviews[11][j], rate);
                    listReviews.Add(newReview);
                }
                currRest.Types   = styles;
                currRest.Reviews = listReviews;
            }
            return(currRest);
        }