public async Task <ActionResult> _PostReview(Models.VM.CreateReviewVM review) { if (ModelState.IsValid) { try { TravelerProfile tpcheck = await ProfileManager.LoadUserAndTravelerProfile(User); TravelerProfile tp = await ProfilesController.LoadProfile(review.ID); if (tpcheck.ID == tp.ID) { throw new Exception("Access Violation Post Review! User tried to Review his own profile", new AccessViolationException()); } TravelerProfileReviews treviews = tp.Reviews; var tpRevUpdate = treviews; TravelerProfile tPoster = await ProfileManager.LoadUserAndTravelerProfile(User); Review rev = new Review(review, tPoster.ID, tp.TravelerReviewsID); tpRevUpdate.Reviews.Add(rev); using (var db = new ApplicationDbContext()) { db.Reviews.Add(rev); await db.SaveChangesAsync(); } } catch (Exception e) { NotificationManager.AddException(e); NotificationManager.AddNotification(NotificationType.Error, "Oops, something went wrong!"); } } return(RedirectToAction("Details", new { id = review.ID })); }
public TravelerReviewsVM(TravelerProfileReviews reviews) { ID = reviews.ID; Reviews = new List <ReviewVM>(); Score = 0.0f; if (reviews.Reviews != null)//kann raus! { foreach (var rev in reviews.Reviews) { ReviewVM revM = new ReviewVM(rev); Score = Score + rev.Ranking; Reviews.Add(revM); } if (reviews.Reviews.Count > 0) { Score = Score / Reviews.Count; } } }