Ejemplo n.º 1
0
        public JsonResult PostRant(PostRequest Rant)
        {
            try
            {
                var rant = new Rant
                {
                    UserId    = CurrentUser.UserId(),
                    Timestamp = DateTime.Now,
                    Text      = Rant.Text.ToUpper()
                };

                if (Rant.Tags == null)
                {
                    return(Json(new ApiResponse(false, "At least one tag is required.")));
                }

                if (Rant.Tags.Any(t => string.IsNullOrWhiteSpace(t)))
                {
                    return(Json(new ApiResponse(false, "You cannot submit an empty tag.")));
                }

                if (string.IsNullOrWhiteSpace(Rant.Text))
                {
                    return(Json(new ApiResponse(false, "You cannot submit an empty rant.")));
                }

                using (var context = new EnrampageEntities())
                {
                    context.Tags.AddRange(
                        Rant.Tags.Except(context.Tags.Where(t => !t.User.Banned).Select(t => t.Text))
                        .Select(t => new Tag {
                        UserId = rant.UserId, Text = t
                    }));
                    context.SaveChanges();

                    foreach (var tag in Rant.Tags)
                    {
                        rant.Tags.Add(context.Tags.First(t => !t.User.Banned && t.Text == tag));
                    }

                    context.Rants.Add(rant);
                    context.SaveChanges();
                }

                return(Json(new ApiResponse(true, "Posted rant successfully.", RantResponse.FromRant(rant, ReportState.Removable))));
            }
            catch (Exception Ex)
            {
                LogHelper.Log(Ex);
                return(Json(new ApiResponse(false, "Failed to post rant.")));
            }
        }
Ejemplo n.º 2
0
        public JsonResult GetRants(PageRequest Page)
        {
            try
            {
                var rantResponses = new List <RantResponse>();

                using (var context = new EnrampageEntities())
                {
                    IQueryable <Rant> rants = context.Rants;

                    if (Page.Tags != null)
                    {
                        rants = rants.Where(r => r.Tags.Select(t => t.Text).Intersect(Page.Tags).Any());
                    }

                    foreach (var rant in rants.OrderByDescending(r => r.Timestamp).Skip(Page.Number * 10).Take(10))
                    {
                        var reportState = ReportState.Reportable;

                        if (!Request.IsAuthenticated)
                        {
                            reportState = ReportState.None;
                        }
                        else if (rant.UserId == CurrentUser.UserId() || CurrentUser.Admin())
                        {
                            reportState = ReportState.Removable;
                        }
                        else if (rant.Reports.Any(r => r.UserId == CurrentUser.UserId()))
                        {
                            reportState = ReportState.AlreadyReported;
                        }

                        rantResponses.Add(RantResponse.FromRant(rant, reportState));
                    }
                }

                return(Json(new ApiResponse(true, "Rant listing successful.", rantResponses)));
            }
            catch (Exception Ex)
            {
                LogHelper.Log(Ex);
                return(Json(new ApiResponse(false, "Failed to list rants.")));
            }
        }