public JsonResult SetRating(Rating rating)
{
if (Request.Cookies["rating_" + rating.PostId.ToString()] != null)
{
double storedrating = Double.Parse(Request.Cookies["rating_" + rating.PostId.ToString()].Value);
Rating oldrating = RatingServices.FindAllEntities(r => r.PostId == rating.PostId && r.Value == storedrating,null,null).FirstOrDefault();
if (oldrating != null)
{
RatingServices.DeleteEntity(oldrating);
}
RatingServices.AddEntity(rating);
Response.Cookies["rating_" + rating.PostId.ToString()].Value = rating.Value.ToString();
Response.Cookies["rating_" + rating.PostId.ToString()].Expires = DateTime.Now.AddYears(5);
}
else
{
HttpCookie cookie = new HttpCookie("rating_" + rating.PostId.ToString(), rating.Value.ToString());
cookie.Expires = DateTime.Now.AddYears(5);
Response.Cookies.Add(cookie);
RatingServices.AddEntity(rating);
}
int totalvotes = RatingServices.FindAllEntities(r => r.PostId == rating.PostId,null,null).Count();
double average = RatingServices.FindAllEntities(r => r.PostId == rating.PostId,null,null).Average(s => s.Value);
double roundedaverage = Math.Round(average,1);
return Json(new { roundedaverage, totalvotes });
}