public ActionResult Add(CommentModel model)
        {
            var comment = new Comment
            {
                Body = model.Body,
                Date = DateTime.Now,
                SuggestionId = model.SuggestionId,
                Status = (int)CommentStatus.Active
            };

            using (var container = new SuggestionBoxContainer())
            {
                var suggestion = container.Suggestions.FirstOrDefault(s => s.Id == model.SuggestionId);
                suggestion.Comments.Add(comment);
                container.SaveChanges();
                container.AcceptAllChanges();

                var comments = suggestion.Comments
                    .Where(c => c.Status != (int)CommentStatus.Deleted || UserIsAdmin)
                    .OrderBy(c => c.Date).ToList();

                return PartialView("Partials/_CommentList",
                                   comments.Select(ConvertCommentToModel).ToList());
            }
        }
        public ActionResult Add(SuggestionModel model)
        {
            var suggestion = Mapper.Map<SuggestionModel, Suggestion>(model);
            suggestion.Date = DateTime.Now;
            suggestion.Status = (int)SuggestionStatus.Active;

            using (var container = new SuggestionBoxContainer())
            {
                container.Suggestions.AddObject(suggestion);
                container.SaveChanges();
                container.AcceptAllChanges();

                SuggestionEmailer.SendEmail(suggestion);

                var suggestions = container.Suggestions
                    .Where(s => s.Status != (int)SuggestionStatus.Deleted || UserIsAdmin)
                    .OrderByDescending(s => s.Id).Select(ConvertSuggestionToModel).ToList();

                return PartialView("Partials/_SuggestionList", suggestions);
            }
        }
        public ActionResult Delete(CommentModel model)
        {
            using (var container = new SuggestionBoxContainer())
            {
                var comment = container.Comments.FirstOrDefault(c => c.Id == model.Id);

                if (UserIsAdmin)
                {
                    comment.Status = (int)CommentStatus.Deleted;

                    container.SaveChanges();
                    container.AcceptAllChanges();
                }

                var comments = comment.Suggestion.Comments
                    .Where(c => c.Status != (int)CommentStatus.Deleted || UserIsAdmin)
                    .OrderBy(c => c.Date)
                    .Select(ConvertCommentToModel).ToList();

                return PartialView("Partials/_CommentList", comments);
            }
        }
        public ActionResult Approve(SuggestionModel model, string commentText)
        {
            using (var container = new SuggestionBoxContainer())
            {
                var suggestion = container.Suggestions.FirstOrDefault(s => s.Id == model.Id);

                if (UserIsAdmin)
                {
                    var comment = new Comment
                                    {
                                        Body = commentText,
                                        Date = DateTime.Now,
                                        Status = (int)CommentStatus.Active
                                    };
                    suggestion.Comments.Add(comment);
                    suggestion.Status = (int)SuggestionStatus.Approved;

                    container.SaveChanges();
                    container.AcceptAllChanges();
                }

                return PartialView("Partials/_View", ConvertSuggestionToModel(suggestion));
            }
        }
        public ActionResult View(int id)
        {
            using (var container = new SuggestionBoxContainer())
            {
                var suggestion = container.Suggestions
                    .Where(s => s.Status != (int)SuggestionStatus.Deleted || UserIsAdmin)
                    .FirstOrDefault(s => s.Id == id);

                return View(ConvertSuggestionToModel(suggestion ?? new Suggestion()));
            }
        }
        public ActionResult Index()
        {
            using (var container = new SuggestionBoxContainer())
            {
                var suggestions = container.Suggestions
                    .Where(s => s.Status != (int)SuggestionStatus.Deleted || UserIsAdmin)
                    .OrderByDescending(s => s.Comments.Count == 0 ? s.Date : s.Comments.Max(c => c.Date)).ToList();

                return View(suggestions.Select(ConvertSuggestionToModel).ToList());
            }
        }