コード例 #1
0
 public CustomerReviewModel(Review review)
 {
     this.Content = review.Content;
     this.Date = review.Date;
     this.Rating = review.Rating;
     this.EscortName = review.Escort.UserName;
 }
コード例 #2
0
        public IHttpActionResult AddReview(ReviewBindingModel reviewModel)
        {
            if (reviewModel == null)
            {
                return this.BadRequest("Missing review data");
            }

            if (!this.ModelState.IsValid)
            {
                return this.BadRequest(this.ModelState);
            }

            var currentUserId = this.User.Identity.GetUserId();

            if (!this.EscortServiceData.Customers.Any(c => c.Id == currentUserId))
            {
                return this.Content(HttpStatusCode.Unauthorized, new
                {
                    Message = "User " + this.User.Identity.GetUserName() + " is not customer"
                });
            }

            var escortId =
                this.EscortServiceData.Escorts.Where(c => c.UserName == reviewModel.EscortName).Select(c => c.Id).FirstOrDefault();

            if (escortId == null)
            {
                return this.Content(HttpStatusCode.NotFound, new
                {
                    Message = "Escort  " + reviewModel.EscortName + " does not exist."
                });
            }

            var lastReview = this.EscortServiceData.Reviews
                .Where(r => r.AuthorId == currentUserId && r.EscortId == escortId)
                .OrderByDescending(r => r.Date)
                .FirstOrDefault();

            if (lastReview != null)
            {
                var dateTiemDiff = (DateTime.Now - lastReview.Date).TotalHours;
                if (dateTiemDiff < 2.0)
                {
                    return this.BadRequest(String.Format("You have given revie for escort: {0} just before {1:F0} minutes.",
                        reviewModel.EscortName, dateTiemDiff * 60 < 1 ? 1 : dateTiemDiff * 60));
                }
            }

            Review newReview = new Review()
            {
                Content = reviewModel.Content,
                Date = DateTime.Now,
                Rating = reviewModel.Rating,
                AuthorId = currentUserId,
                EscortId = escortId,
            };

            this.EscortServiceData.Reviews.Add(newReview);
            this.EscortServiceData.SaveChanges();

            return
                this.Ok(String.Format(
                    "Review for escort: {0} created from customer: {1}", reviewModel.EscortName, this.User.Identity.GetUserName()));
        }