コード例 #1
0
        public IActionResult Delete(int Id)
        {
            //Review review = repository.GetReviewById(Id);
            ReviewViewModels reviewViewModels = Mapper.Instance.MapReviewModelToReviewViewModels(repository.GetReviewById(Id));

            return(View(reviewViewModels));
        }
コード例 #2
0
 public ActionResult Create(string reviewText, string reviewRating, int placeId)
 {
     try
     {
         var reviewViewModel = new ReviewViewModels()
         {
             Text    = reviewText.Length > 0 ? reviewText : null,
             Rating  = int.Parse(reviewRating),
             UserId  = _userManager.GetUserId(User),
             PlaceId = placeId
         };
         var reviewModel = _reviewService.AddReview(reviewViewModel);
         return(Json(reviewModel));
     }
     catch
     {
         return(View());
     }
 }
コード例 #3
0
        public List <ReviewViewModels> GetReviews(int placeId)
        {
            var reviews = _context.Reviews.Where(r => r.PlaceId == placeId);

            var reviewList = new List <ReviewViewModels>();

            foreach (var review in reviews)
            {
                var item = new ReviewViewModels()
                {
                    Id       = review.Id,
                    Text     = review.Text,
                    Date     = review.Date,
                    UserName = review.User.UserName
                };
                reviewList.Add(item);
            }

            return(reviewList);
        }
コード例 #4
0
        public async Task <IHttpActionResult> Review(ReviewViewModels viewModels)
        {
            try
            {
                int userId = (await CurrentUser()).Id;
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }
                List <Photo> photos = new List <Photo>();
                foreach (var item in viewModels.Photos ?? new List <string>())
                {
                    var photo = new Photo
                    {
                        UserId = userId,
                        Path   = item
                    };
                    await _photoService.Create2(photo);

                    photos.Add(photo);
                }
                _locationService.AddReview(new Review
                {
                    CreatorId   = userId,
                    Title       = viewModels.Title,
                    Description = viewModels.Description,
                    LocationId  = viewModels.LocationId,
                    Rating      = viewModels.Rating,
                    Photos      = photos
                });

                return(Ok());
            }
            catch (Exception ex)
            {
                _loggingService.Write(GetType().Name, nameof(Review), ex);

                return(InternalServerError(ex));
            }
        }
コード例 #5
0
        public ReviewViewModels AddReview(ReviewViewModels reviewModel)
        {
            var review = new Review()
            {
                Text    = reviewModel.Text,
                Rating  = Convert.ToInt32(reviewModel.Rating),
                Date    = DateTime.Now,
                UserId  = reviewModel.UserId,
                PlaceId = reviewModel.PlaceId
            };

            _context.Reviews.Add(review);
            _context.SaveChanges();

            var user = _context.Users.FirstOrDefault(u => u.Id == review.UserId);

            reviewModel.Id       = review.Id;
            reviewModel.Date     = review.Date;
            reviewModel.UserName = user != null ? user.UserName : "";

            return(reviewModel);
        }
コード例 #6
0
        public PlaceViewModels GetPlace(int id)
        {
            var place = _context.Places
                        .Include(p => p.User)
                        .Include(p => p.Reviews)
                        .Include(p => p.Photos)
                        .FirstOrDefault(p => p.Id == id);

            if (place == null)
            {
                throw new Exception("Place does not found");
            }

            var placeModel = new PlaceViewModels()
            {
                Id          = place.Id,
                Title       = place.Title,
                Description = place.Description,
                UserId      = place.UserId,
                UserName    = place.User.UserName
            };

            var mainPhoto = place.Photos.FirstOrDefault(p => p.PlaceId == place.Id && p.IsMain);

            if (mainPhoto != null)
            {
                placeModel.MainPhotoPath = mainPhoto.FilePath;
            }

            if (place.Photos.Count > 0)
            {
                var photosList = new List <PhotoViewModels>();
                foreach (var photo in place.Photos)
                {
                    var photoItem = new PhotoViewModels()
                    {
                        Id         = photo.Id,
                        FileName   = photo.FileName,
                        FilePath   = photo.FilePath,
                        IsMain     = photo.IsMain,
                        UploadDate = photo.UploadDate,
                        PlaceId    = photo.PlaceId,
                        UserId     = photo.UserId,
                        UserName   = photo.User.UserName
                    };
                    photosList.Add(photoItem);
                }

                placeModel.Photos = photosList;
            }

            if (place.Reviews.Count() > 0)
            {
                var reviewsList = new List <ReviewViewModels>();
                foreach (var review in place.Reviews)
                {
                    var reviewItem = new ReviewViewModels()
                    {
                        Id       = review.Id,
                        Text     = review.Text,
                        Date     = review.Date,
                        Rating   = review.Rating,
                        UserId   = review.UserId,
                        UserName = review.User.UserName,
                        PlaceId  = review.PlaceId
                    };
                    reviewsList.Add(reviewItem);
                }

                placeModel.Reviews = reviewsList.OrderByDescending(r => r.Date).ToList();
                placeModel.Rating  = Math.Round(place.Reviews.Sum(r => r.Rating) / (double)place.Reviews.Count, 1);
            }
            else
            {
                placeModel.Rating = 0;
            }

            return(placeModel);
        }