public JsonResult GetReviews(string id) { MongodbFunctions mongo = new MongodbFunctions(); ObjectId objID = new ObjectId(id); Databases.DomainModel.Product product = mongo.GetProduct(objID); List <MongoDBRef> rev = product.Reviews; int count = product.Reviews.Count; List <Databases.DomainModel.ReviewShow> reviews = new List <Databases.DomainModel.ReviewShow>(); List <Databases.DomainModel.UserShow> users = new List <Databases.DomainModel.UserShow>(); foreach (MongoDBRef r in rev) { Databases.DomainModel.Review review = mongo.GetReview(new ObjectId(r.Id.ToString())); Databases.DomainModel.User user = mongo.GetUser(new ObjectId(review.User.Id.ToString())); Databases.DomainModel.UserShow userShow = new Databases.DomainModel.UserShow { Id = user.Id, Name = user.Name, Surname = user.Surname, Email = user.Email, Address = user.Address }; Databases.DomainModel.ReviewShow reviewShow = new Databases.DomainModel.ReviewShow { Id = review.Id, Grade = review.Grade, Comment = review.Comment }; reviews.Add(reviewShow); users.Add(userShow); } if (User.IsInRole("User")) { Databases.DomainModel.User u = mongo.GetUser(User.Identity.Name); TimescaledbFunctions tdb = new TimescaledbFunctions(); tdb.SeeReviews(u.Id.ToString(), id); tdb.CloseConnection(); } return(Json(new { number = count, revs = reviews, people = users }, JsonRequestBehavior.AllowGet)); }
public void AddReview(string id, int grade, string comment) { MongodbFunctions mongo = new MongodbFunctions(); TimescaledbFunctions tdb = new TimescaledbFunctions(); Databases.DomainModel.User user = mongo.GetUser(User.Identity.Name); Databases.DomainModel.Review review = mongo.GetReview(user.Id, new ObjectId(id)); if (review == null) { Databases.DomainModel.Review newReview = new Databases.DomainModel.Review { Grade = grade, Comment = comment, Product = new MongoDBRef("products", new ObjectId(id)) }; mongo.AddReview(newReview, id, User.Identity.Name); tdb.ReviewProduct(user.Id.ToString(), id, grade); } else { mongo.UpdateReview(review.Id, grade, comment); tdb.UpdateReview(user.Id.ToString(), id, grade); } if (tdb.LowGrades(user.Id.ToString()) >= 4) { Databases.DomainModel.Notification notification = new Databases.DomainModel.Notification { Content = "Poštovani, primetili smo da ste više proizvoda ocenili lošom ocenom. Ako želite da zamenite neki od njih, " + "pozovite naš call centar i dogovorite se sa operaterom. Takođe, imate opciju popusta od 10% prilikom sledeće kupovine. " + "Popust možete aktivirati klikom na link u ovom obaveštenju i važi nedelju dana. U jednom trenutku možete aktivirati samo jedan popust.", Title = "Niste zadovoljni kupljenim proizvodima?", Date = DateTime.Now.Date, Tag = "lose_ocene", Read = false, User = new MongoDB.Driver.MongoDBRef("users", user.Id) }; tdb.SendNotification(user.Id.ToString(), mongo.AddNotification(notification, user.Email).ToString(), "lose_ocene"); } tdb.CloseConnection(); }