コード例 #1
0
        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"));
        }
コード例 #2
0
 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;
 }
コード例 #3
0
        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("Ошибка при создании отзыва");
        }
コード例 #4
0
        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)));
        }