public CustomerReviewModel(Review review) { this.Content = review.Content; this.Date = review.Date; this.Rating = review.Rating; this.EscortName = review.Escort.UserName; }
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())); }