public ActionResult ProductDetails(string id)
        {
            MongodbFunctions mongo = new MongodbFunctions();

            if (id.Equals(""))
            {
                return(RedirectToAction("Home", "Index"));
            }

            Databases.DomainModel.Product product = mongo.GetProduct(new ObjectId(id));

            if (product != null)
            {
                if (User.IsInRole("User"))
                {
                    Databases.DomainModel.User user = mongo.GetUser(User.Identity.Name);
                    TimescaledbFunctions       tdb  = new TimescaledbFunctions();
                    tdb.ViewProduct(user.Id.ToString(), id);
                    List <ObjectId> customers = tdb.GetCustomersOfProduct(id);
                    List <Tuple <ObjectId, int> > ratingProducts = new List <Tuple <ObjectId, int> >();

                    foreach (ObjectId objectId in customers)
                    {
                        List <ObjectId> productsIds = tdb.GetBoughtProducts(objectId, id);

                        foreach (ObjectId prodId in productsIds)
                        {
                            if (!ratingProducts.Exists(x => x.Item1.Equals(prodId)))
                            {
                                ratingProducts.Add(new Tuple <ObjectId, int>(prodId, 0));
                            }
                            else
                            {
                                int index = ratingProducts.FindIndex(x => x.Item1.Equals(prodId));
                                ratingProducts.Insert(index, new Tuple <ObjectId, int>(prodId, ratingProducts[index].Item2 + 1));
                            }
                        }
                    }

                    tdb.CloseConnection();

                    ratingProducts.Sort((c, n) => n.Item2.CompareTo(c.Item2));
                    List <Databases.DomainModel.Product> products = new List <Databases.DomainModel.Product>();

                    foreach (Tuple <ObjectId, int> p in ratingProducts)
                    {
                        products.Add(mongo.GetProduct(p.Item1));
                    }

                    ViewBag.AlsoBought = products.Take(4).ToList();
                }
                return(View(product));
            }
            else
            {
                return(HttpNotFound());
            }
        }