public async Task <IActionResult> Create(int id)
        {
            try
            {
                var barDTO = await this.barService.GetBarAsync(id);

                var barVM = barMapper.MapToVMFromDTO(barDTO);

                var currentUserId = int.Parse(userManager.GetUserId(HttpContext.User));

                var reviewVM = new BarReviewViewModel
                {
                    BarName  = barVM.Name,
                    BarId    = barDTO.Id,
                    AuthorId = currentUserId
                };

                //ViewData["BarId"] = new SelectList(_context.Bars, "Id", "Address");
                //ViewData["UserId"] = new SelectList(_context.Users, "Id", "Id");
                return(View(reviewVM));
            }
            catch (Exception)
            {
                this.toaster.AddWarningToastMessage(ToastrConsts.GenericError);
                return(RedirectToAction("Index", "Bars", new { id }));
            }
        }
        public async Task <IActionResult> Create(int id, BarReviewViewModel reviewVM)
        {
            var sanitizer = new HtmlSanitizer();

            reviewVM.Comment = sanitizer.Sanitize(reviewVM.Comment);

            try
            {
                if (ModelState.IsValid)
                {
                    var currentUserId = int.Parse(userManager.GetUserId(HttpContext.User));

                    //var userDTO = await this.userService.GetUserAsync(currentUserId);
                    //var barDTO = await this.barService.GetBarAsync(reviewVM.BarId);

                    var reviewDTO = this.barReviewMapper.MapToDTOFromVM(reviewVM);
                    reviewDTO.AuthorId = currentUserId;
                    reviewDTO.BarId    = id;

                    bool isUnique = this.barReviewService.BarReviewIsUnique(reviewDTO);

                    if (!isUnique)
                    {
                        this.toaster.AddWarningToastMessage(ToastrConsts.ReviewExists);
                        return(RedirectToAction("Index", "Bars", new { id = reviewDTO.BarId }));
                    }

                    var validationResult = this.barReviewService.ValidateBarReview(reviewDTO);

                    if (!validationResult.HasProperInputData)
                    {
                        this.toaster.AddWarningToastMessage(ToastrConsts.NullModel);
                        return(RedirectToAction(nameof(Create), new { id }));
                    }
                    if (!validationResult.HasCorrectRating)
                    {
                        this.toaster.AddWarningToastMessage(ToastrConsts.IncorrectRating);
                        return(RedirectToAction(nameof(Create), new { id }));
                    }
                    if (!validationResult.HasCorrectCommentLength)
                    {
                        this.toaster.AddWarningToastMessage(ToastrConsts.CommentTooLong);
                        return(RedirectToAction(nameof(Create), new { id }));
                    }

                    var result = await this.barReviewService.CreateBarReviewAsync(reviewDTO);

                    this.toaster.AddSuccessToastMessage(ToastrConsts.Success);
                    return(RedirectToAction("BarReviews", "BarReviews", new { id = result.BarId }));
                }
            }
            catch (Exception)
            {
                this.toaster.AddWarningToastMessage(ToastrConsts.GenericError);
                return(RedirectToAction("Index", "Bars", new { area = "" }));
            }

            this.toaster.AddWarningToastMessage(ToastrConsts.IncorrectInput);
            return(RedirectToAction("Index", "Bars", new { area = "" }));
        }
        public static BarReviewDTO MapVMToReviewDTO(this BarReviewViewModel reviewVM)
        {
            var newReview = new BarReviewDTO();

            newReview.BarId       = reviewVM.BarId;
            newReview.Rating      = reviewVM.Rating;
            newReview.Description = reviewVM.Description;
            //newReview.ReviewDate = reviewVM.ReviewDate;
            newReview.UserName = reviewVM.UserName;
            newReview.UserID   = reviewVM.UserID;
            return(newReview);
        }
