public ActionResult SubmitRoute(SubmitRouteViewModel submitRouteViewModel) { /* * //De serialize Review again * IFormatter formatter = new BinaryFormatter(); * Stream streamB = new FileStream("MyFile.bin", * FileMode.Open, * FileAccess.Read, * FileShare.Read); * Review review = (Review)formatter.Deserialize(streamB); * streamB.Close(); * // * * //De serialize again * //IFormatter formatter = new BinaryFormatter(); * Stream stream2 = new FileStream("MyFile.bin", * FileMode.Open, * FileAccess.Read, * FileShare.Read); * Route route = (Route)formatter.Deserialize(stream2); * stream2.Close(); * // */ Route route = TmpRouteObject; Review review = TmpReviewObject; context.Routes.Add(route); context.SaveChanges(); context.Reviews.Add(review); context.SaveChanges(); User getUser = context.Users.Single(u => u.Email == (HttpContext.Session.GetString("_Email"))); getUser.TrailsBlazed += 1; getUser.ReviewsMade += 1; context.SaveChanges(); IList <RouteReview> existingItems = context.RouteReviews .Where(rr => rr.ReviewID == review.ID) .Where(rr => rr.RouteID == route.ID).ToList(); if (existingItems.Count == 0) { //var userID = saveFavoriteRouteViewModel.UserID; //var routeID = saveFavoriteRouteViewModel.RouteID; RouteReview routeReview = new RouteReview { Review = context.Reviews.Single(r => r.ID == review.ID),/// May not work if not in database yet!!!!************************************* Route = context.Routes.Single(r => r.ID == route.ID) }; context.RouteReviews.Add(routeReview); context.SaveChanges(); } TempData["Alert"] = "The Ride Route has been added to Database!"; return(Redirect("/User")); }
public RouteReviewModel(RouteReview review) { Id = review.Id; Text = review.Text; Rating = review.Rating; Time = review.Time.Date.ToString("dd/MM/yyyy"); AppUserId = review.AppUserId; AuthorName = "Пользователь"; RouteId = review.RouteId; }
public async Task <Unit> Handle(CreateRouteReviewRequest request, CancellationToken cancellationToken) { var route = await unitOfWork.RouteRepository.GetById(request.RouteId); if (route == null || route.IsPublished == false) { throw new RestException("Маршрут не найден"); } if ((await unitOfWork.RouteReviewRepository.GetAll()) .Where(p => p.AppUserId == request.AppUserId && p.RouteId == request.RouteId).Any()) { throw new RestException("Отзыв уже существует"); } var routeReview = new RouteReview() { Text = request.Text, Rating = request.Rating, Time = DateTime.Now, AppUserId = (Guid)request.AppUserId, RouteId = request.RouteId }; await unitOfWork.RouteReviewRepository.Create(routeReview); var success = await unitOfWork.SaveAsync() > 0; if (success) { if (route.Rating == null) { route.Rating = 0; } route.Rating = (route.Rating * route.CountOfVoces + routeReview.Rating) / (route.CountOfVoces + 1); route.CountOfVoces++; await unitOfWork.RouteRepository.Update(route); success = await unitOfWork.SaveAsync() > 0; if (success) { return(Unit.Value); } throw new RestException("Ошибка при обновлении маршрута. Отзыв добавлен"); } throw new RestException("Ошибка при создании отзыва"); }
public ActionResult AddReview(AddReviewViewModel addReviewViewModel) { Review newReview = new Review { ReviewBody = addReviewViewModel.NewReview, ReviewByUser = addReviewViewModel.ReviewAuthor, Rating = addReviewViewModel.Rating }; context.Reviews.Add(newReview); context.SaveChanges(); User getUser = context.Users.Single(u => u.Email == (HttpContext.Session.GetString("_Email"))); getUser.ReviewsMade += 1; context.SaveChanges(); IList <RouteReview> existingItems = context.RouteReviews .Where(rr => rr.ReviewID == newReview.ID) .Where(rr => rr.RouteID == addReviewViewModel.RouteId).ToList(); if (existingItems.Count == 0) { //var userID = saveFavoriteRouteViewModel.UserID; //var routeID = saveFavoriteRouteViewModel.RouteID; RouteReview routeReview = new RouteReview { Review = context.Reviews.Single(r => r.ID == newReview.ID),/// May not work if not in database yet!!!!************************************* Route = context.Routes.Single(r => r.ID == addReviewViewModel.RouteId) }; context.RouteReviews.Add(routeReview); context.SaveChanges(); TempData["Alert"] = "New Review has been posted!"; } return(Redirect(string.Format("/Route/DisplaySelectRoute?id={0}", addReviewViewModel.RouteId))); }