public async Task <HttpResult> AddEditGymReview([FromBody] GymReview review) { try { if (!Functions.UserLoggedIn(Request, out User user) && !Functions.AdminLoggedIn(Request, out _)) { throw new Exception("Not logged in!"); } GymFinderGym gym = await db.GymFinderGym.FindAsync(review.GymId); if (gym == null) { throw new Exception("Gym not found!"); } DateTime now = DateTime.Now; if (review.Id > 0) { GymReview updating = db.GymReview.Find(review.Id); Functions.CheckNull(updating); updating.ModifiedDate = now; updating.Title = review.Title; updating.MainReview = review.MainReview; updating.GymId = review.GymId; updating.GoodPoints = review.GoodPoints; updating.BadPoints = review.BadPoints; updating.Rating = review.Rating; db.Entry(updating).State = Microsoft.EntityFrameworkCore.EntityState.Modified; await db.SaveChangesAsync(); } else { review.CreationDate = now; review.ModifiedDate = now; review.ReviewerId = user.Id; db.GymReview.Add(review); await db.SaveChangesAsync(); } //updating gym rating. gym.AverageRating = db.GymReview.Where(x => x.GymId == gym.Id).Average(g => g.Rating); db.Entry(gym).State = Microsoft.EntityFrameworkCore.EntityState.Modified; await db.SaveChangesAsync(); return(new HttpResult(true, review, "")); } catch (Exception e) { return(new HttpResult(false, null, Functions.ErrorMessage(e))); } }
public HttpResult GetGymReview([FromQuery] int id) { GymReview r = db.GymReview.Find(id); return(r == null ? new HttpResult(false, new GymReview(), "No Review") : new HttpResult(true, r, "")); }
public HttpResult GetMyGymReview([FromQuery] int gymID) { if (!Functions.UserLoggedIn(Request, out User user) && !Functions.AdminLoggedIn(Request, out _)) { return(new HttpResult(false, null, "")); } GymReview r = db.GymReview.FirstOrDefault(x => x.GymId == gymID && x.ReviewerId == user.Id); return(r == null ? new HttpResult(false, new GymReview(), "No Review") : new HttpResult(true, r, "")); }
public async Task <HttpResult> DeleteGymReview([FromRoute] int postID) { try { //if (!Functions.AdminLoggedIn(Request, out _)) // throw new Exception("Not logged in!"); GymReview deleting = await db.GymReview.FindAsync(postID); if (deleting == null) { throw new Exception("Post not found!"); } bool adminLoggedIn = Functions.AdminLoggedIn(Request, out _); bool userLoggedIn = Functions.UserLoggedIn(Request, out User editor); if ((!adminLoggedIn && !userLoggedIn) || //no user logged in (userLoggedIn && editor.Id != deleting.ReviewerId)) //or user logged in but does not own the review { throw new Exception("Not logged in!"); } //update coach rating GymFinderGym gym = await db.GymFinderGym.FindAsync(deleting.GymId); IQueryable <GymReview> remainingReviews = db.GymReview.Where(x => x.GymId == gym.Id && x.Id != deleting.Id); if (remainingReviews.Count() > 0) { gym.AverageRating = remainingReviews.Average(c => c.Rating); } else { gym.AverageRating = 0d; } db.Entry(gym).State = Microsoft.EntityFrameworkCore.EntityState.Modified; db.GymReview.Remove(deleting); await db.SaveChangesAsync(); return(new HttpResult(true, null, "")); } catch (Exception e) { return(new HttpResult(false, null, Functions.ErrorMessage(e))); } }