Esempio n. 4
0
        public static BarReviewViewModel MapToViewModel(this BarReviewDTO review)
        {
            var vm = new BarReviewViewModel()
            {
                Comment   = review.Comment,
                Rating    = review.Rating,
                UserName  = review.UserName,
                IsDeleted = review.IsDeleted
            };

            return(vm);
        }
        public BarReviewDTO MapToDTOFromVM(BarReviewViewModel barReviewVM)
        {
            BarReviewDTO reviewDTO = new BarReviewDTO
            {
                Comment  = barReviewVM.Comment,
                BarId    = barReviewVM.BarId,
                AuthorId = barReviewVM.AuthorId,
                BarName  = barReviewVM.BarName,
                Author   = barReviewVM.Author,
                Rating   = barReviewVM.Rating
            };

            return(reviewDTO);
        }
        public BarReviewViewModel MapToVMFromDTO(BarReviewDTO barReviewDTO)
        {
            BarReviewViewModel reviewVM = new BarReviewViewModel
            {
                Rating   = barReviewDTO.Rating,
                Comment  = barReviewDTO.Comment,
                BarId    = barReviewDTO.BarId,
                AuthorId = barReviewDTO.AuthorId,
                BarName  = barReviewDTO.BarName,
                Author   = barReviewDTO.Author
            };

            return(reviewVM);
        }
        public static BarReviewViewModel MapReviewDTOToVM(this BarReviewDTO reviewDTO)
        {
            var newReviewVM = new BarReviewViewModel();

            newReviewVM.Id           = reviewDTO.Id;
            newReviewVM.BarId        = reviewDTO.BarId;
            newReviewVM.Rating       = reviewDTO.Rating;
            newReviewVM.Description  = reviewDTO.Description;
            newReviewVM.ReviewDate   = reviewDTO.ReviewDate;
            newReviewVM.UserName     = reviewDTO.UserName;
            newReviewVM.BarName      = reviewDTO.BarName;
            newReviewVM.UserID       = reviewDTO.UserID;
            newReviewVM.LikeCount    = reviewDTO.LikeCount;
            newReviewVM.LikedByUsers = reviewDTO.LikedByUsers;
            return(newReviewVM);
        }
        public static BarReviewViewModel BarReviewsDTOMapToVM(this BarReviewDTO barReviewDTO)
        {
            var barReviewVM = new BarReviewViewModel();

            barReviewVM.Id             = barReviewDTO.Id;
            barReviewVM.BarId          = barReviewDTO.BarId;
            barReviewVM.UserId         = barReviewDTO.UserId;
            barReviewVM.Rating         = barReviewDTO.Rating;
            barReviewVM.Comment        = barReviewDTO.Comment;
            barReviewVM.ReviewedOn     = barReviewDTO.ReviewedOn;
            barReviewVM.BarName        = barReviewDTO.BarName;
            barReviewVM.UserName       = barReviewDTO.UserName;
            barReviewVM.BarReviewLikes = barReviewDTO.BarReviewLikes;

            return(barReviewVM);
        }
        public async Task <IActionResult> Edit(int id, BarReviewViewModel reviewVM)
        {
            var sanitizer = new HtmlSanitizer();

            reviewVM.Comment = sanitizer.Sanitize(reviewVM.Comment);

            if (ModelState.IsValid)
            {
                try
                {
                    var currentUserId = int.Parse(userManager.GetUserId(HttpContext.User));

                    var reviewDTO = this.barReviewMapper.MapToDTOFromVM(reviewVM);

                    var validationResult = this.barReviewService.ValidateBarReview(reviewDTO);

                    if (!validationResult.HasProperInputData)
                    {
                        this.toaster.AddWarningToastMessage(ToastrConsts.NullModel);
                        return(RedirectToAction("Edit", "BarReviews", new { id }));
                    }
                    if (!validationResult.HasCorrectRating)
                    {
                        this.toaster.AddWarningToastMessage(ToastrConsts.IncorrectRating);
                        return(RedirectToAction("Edit", "BarReviews", new { id }));
                    }
                    if (!validationResult.HasCorrectCommentLength)
                    {
                        this.toaster.AddWarningToastMessage(ToastrConsts.CommentTooLong);
                        return(RedirectToAction("Edit", "BarReviews", new { id }));
                    }

                    var result = await this.barReviewService.UpdateBarReviewAsync(id, currentUserId, reviewDTO);

                    this.toaster.AddSuccessToastMessage(ToastrConsts.Success);
                    return(RedirectToAction("BarReviews", "BarReviews", new { id }));
                }
                catch (Exception)
                {
                    this.toaster.AddWarningToastMessage(ToastrConsts.GenericError);
                    return(RedirectToAction("Index", "Bars", new { area = "" }));
                }
            }
            this.toaster.AddWarningToastMessage(ToastrConsts.IncorrectInput);
            return(RedirectToAction("Index", "Bars", new { area = "" }));
        }
Esempio n. 10
0
        public async Task <IActionResult> CreateBarReview(string id)
        {
            try
            {
                var bar = await _barServices.GetBarByID(id);

                var barReviewVM = new BarReviewViewModel();
                barReviewVM.BarId   = bar.Id;
                barReviewVM.BarName = bar.Name;
                return(View(barReviewVM));
            }
            catch (Exception ex)
            {
                _toast.AddErrorToastMessage(ex.Message);
                ViewBag.ErrorTitle = "";
                return(View("Error"));
            }
        }
        public async Task <IActionResult> BarReview(int id)
        {
            try
            {
                var bar = await barServices.GetDetailedDTOAsync(id);

                var barViewModel = bar.MapToViewModel();

                var vm = new BarReviewViewModel
                {
                    Bar = barViewModel,
                };
                return(View(vm));
            }
            catch (InvalidOperationException)
            {
                return(BadRequest());
            }
        }
Esempio n. 12
0
 public async Task <IActionResult> CreateBarReview(BarReviewViewModel barVM)
 {
     if (ModelState.IsValid)
     {
         try
         {
             var barReviewDTO = barVM.MapVMToReviewDTO();
             var newRating    = (double)Math.Round((decimal)(await _reviewServices.CreateBarReview(barReviewDTO) ?? 0), 2);
             _toast.AddSuccessToastMessage($"Your review was submitted succesfully");
             return(RedirectToAction("ListBars", "Bars", new { area = "Bars" }));
         }
         catch (Exception ex)
         {
             _toast.AddErrorToastMessage(ex.Message);
             ViewBag.ErrorTitle = "";
             return(View("Error"));
         }
     }
     return(View(barVM));
 }