public IHttpActionResult RateExistingRestaurant(int id, [FromBody] RateBindingModel model) { if (model == null) { return(this.BadRequest("Model cannot be null (no data in request)")); } if (!this.ModelState.IsValid) { return(this.BadRequest("Invalid rating. The rating value must be between 1 and 10.")); } var restaurant = this.Data.Restaurants.Find(id); if (restaurant == null) { return(this.NotFound()); } var loggedUserId = this.User.Identity.GetUserId(); var user = this.Data.Users.Find(loggedUserId); if (restaurant.OwnerId == loggedUserId) { return(this.BadRequest("The owner cannot rate his own restaurant.")); } if (user.GivenRatings .Any(r => r.RestaurantId == id)) { var ratingFromDb = this.Data.Ratings.All() .FirstOrDefault(r => r.RestaurantId == id && r.UserId == loggedUserId); if (ratingFromDb != null) { ratingFromDb.Stars = model.Stars; } this.Data.SaveChanges(); return(this.Ok()); } ; var rating = new Rating() { RestaurantId = id, Restaurant = restaurant, Stars = model.Stars, User = user, UserId = loggedUserId }; this.Data.Ratings.Add(rating); this.Data.SaveChanges(); return(this.Ok()); }
//[Authorize(Roles="Admin,Manager,AppUser,Client,NotAuthenticated")] //[AllowAnonymous] public IHttpActionResult ApproveAppUser(int id, RateBindingModel appUser) { lock (unitOfWork.AppUsers) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var appusers = unitOfWork.AppUsers.GetAll(); var appuEdit = new AppUser(); foreach (var appu in appusers) { if (appu.Id == id) { appuEdit = appu; } } appuEdit.Activated = true; try { unitOfWork.AppUsers.Update(appuEdit); unitOfWork.Complete(); //string your_id = "*****@*****.**"; //string your_password = PASSWORD; //SmtpClient client = new SmtpClient(); //client.Port = 587; //client.Host = "smtp.gmail.com"; //client.EnableSsl = true; //client.Timeout = 10000; //client.DeliveryMethod = SmtpDeliveryMethod.Network; //client.UseDefaultCredentials = false; //client.Credentials = new System.Net.NetworkCredential(your_id, your_password); //MailMessage mm = new MailMessage(your_id, "*****@*****.**"); //mm.BodyEncoding = UTF8Encoding.UTF8; //mm.Subject = "CODE FOR FORUM"; //mm.Body = "NALOG JE ODOBREN!"; //mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure; //client.Send(mm); } catch (DbUpdateConcurrencyException) { if (!AppUserExists(id)) { return(NotFound()); } else { throw; } } return(StatusCode(HttpStatusCode.NoContent)); } }
//[Authorize(Roles="Admin,Manager,AppUser,Client,NotAuthenticated")] //[AllowAnonymous] public IHttpActionResult RateService(int id, RateBindingModel rate) { lock (unitOfWork.Services) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var services = unitOfWork.Services.GetAll(); var serviceEdit = new Service(); foreach (var s in services) { if (s.Id == id) { serviceEdit = s; } } string name = User.Identity.Name; var appu = new AppUser(); var appusers = unitOfWork.AppUsers.GetAll(); foreach (var au in appusers) { if (au.Username == name) { appu = au; } } bool canComment = false; foreach (var r in appu.Renting) { int result = DateTime.Compare((DateTime)r.Start, (DateTime)r.End); if (result <= 0) { canComment = true; } } if (!canComment) { return(null); } float gradeValue = ((serviceEdit.AverageGrade + (float)rate.Rating)) / (serviceEdit.NumberOfGrades + 1); serviceEdit.AverageGrade = gradeValue; serviceEdit.NumberOfGrades++; try { unitOfWork.Services.Update(serviceEdit); unitOfWork.Complete(); } catch (DbUpdateConcurrencyException) { if (!ServiceExists(id)) { return(NotFound()); } else { throw; } } return(StatusCode(HttpStatusCode.NoContent)); } }